@memberjunction/ng-dashboards 5.34.0 → 5.35.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (348) hide show
  1. package/dist/AI/components/agents/agent-configuration.component.d.ts +51 -0
  2. package/dist/AI/components/agents/agent-configuration.component.d.ts.map +1 -1
  3. package/dist/AI/components/agents/agent-configuration.component.js +399 -292
  4. package/dist/AI/components/agents/agent-configuration.component.js.map +1 -1
  5. package/dist/AI/components/analytics/agent-runs/agent-run-analysis.component.d.ts +8 -2
  6. package/dist/AI/components/analytics/agent-runs/agent-run-analysis.component.d.ts.map +1 -1
  7. package/dist/AI/components/analytics/agent-runs/agent-run-analysis.component.js +87 -85
  8. package/dist/AI/components/analytics/agent-runs/agent-run-analysis.component.js.map +1 -1
  9. package/dist/AI/components/analytics/ai-analytics-resource.component.d.ts +75 -0
  10. package/dist/AI/components/analytics/ai-analytics-resource.component.d.ts.map +1 -1
  11. package/dist/AI/components/analytics/ai-analytics-resource.component.js +400 -89
  12. package/dist/AI/components/analytics/ai-analytics-resource.component.js.map +1 -1
  13. package/dist/AI/components/analytics/analytics-filter-bar.component.d.ts +5 -0
  14. package/dist/AI/components/analytics/analytics-filter-bar.component.d.ts.map +1 -1
  15. package/dist/AI/components/analytics/analytics-filter-bar.component.js +184 -135
  16. package/dist/AI/components/analytics/analytics-filter-bar.component.js.map +1 -1
  17. package/dist/AI/components/analytics/cost-budget/cost-budget.component.d.ts +8 -2
  18. package/dist/AI/components/analytics/cost-budget/cost-budget.component.d.ts.map +1 -1
  19. package/dist/AI/components/analytics/cost-budget/cost-budget.component.js +104 -103
  20. package/dist/AI/components/analytics/cost-budget/cost-budget.component.js.map +1 -1
  21. package/dist/AI/components/analytics/error-analysis/error-analysis.component.d.ts +8 -2
  22. package/dist/AI/components/analytics/error-analysis/error-analysis.component.d.ts.map +1 -1
  23. package/dist/AI/components/analytics/error-analysis/error-analysis.component.js +76 -74
  24. package/dist/AI/components/analytics/error-analysis/error-analysis.component.js.map +1 -1
  25. package/dist/AI/components/analytics/executive-summary/executive-summary.component.d.ts.map +1 -1
  26. package/dist/AI/components/analytics/executive-summary/executive-summary.component.js +67 -87
  27. package/dist/AI/components/analytics/executive-summary/executive-summary.component.js.map +1 -1
  28. package/dist/AI/components/analytics/model-performance/model-performance.component.d.ts +12 -19
  29. package/dist/AI/components/analytics/model-performance/model-performance.component.d.ts.map +1 -1
  30. package/dist/AI/components/analytics/model-performance/model-performance.component.js +96 -203
  31. package/dist/AI/components/analytics/model-performance/model-performance.component.js.map +1 -1
  32. package/dist/AI/components/analytics/prompt-runs/prompt-run-analysis.component.d.ts.map +1 -1
  33. package/dist/AI/components/analytics/prompt-runs/prompt-run-analysis.component.js +110 -126
  34. package/dist/AI/components/analytics/prompt-runs/prompt-run-analysis.component.js.map +1 -1
  35. package/dist/AI/components/analytics/usage-patterns/usage-patterns.component.d.ts.map +1 -1
  36. package/dist/AI/components/analytics/usage-patterns/usage-patterns.component.js +61 -77
  37. package/dist/AI/components/analytics/usage-patterns/usage-patterns.component.js.map +1 -1
  38. package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.js +990 -992
  39. package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.js.map +1 -1
  40. package/dist/AI/components/duplicates/duplicate-detection-resource.component.d.ts +6 -3
  41. package/dist/AI/components/duplicates/duplicate-detection-resource.component.d.ts.map +1 -1
  42. package/dist/AI/components/duplicates/duplicate-detection-resource.component.js +493 -490
  43. package/dist/AI/components/duplicates/duplicate-detection-resource.component.js.map +1 -1
  44. package/dist/AI/components/models/model-management.component.d.ts +17 -0
  45. package/dist/AI/components/models/model-management.component.d.ts.map +1 -1
  46. package/dist/AI/components/models/model-management.component.js +370 -425
  47. package/dist/AI/components/models/model-management.component.js.map +1 -1
  48. package/dist/AI/components/prompts/prompt-management.component.d.ts +17 -0
  49. package/dist/AI/components/prompts/prompt-management.component.d.ts.map +1 -1
  50. package/dist/AI/components/prompts/prompt-management.component.js +317 -357
  51. package/dist/AI/components/prompts/prompt-management.component.js.map +1 -1
  52. package/dist/AI/components/requests/agent-requests-resource.component.d.ts +11 -0
  53. package/dist/AI/components/requests/agent-requests-resource.component.d.ts.map +1 -1
  54. package/dist/AI/components/requests/agent-requests-resource.component.js +170 -175
  55. package/dist/AI/components/requests/agent-requests-resource.component.js.map +1 -1
  56. package/dist/AI/components/system/system-configuration.component.d.ts +19 -0
  57. package/dist/AI/components/system/system-configuration.component.d.ts.map +1 -1
  58. package/dist/AI/components/system/system-configuration.component.js +403 -362
  59. package/dist/AI/components/system/system-configuration.component.js.map +1 -1
  60. package/dist/AI/components/tags/tags-resource.component.js +781 -783
  61. package/dist/AI/components/tags/tags-resource.component.js.map +1 -1
  62. package/dist/AI/components/vectors/vector-management-resource.component.d.ts +8 -3
  63. package/dist/AI/components/vectors/vector-management-resource.component.d.ts.map +1 -1
  64. package/dist/AI/components/vectors/vector-management-resource.component.js +547 -521
  65. package/dist/AI/components/vectors/vector-management-resource.component.js.map +1 -1
  66. package/dist/Actions/components/actions-overview.component.d.ts +6 -0
  67. package/dist/Actions/components/actions-overview.component.d.ts.map +1 -1
  68. package/dist/Actions/components/actions-overview.component.js +79 -30
  69. package/dist/Actions/components/actions-overview.component.js.map +1 -1
  70. package/dist/Actions/components/execution-monitoring.component.d.ts +9 -3
  71. package/dist/Actions/components/execution-monitoring.component.d.ts.map +1 -1
  72. package/dist/Actions/components/execution-monitoring.component.js +196 -142
  73. package/dist/Actions/components/execution-monitoring.component.js.map +1 -1
  74. package/dist/Actions/components/explorer/action-explorer.component.d.ts +41 -1
  75. package/dist/Actions/components/explorer/action-explorer.component.d.ts.map +1 -1
  76. package/dist/Actions/components/explorer/action-explorer.component.js +388 -94
  77. package/dist/Actions/components/explorer/action-explorer.component.js.map +1 -1
  78. package/dist/Actions/components/explorer/index.d.ts +0 -1
  79. package/dist/Actions/components/explorer/index.d.ts.map +1 -1
  80. package/dist/Actions/components/explorer/index.js +0 -1
  81. package/dist/Actions/components/explorer/index.js.map +1 -1
  82. package/dist/Admin/admin-data-schema.component.js +32 -40
  83. package/dist/Admin/admin-data-schema.component.js.map +1 -1
  84. package/dist/Admin/admin-dev-tools-resource.component.js +32 -40
  85. package/dist/Admin/admin-dev-tools-resource.component.js.map +1 -1
  86. package/dist/Admin/admin-identity-access.component.js +32 -40
  87. package/dist/Admin/admin-identity-access.component.js.map +1 -1
  88. package/dist/Admin/admin-monitoring.component.js +32 -40
  89. package/dist/Admin/admin-monitoring.component.js.map +1 -1
  90. package/dist/ApplicationRoles/application-roles-resource.component.js +76 -82
  91. package/dist/ApplicationRoles/application-roles-resource.component.js.map +1 -1
  92. package/dist/Archiving/components/archive-config-resource.component.d.ts.map +1 -1
  93. package/dist/Archiving/components/archive-config-resource.component.js +24 -5
  94. package/dist/Archiving/components/archive-config-resource.component.js.map +1 -1
  95. package/dist/Archiving/components/archive-runs-resource.component.d.ts.map +1 -1
  96. package/dist/Archiving/components/archive-runs-resource.component.js +24 -5
  97. package/dist/Archiving/components/archive-runs-resource.component.js.map +1 -1
  98. package/dist/Communication/communication-logs-resource.component.d.ts +1 -1
  99. package/dist/Communication/communication-logs-resource.component.d.ts.map +1 -1
  100. package/dist/Communication/communication-logs-resource.component.js +80 -99
  101. package/dist/Communication/communication-logs-resource.component.js.map +1 -1
  102. package/dist/Communication/communication-monitor-resource.component.d.ts.map +1 -1
  103. package/dist/Communication/communication-monitor-resource.component.js +127 -106
  104. package/dist/Communication/communication-monitor-resource.component.js.map +1 -1
  105. package/dist/Communication/communication-providers-resource.component.d.ts.map +1 -1
  106. package/dist/Communication/communication-providers-resource.component.js +44 -45
  107. package/dist/Communication/communication-providers-resource.component.js.map +1 -1
  108. package/dist/Communication/communication-runs-resource.component.d.ts.map +1 -1
  109. package/dist/Communication/communication-runs-resource.component.js +60 -58
  110. package/dist/Communication/communication-runs-resource.component.js.map +1 -1
  111. package/dist/Communication/communication-templates-resource.component.d.ts +1 -1
  112. package/dist/Communication/communication-templates-resource.component.d.ts.map +1 -1
  113. package/dist/Communication/communication-templates-resource.component.js +139 -162
  114. package/dist/Communication/communication-templates-resource.component.js.map +1 -1
  115. package/dist/Credentials/components/credentials-audit-resource.component.d.ts +7 -0
  116. package/dist/Credentials/components/credentials-audit-resource.component.d.ts.map +1 -1
  117. package/dist/Credentials/components/credentials-audit-resource.component.js +310 -297
  118. package/dist/Credentials/components/credentials-audit-resource.component.js.map +1 -1
  119. package/dist/Credentials/components/credentials-categories-resource.component.js +245 -266
  120. package/dist/Credentials/components/credentials-categories-resource.component.js.map +1 -1
  121. package/dist/Credentials/components/credentials-list-resource.component.d.ts +7 -0
  122. package/dist/Credentials/components/credentials-list-resource.component.d.ts.map +1 -1
  123. package/dist/Credentials/components/credentials-list-resource.component.js +381 -399
  124. package/dist/Credentials/components/credentials-list-resource.component.js.map +1 -1
  125. package/dist/Credentials/components/credentials-overview-resource.component.js +222 -228
  126. package/dist/Credentials/components/credentials-overview-resource.component.js.map +1 -1
  127. package/dist/Credentials/components/credentials-types-resource.component.d.ts +6 -0
  128. package/dist/Credentials/components/credentials-types-resource.component.d.ts.map +1 -1
  129. package/dist/Credentials/components/credentials-types-resource.component.js +294 -305
  130. package/dist/Credentials/components/credentials-types-resource.component.js.map +1 -1
  131. package/dist/DatabaseDesigner/components/database-designer-dashboard.component.d.ts +8 -0
  132. package/dist/DatabaseDesigner/components/database-designer-dashboard.component.d.ts.map +1 -1
  133. package/dist/DatabaseDesigner/components/database-designer-dashboard.component.js +21 -0
  134. package/dist/DatabaseDesigner/components/database-designer-dashboard.component.js.map +1 -1
  135. package/dist/DatabaseDesigner/components/entity-list.component.js +147 -160
  136. package/dist/DatabaseDesigner/components/entity-list.component.js.map +1 -1
  137. package/dist/DatabaseDesigner/database-designer-dashboards.module.d.ts +1 -1
  138. package/dist/DatabaseDesigner/database-designer-dashboards.module.d.ts.map +1 -1
  139. package/dist/DatabaseDesigner/database-designer-dashboards.module.js +19 -1
  140. package/dist/DatabaseDesigner/database-designer-dashboards.module.js.map +1 -1
  141. package/dist/EntityAdmin/entity-admin-dashboard.component.js +20 -16
  142. package/dist/EntityAdmin/entity-admin-dashboard.component.js.map +1 -1
  143. package/dist/Home/home-dashboard.component.d.ts +6 -0
  144. package/dist/Home/home-dashboard.component.d.ts.map +1 -1
  145. package/dist/Home/home-dashboard.component.js +521 -485
  146. package/dist/Home/home-dashboard.component.js.map +1 -1
  147. package/dist/Integration/components/activity/activity.component.d.ts +8 -0
  148. package/dist/Integration/components/activity/activity.component.d.ts.map +1 -1
  149. package/dist/Integration/components/activity/activity.component.js +309 -318
  150. package/dist/Integration/components/activity/activity.component.js.map +1 -1
  151. package/dist/Integration/components/connections/connections.component.js +866 -847
  152. package/dist/Integration/components/connections/connections.component.js.map +1 -1
  153. package/dist/Integration/components/mapping-workspace/mapping-workspace.component.js +234 -233
  154. package/dist/Integration/components/mapping-workspace/mapping-workspace.component.js.map +1 -1
  155. package/dist/Integration/components/overview/overview.component.js +182 -163
  156. package/dist/Integration/components/overview/overview.component.js.map +1 -1
  157. package/dist/Integration/components/pipelines/pipelines.component.d.ts +2 -0
  158. package/dist/Integration/components/pipelines/pipelines.component.d.ts.map +1 -1
  159. package/dist/Integration/components/pipelines/pipelines.component.js +610 -606
  160. package/dist/Integration/components/pipelines/pipelines.component.js.map +1 -1
  161. package/dist/Integration/components/schedules/schedules.component.js +241 -241
  162. package/dist/Integration/components/schedules/schedules.component.js.map +1 -1
  163. package/dist/Integration/integration.module.d.ts +1 -1
  164. package/dist/Integration/integration.module.d.ts.map +1 -1
  165. package/dist/Integration/integration.module.js +28 -1
  166. package/dist/Integration/integration.module.js.map +1 -1
  167. package/dist/KnowledgeHub/components/analytics/analytics-resource.component.js +673 -674
  168. package/dist/KnowledgeHub/components/analytics/analytics-resource.component.js.map +1 -1
  169. package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.js +54 -51
  170. package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.js.map +1 -1
  171. package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.js +745 -703
  172. package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.js.map +1 -1
  173. package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.d.ts +12 -1
  174. package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.d.ts.map +1 -1
  175. package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.js +191 -120
  176. package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.js.map +1 -1
  177. package/dist/Lists/components/lists-browse-resource.component.d.ts +18 -1
  178. package/dist/Lists/components/lists-browse-resource.component.d.ts.map +1 -1
  179. package/dist/Lists/components/lists-browse-resource.component.js +486 -532
  180. package/dist/Lists/components/lists-browse-resource.component.js.map +1 -1
  181. package/dist/Lists/components/lists-categories-resource.component.d.ts.map +1 -1
  182. package/dist/Lists/components/lists-categories-resource.component.js +152 -160
  183. package/dist/Lists/components/lists-categories-resource.component.js.map +1 -1
  184. package/dist/Lists/components/lists-my-lists-resource.component.d.ts.map +1 -1
  185. package/dist/Lists/components/lists-my-lists-resource.component.js +302 -319
  186. package/dist/Lists/components/lists-my-lists-resource.component.js.map +1 -1
  187. package/dist/Lists/components/lists-operations-resource.component.d.ts.map +1 -1
  188. package/dist/Lists/components/lists-operations-resource.component.js +234 -246
  189. package/dist/Lists/components/lists-operations-resource.component.js.map +1 -1
  190. package/dist/MCP/mcp-dashboard.component.d.ts +20 -0
  191. package/dist/MCP/mcp-dashboard.component.d.ts.map +1 -1
  192. package/dist/MCP/mcp-dashboard.component.js +1248 -1338
  193. package/dist/MCP/mcp-dashboard.component.js.map +1 -1
  194. package/dist/MCP/mcp.module.d.ts +1 -1
  195. package/dist/MCP/mcp.module.d.ts.map +1 -1
  196. package/dist/MCP/mcp.module.js +34 -1
  197. package/dist/MCP/mcp.module.js.map +1 -1
  198. package/dist/Permissions/audit-log-resource.component.js +76 -85
  199. package/dist/Permissions/audit-log-resource.component.js.map +1 -1
  200. package/dist/Permissions/resource-access-resource.component.js +64 -69
  201. package/dist/Permissions/resource-access-resource.component.js.map +1 -1
  202. package/dist/Permissions/user-access-resource.component.js +63 -74
  203. package/dist/Permissions/user-access-resource.component.js.map +1 -1
  204. package/dist/QueryBrowser/query-browser-resource.component.js +2 -2
  205. package/dist/QueryBrowser/query-browser-resource.component.js.map +1 -1
  206. package/dist/Scheduling/components/scheduling-activity-resource.component.d.ts +2 -1
  207. package/dist/Scheduling/components/scheduling-activity-resource.component.d.ts.map +1 -1
  208. package/dist/Scheduling/components/scheduling-activity-resource.component.js +11 -12
  209. package/dist/Scheduling/components/scheduling-activity-resource.component.js.map +1 -1
  210. package/dist/Scheduling/components/scheduling-activity.component.d.ts +9 -1
  211. package/dist/Scheduling/components/scheduling-activity.component.d.ts.map +1 -1
  212. package/dist/Scheduling/components/scheduling-activity.component.js +250 -197
  213. package/dist/Scheduling/components/scheduling-activity.component.js.map +1 -1
  214. package/dist/Scheduling/components/scheduling-jobs-resource.component.d.ts +2 -1
  215. package/dist/Scheduling/components/scheduling-jobs-resource.component.d.ts.map +1 -1
  216. package/dist/Scheduling/components/scheduling-jobs-resource.component.js +11 -12
  217. package/dist/Scheduling/components/scheduling-jobs-resource.component.js.map +1 -1
  218. package/dist/Scheduling/components/scheduling-jobs.component.d.ts +9 -1
  219. package/dist/Scheduling/components/scheduling-jobs.component.d.ts.map +1 -1
  220. package/dist/Scheduling/components/scheduling-jobs.component.js +203 -147
  221. package/dist/Scheduling/components/scheduling-jobs.component.js.map +1 -1
  222. package/dist/Scheduling/components/scheduling-overview-resource.component.d.ts +2 -1
  223. package/dist/Scheduling/components/scheduling-overview-resource.component.d.ts.map +1 -1
  224. package/dist/Scheduling/components/scheduling-overview-resource.component.js +11 -12
  225. package/dist/Scheduling/components/scheduling-overview-resource.component.js.map +1 -1
  226. package/dist/Scheduling/components/scheduling-overview.component.d.ts +3 -1
  227. package/dist/Scheduling/components/scheduling-overview.component.d.ts.map +1 -1
  228. package/dist/Scheduling/components/scheduling-overview.component.js +224 -190
  229. package/dist/Scheduling/components/scheduling-overview.component.js.map +1 -1
  230. package/dist/Scheduling/scheduling-dashboard.component.d.ts +19 -6
  231. package/dist/Scheduling/scheduling-dashboard.component.d.ts.map +1 -1
  232. package/dist/Scheduling/scheduling-dashboard.component.js +262 -104
  233. package/dist/Scheduling/scheduling-dashboard.component.js.map +1 -1
  234. package/dist/SystemDiagnostics/system-diagnostics.component.d.ts +4 -0
  235. package/dist/SystemDiagnostics/system-diagnostics.component.d.ts.map +1 -1
  236. package/dist/SystemDiagnostics/system-diagnostics.component.js +812 -784
  237. package/dist/SystemDiagnostics/system-diagnostics.component.js.map +1 -1
  238. package/dist/Testing/components/testing-analytics-resource.component.d.ts +2 -1
  239. package/dist/Testing/components/testing-analytics-resource.component.d.ts.map +1 -1
  240. package/dist/Testing/components/testing-analytics-resource.component.js +7 -14
  241. package/dist/Testing/components/testing-analytics-resource.component.js.map +1 -1
  242. package/dist/Testing/components/testing-analytics.component.d.ts +3 -1
  243. package/dist/Testing/components/testing-analytics.component.d.ts.map +1 -1
  244. package/dist/Testing/components/testing-analytics.component.js +420 -393
  245. package/dist/Testing/components/testing-analytics.component.js.map +1 -1
  246. package/dist/Testing/components/testing-dashboard-tab-resource.component.d.ts +2 -1
  247. package/dist/Testing/components/testing-dashboard-tab-resource.component.d.ts.map +1 -1
  248. package/dist/Testing/components/testing-dashboard-tab-resource.component.js +16 -19
  249. package/dist/Testing/components/testing-dashboard-tab-resource.component.js.map +1 -1
  250. package/dist/Testing/components/testing-dashboard-tab.component.d.ts +3 -1
  251. package/dist/Testing/components/testing-dashboard-tab.component.d.ts.map +1 -1
  252. package/dist/Testing/components/testing-dashboard-tab.component.js +157 -122
  253. package/dist/Testing/components/testing-dashboard-tab.component.js.map +1 -1
  254. package/dist/Testing/components/testing-explorer-resource.component.d.ts +2 -1
  255. package/dist/Testing/components/testing-explorer-resource.component.d.ts.map +1 -1
  256. package/dist/Testing/components/testing-explorer-resource.component.js +7 -12
  257. package/dist/Testing/components/testing-explorer-resource.component.js.map +1 -1
  258. package/dist/Testing/components/testing-explorer.component.d.ts +8 -1
  259. package/dist/Testing/components/testing-explorer.component.d.ts.map +1 -1
  260. package/dist/Testing/components/testing-explorer.component.js +587 -608
  261. package/dist/Testing/components/testing-explorer.component.js.map +1 -1
  262. package/dist/Testing/components/testing-review-resource.component.d.ts +4 -1
  263. package/dist/Testing/components/testing-review-resource.component.d.ts.map +1 -1
  264. package/dist/Testing/components/testing-review-resource.component.js +9 -12
  265. package/dist/Testing/components/testing-review-resource.component.js.map +1 -1
  266. package/dist/Testing/components/testing-review.component.d.ts +3 -1
  267. package/dist/Testing/components/testing-review.component.d.ts.map +1 -1
  268. package/dist/Testing/components/testing-review.component.js +310 -274
  269. package/dist/Testing/components/testing-review.component.js.map +1 -1
  270. package/dist/Testing/components/testing-runs-resource.component.d.ts +2 -1
  271. package/dist/Testing/components/testing-runs-resource.component.d.ts.map +1 -1
  272. package/dist/Testing/components/testing-runs-resource.component.js +16 -19
  273. package/dist/Testing/components/testing-runs-resource.component.js.map +1 -1
  274. package/dist/Testing/components/testing-runs.component.d.ts +3 -1
  275. package/dist/Testing/components/testing-runs.component.d.ts.map +1 -1
  276. package/dist/Testing/components/testing-runs.component.js +307 -273
  277. package/dist/Testing/components/testing-runs.component.js.map +1 -1
  278. package/dist/Testing/testing-dashboard.component.d.ts +2 -0
  279. package/dist/Testing/testing-dashboard.component.d.ts.map +1 -1
  280. package/dist/Testing/testing-dashboard.component.js +107 -93
  281. package/dist/Testing/testing-dashboard.component.js.map +1 -1
  282. package/dist/VersionHistory/components/diff-resource.component.js +185 -188
  283. package/dist/VersionHistory/components/diff-resource.component.js.map +1 -1
  284. package/dist/VersionHistory/components/graph-resource.component.js +154 -184
  285. package/dist/VersionHistory/components/graph-resource.component.js.map +1 -1
  286. package/dist/VersionHistory/components/labels-resource.component.d.ts +7 -0
  287. package/dist/VersionHistory/components/labels-resource.component.d.ts.map +1 -1
  288. package/dist/VersionHistory/components/labels-resource.component.js +350 -354
  289. package/dist/VersionHistory/components/labels-resource.component.js.map +1 -1
  290. package/dist/VersionHistory/components/restore-resource.component.js +163 -169
  291. package/dist/VersionHistory/components/restore-resource.component.js.map +1 -1
  292. package/dist/actions-dashboards.module.d.ts +15 -16
  293. package/dist/actions-dashboards.module.d.ts.map +1 -1
  294. package/dist/actions-dashboards.module.js +34 -11
  295. package/dist/actions-dashboards.module.js.map +1 -1
  296. package/dist/ai-dashboards.module.d.ts +45 -48
  297. package/dist/ai-dashboards.module.d.ts.map +1 -1
  298. package/dist/ai-dashboards.module.js +36 -10
  299. package/dist/ai-dashboards.module.js.map +1 -1
  300. package/dist/archiving-dashboards.module.d.ts +2 -1
  301. package/dist/archiving-dashboards.module.d.ts.map +1 -1
  302. package/dist/archiving-dashboards.module.js +12 -2
  303. package/dist/archiving-dashboards.module.js.map +1 -1
  304. package/dist/communication-dashboards.module.d.ts +2 -1
  305. package/dist/communication-dashboards.module.d.ts.map +1 -1
  306. package/dist/communication-dashboards.module.js +24 -3
  307. package/dist/communication-dashboards.module.js.map +1 -1
  308. package/dist/core-dashboards.module.d.ts +1 -1
  309. package/dist/core-dashboards.module.d.ts.map +1 -1
  310. package/dist/core-dashboards.module.js +31 -1
  311. package/dist/core-dashboards.module.js.map +1 -1
  312. package/dist/credentials-dashboards.module.d.ts +1 -1
  313. package/dist/credentials-dashboards.module.d.ts.map +1 -1
  314. package/dist/credentials-dashboards.module.js +28 -1
  315. package/dist/credentials-dashboards.module.js.map +1 -1
  316. package/dist/lists-dashboards.module.d.ts +1 -1
  317. package/dist/lists-dashboards.module.d.ts.map +1 -1
  318. package/dist/lists-dashboards.module.js +28 -1
  319. package/dist/lists-dashboards.module.js.map +1 -1
  320. package/dist/public-api.d.ts +2 -2
  321. package/dist/public-api.d.ts.map +1 -1
  322. package/dist/public-api.js +3 -3
  323. package/dist/public-api.js.map +1 -1
  324. package/dist/scheduling-dashboards.module.d.ts +1 -1
  325. package/dist/scheduling-dashboards.module.d.ts.map +1 -1
  326. package/dist/scheduling-dashboards.module.js +31 -1
  327. package/dist/scheduling-dashboards.module.js.map +1 -1
  328. package/dist/testing-dashboards.module.d.ts +8 -7
  329. package/dist/testing-dashboards.module.d.ts.map +1 -1
  330. package/dist/testing-dashboards.module.js +30 -0
  331. package/dist/testing-dashboards.module.js.map +1 -1
  332. package/package.json +52 -52
  333. package/dist/AI/components/agents/agent-filter-panel.component.d.ts +0 -56
  334. package/dist/AI/components/agents/agent-filter-panel.component.d.ts.map +0 -1
  335. package/dist/AI/components/agents/agent-filter-panel.component.js +0 -285
  336. package/dist/AI/components/agents/agent-filter-panel.component.js.map +0 -1
  337. package/dist/AI/components/prompts/prompt-filter-panel.component.d.ts +0 -49
  338. package/dist/AI/components/prompts/prompt-filter-panel.component.d.ts.map +0 -1
  339. package/dist/AI/components/prompts/prompt-filter-panel.component.js +0 -184
  340. package/dist/AI/components/prompts/prompt-filter-panel.component.js.map +0 -1
  341. package/dist/AI/components/system/system-config-filter-panel.component.d.ts +0 -33
  342. package/dist/AI/components/system/system-config-filter-panel.component.d.ts.map +0 -1
  343. package/dist/AI/components/system/system-config-filter-panel.component.js +0 -144
  344. package/dist/AI/components/system/system-config-filter-panel.component.js.map +0 -1
  345. package/dist/Actions/components/explorer/action-toolbar.component.d.ts +0 -63
  346. package/dist/Actions/components/explorer/action-toolbar.component.d.ts.map +0 -1
  347. package/dist/Actions/components/explorer/action-toolbar.component.js +0 -463
  348. package/dist/Actions/components/explorer/action-toolbar.component.js.map +0 -1
@@ -24,36 +24,53 @@ const _forTrack0 = ($index, $item) => $item.Integration.ID;
24
24
  const _forTrack1 = ($index, $item) => $item.Name;
25
25
  const _forTrack2 = ($index, $item) => $item.ID;
26
26
  const _forTrack3 = ($index, $item) => $item.Number;
27
- function ConnectionsComponent_Conditional_1_Conditional_9_Template(rf, ctx) { if (rf & 1) {
28
- i0.ɵɵelementStart(0, "div", 13);
29
- i0.ɵɵelement(1, "mj-loading", 16);
27
+ function ConnectionsComponent_Conditional_2_Template(rf, ctx) { if (rf & 1) {
28
+ i0.ɵɵelementStart(0, "div", 2);
29
+ i0.ɵɵelement(1, "mj-stat-badge", 13);
30
+ i0.ɵɵelementEnd();
31
+ } if (rf & 2) {
32
+ const ctx_r0 = i0.ɵɵnextContext();
33
+ i0.ɵɵadvance();
34
+ i0.ɵɵproperty("Count", ctx_r0.Connections.length)("Label", ctx_r0.Connections.length === 1 ? "integration" : "integrations");
35
+ } }
36
+ function ConnectionsComponent_Conditional_5_Template(rf, ctx) { if (rf & 1) {
37
+ const _r2 = i0.ɵɵgetCurrentView();
38
+ i0.ɵɵelementStart(0, "button", 14);
39
+ i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_5_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r2); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.OpenWizard()); });
40
+ i0.ɵɵelement(1, "i", 15);
41
+ i0.ɵɵtext(2, " Add Integration ");
42
+ i0.ɵɵelementEnd();
43
+ } }
44
+ function ConnectionsComponent_Conditional_8_Conditional_0_Template(rf, ctx) { if (rf & 1) {
45
+ i0.ɵɵelementStart(0, "div", 16);
46
+ i0.ɵɵelement(1, "mj-loading", 19);
30
47
  i0.ɵɵelementEnd();
31
48
  } }
32
- function ConnectionsComponent_Conditional_1_Conditional_10_Template(rf, ctx) { if (rf & 1) {
49
+ function ConnectionsComponent_Conditional_8_Conditional_1_Template(rf, ctx) { if (rf & 1) {
33
50
  const _r3 = i0.ɵɵgetCurrentView();
34
- i0.ɵɵelementStart(0, "div", 14);
35
- i0.ɵɵelement(1, "i", 17);
51
+ i0.ɵɵelementStart(0, "div", 17);
52
+ i0.ɵɵelement(1, "i", 20);
36
53
  i0.ɵɵelementStart(2, "h3");
37
54
  i0.ɵɵtext(3, "No integrations yet");
38
55
  i0.ɵɵelementEnd();
39
56
  i0.ɵɵelementStart(4, "p");
40
57
  i0.ɵɵtext(5, "Connect your first external system to start syncing data.");
41
58
  i0.ɵɵelementEnd();
42
- i0.ɵɵelementStart(6, "button", 18);
43
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_1_Conditional_10_Template_button_click_6_listener() { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.OpenWizard()); });
44
- i0.ɵɵelement(7, "i", 12);
59
+ i0.ɵɵelementStart(6, "button", 21);
60
+ i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_8_Conditional_1_Template_button_click_6_listener() { i0.ɵɵrestoreView(_r3); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.OpenWizard()); });
61
+ i0.ɵɵelement(7, "i", 15);
45
62
  i0.ɵɵtext(8, " Add Your First Integration ");
46
63
  i0.ɵɵelementEnd()();
47
64
  } }
48
- function ConnectionsComponent_Conditional_1_Conditional_11_For_2_Conditional_22_Conditional_1_Template(rf, ctx) { if (rf & 1) {
49
- i0.ɵɵelement(0, "i", 47);
65
+ function ConnectionsComponent_Conditional_8_Conditional_2_For_2_Conditional_22_Conditional_1_Template(rf, ctx) { if (rf & 1) {
66
+ i0.ɵɵelement(0, "i", 50);
50
67
  } }
51
- function ConnectionsComponent_Conditional_1_Conditional_11_For_2_Conditional_22_Conditional_2_Template(rf, ctx) { if (rf & 1) {
52
- i0.ɵɵelement(0, "i", 48);
68
+ function ConnectionsComponent_Conditional_8_Conditional_2_For_2_Conditional_22_Conditional_2_Template(rf, ctx) { if (rf & 1) {
69
+ i0.ɵɵelement(0, "i", 51);
53
70
  } }
54
- function ConnectionsComponent_Conditional_1_Conditional_11_For_2_Conditional_22_Template(rf, ctx) { if (rf & 1) {
55
- i0.ɵɵelementStart(0, "div", 46);
56
- i0.ɵɵconditionalCreate(1, ConnectionsComponent_Conditional_1_Conditional_11_For_2_Conditional_22_Conditional_1_Template, 1, 0, "i", 47)(2, ConnectionsComponent_Conditional_1_Conditional_11_For_2_Conditional_22_Conditional_2_Template, 1, 0, "i", 48);
71
+ function ConnectionsComponent_Conditional_8_Conditional_2_For_2_Conditional_22_Template(rf, ctx) { if (rf & 1) {
72
+ i0.ɵɵelementStart(0, "div", 49);
73
+ i0.ɵɵconditionalCreate(1, ConnectionsComponent_Conditional_8_Conditional_2_For_2_Conditional_22_Conditional_1_Template, 1, 0, "i", 50)(2, ConnectionsComponent_Conditional_8_Conditional_2_For_2_Conditional_22_Conditional_2_Template, 1, 0, "i", 51);
57
74
  i0.ɵɵelementStart(3, "span");
58
75
  i0.ɵɵtext(4);
59
76
  i0.ɵɵelementEnd()();
@@ -65,351 +82,336 @@ function ConnectionsComponent_Conditional_1_Conditional_11_For_2_Conditional_22_
65
82
  i0.ɵɵadvance(3);
66
83
  i0.ɵɵtextInterpolate(testResult_r7.Message);
67
84
  } }
68
- function ConnectionsComponent_Conditional_1_Conditional_11_For_2_Conditional_23_Conditional_7_Template(rf, ctx) { if (rf & 1) {
69
- i0.ɵɵelement(0, "i", 41);
85
+ function ConnectionsComponent_Conditional_8_Conditional_2_For_2_Conditional_23_Conditional_7_Template(rf, ctx) { if (rf & 1) {
86
+ i0.ɵɵelement(0, "i", 44);
70
87
  i0.ɵɵtext(1, " Deleting... ");
71
88
  } }
72
- function ConnectionsComponent_Conditional_1_Conditional_11_For_2_Conditional_23_Conditional_8_Template(rf, ctx) { if (rf & 1) {
89
+ function ConnectionsComponent_Conditional_8_Conditional_2_For_2_Conditional_23_Conditional_8_Template(rf, ctx) { if (rf & 1) {
73
90
  i0.ɵɵtext(0, " Delete ");
74
91
  } }
75
- function ConnectionsComponent_Conditional_1_Conditional_11_For_2_Conditional_23_Template(rf, ctx) { if (rf & 1) {
92
+ function ConnectionsComponent_Conditional_8_Conditional_2_For_2_Conditional_23_Template(rf, ctx) { if (rf & 1) {
76
93
  const _r8 = i0.ɵɵgetCurrentView();
77
- i0.ɵɵelementStart(0, "div", 38)(1, "div", 49);
78
- i0.ɵɵelement(2, "i", 50);
79
- i0.ɵɵelementStart(3, "span", 51);
94
+ i0.ɵɵelementStart(0, "div", 41)(1, "div", 52);
95
+ i0.ɵɵelement(2, "i", 53);
96
+ i0.ɵɵelementStart(3, "span", 54);
80
97
  i0.ɵɵtext(4, "Delete this integration and all its entity maps?");
81
98
  i0.ɵɵelementEnd();
82
- i0.ɵɵelementStart(5, "div", 52)(6, "button", 53);
83
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_1_Conditional_11_For_2_Conditional_23_Template_button_click_6_listener() { i0.ɵɵrestoreView(_r8); const summary_r6 = i0.ɵɵnextContext().$implicit; const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.ConfirmDelete(summary_r6.Integration.ID)); });
84
- i0.ɵɵconditionalCreate(7, ConnectionsComponent_Conditional_1_Conditional_11_For_2_Conditional_23_Conditional_7_Template, 2, 0)(8, ConnectionsComponent_Conditional_1_Conditional_11_For_2_Conditional_23_Conditional_8_Template, 1, 0);
99
+ i0.ɵɵelementStart(5, "div", 55)(6, "button", 56);
100
+ i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_8_Conditional_2_For_2_Conditional_23_Template_button_click_6_listener() { i0.ɵɵrestoreView(_r8); const summary_r6 = i0.ɵɵnextContext().$implicit; const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.ConfirmDelete(summary_r6.Integration.ID)); });
101
+ i0.ɵɵconditionalCreate(7, ConnectionsComponent_Conditional_8_Conditional_2_For_2_Conditional_23_Conditional_7_Template, 2, 0)(8, ConnectionsComponent_Conditional_8_Conditional_2_For_2_Conditional_23_Conditional_8_Template, 1, 0);
85
102
  i0.ɵɵelementEnd();
86
- i0.ɵɵelementStart(9, "button", 42);
87
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_1_Conditional_11_For_2_Conditional_23_Template_button_click_9_listener() { i0.ɵɵrestoreView(_r8); const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.CancelDelete()); });
103
+ i0.ɵɵelementStart(9, "button", 45);
104
+ i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_8_Conditional_2_For_2_Conditional_23_Template_button_click_9_listener() { i0.ɵɵrestoreView(_r8); const ctx_r0 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r0.CancelDelete()); });
88
105
  i0.ɵɵtext(10, " Cancel ");
89
106
  i0.ɵɵelementEnd()()()();
90
107
  } if (rf & 2) {
91
- const ctx_r1 = i0.ɵɵnextContext(4);
108
+ const ctx_r0 = i0.ɵɵnextContext(4);
92
109
  i0.ɵɵadvance(6);
93
- i0.ɵɵproperty("disabled", ctx_r1.IsDeleting);
110
+ i0.ɵɵproperty("disabled", ctx_r0.IsDeleting);
94
111
  i0.ɵɵadvance();
95
- i0.ɵɵconditional(ctx_r1.IsDeleting ? 7 : 8);
112
+ i0.ɵɵconditional(ctx_r0.IsDeleting ? 7 : 8);
96
113
  } }
97
- function ConnectionsComponent_Conditional_1_Conditional_11_For_2_Conditional_26_Template(rf, ctx) { if (rf & 1) {
98
- i0.ɵɵelement(0, "i", 41);
114
+ function ConnectionsComponent_Conditional_8_Conditional_2_For_2_Conditional_26_Template(rf, ctx) { if (rf & 1) {
115
+ i0.ɵɵelement(0, "i", 44);
99
116
  } }
100
- function ConnectionsComponent_Conditional_1_Conditional_11_For_2_Conditional_27_Template(rf, ctx) { if (rf & 1) {
117
+ function ConnectionsComponent_Conditional_8_Conditional_2_For_2_Conditional_27_Template(rf, ctx) { if (rf & 1) {
101
118
  i0.ɵɵtext(0, " Test ");
102
119
  } }
103
- function ConnectionsComponent_Conditional_1_Conditional_11_For_2_Conditional_30_Conditional_2_Template(rf, ctx) { if (rf & 1) {
104
- i0.ɵɵelement(0, "i", 41);
120
+ function ConnectionsComponent_Conditional_8_Conditional_2_For_2_Conditional_30_Conditional_2_Template(rf, ctx) { if (rf & 1) {
121
+ i0.ɵɵelement(0, "i", 44);
105
122
  i0.ɵɵtext(1, " Syncing... ");
106
123
  } }
107
- function ConnectionsComponent_Conditional_1_Conditional_11_For_2_Conditional_30_Conditional_3_Template(rf, ctx) { if (rf & 1) {
108
- i0.ɵɵelement(0, "i", 36);
124
+ function ConnectionsComponent_Conditional_8_Conditional_2_For_2_Conditional_30_Conditional_3_Template(rf, ctx) { if (rf & 1) {
125
+ i0.ɵɵelement(0, "i", 39);
109
126
  i0.ɵɵtext(1, " Sync ");
110
- i0.ɵɵelement(2, "i", 56);
127
+ i0.ɵɵelement(2, "i", 59);
111
128
  } }
112
- function ConnectionsComponent_Conditional_1_Conditional_11_For_2_Conditional_30_Conditional_4_Template(rf, ctx) { if (rf & 1) {
129
+ function ConnectionsComponent_Conditional_8_Conditional_2_For_2_Conditional_30_Conditional_4_Template(rf, ctx) { if (rf & 1) {
113
130
  const _r10 = i0.ɵɵgetCurrentView();
114
- i0.ɵɵelementStart(0, "div", 55)(1, "div", 57)(2, "span", 58);
131
+ i0.ɵɵelementStart(0, "div", 58)(1, "div", 60)(2, "span", 61);
115
132
  i0.ɵɵtext(3, "Pull (External \u2192 MJ)");
116
133
  i0.ɵɵelementEnd();
117
- i0.ɵɵelementStart(4, "button", 59);
118
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_1_Conditional_11_For_2_Conditional_30_Conditional_4_Template_button_click_4_listener($event) { i0.ɵɵrestoreView(_r10); const summary_r6 = i0.ɵɵnextContext(2).$implicit; const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.RunSyncWithDirection(summary_r6.Integration.ID, false, "Pull", $event)); });
119
- i0.ɵɵelement(5, "i", 60);
134
+ i0.ɵɵelementStart(4, "button", 62);
135
+ i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_8_Conditional_2_For_2_Conditional_30_Conditional_4_Template_button_click_4_listener($event) { i0.ɵɵrestoreView(_r10); const summary_r6 = i0.ɵɵnextContext(2).$implicit; const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.RunSyncWithDirection(summary_r6.Integration.ID, false, "Pull", $event)); });
136
+ i0.ɵɵelement(5, "i", 63);
120
137
  i0.ɵɵtext(6, " Incremental Pull ");
121
138
  i0.ɵɵelementEnd();
122
- i0.ɵɵelementStart(7, "button", 59);
123
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_1_Conditional_11_For_2_Conditional_30_Conditional_4_Template_button_click_7_listener($event) { i0.ɵɵrestoreView(_r10); const summary_r6 = i0.ɵɵnextContext(2).$implicit; const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.RunSyncWithDirection(summary_r6.Integration.ID, true, "Pull", $event)); });
124
- i0.ɵɵelement(8, "i", 61);
139
+ i0.ɵɵelementStart(7, "button", 62);
140
+ i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_8_Conditional_2_For_2_Conditional_30_Conditional_4_Template_button_click_7_listener($event) { i0.ɵɵrestoreView(_r10); const summary_r6 = i0.ɵɵnextContext(2).$implicit; const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.RunSyncWithDirection(summary_r6.Integration.ID, true, "Pull", $event)); });
141
+ i0.ɵɵelement(8, "i", 64);
125
142
  i0.ɵɵtext(9, " Full Pull ");
126
143
  i0.ɵɵelementEnd()();
127
- i0.ɵɵelementStart(10, "div", 57)(11, "span", 58);
144
+ i0.ɵɵelementStart(10, "div", 60)(11, "span", 61);
128
145
  i0.ɵɵtext(12, "Push (MJ \u2192 External)");
129
146
  i0.ɵɵelementEnd();
130
- i0.ɵɵelementStart(13, "button", 59);
131
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_1_Conditional_11_For_2_Conditional_30_Conditional_4_Template_button_click_13_listener($event) { i0.ɵɵrestoreView(_r10); const summary_r6 = i0.ɵɵnextContext(2).$implicit; const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.RunSyncWithDirection(summary_r6.Integration.ID, false, "Push", $event)); });
132
- i0.ɵɵelement(14, "i", 62);
147
+ i0.ɵɵelementStart(13, "button", 62);
148
+ i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_8_Conditional_2_For_2_Conditional_30_Conditional_4_Template_button_click_13_listener($event) { i0.ɵɵrestoreView(_r10); const summary_r6 = i0.ɵɵnextContext(2).$implicit; const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.RunSyncWithDirection(summary_r6.Integration.ID, false, "Push", $event)); });
149
+ i0.ɵɵelement(14, "i", 65);
133
150
  i0.ɵɵtext(15, " Incremental Push ");
134
151
  i0.ɵɵelementEnd();
135
- i0.ɵɵelementStart(16, "button", 59);
136
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_1_Conditional_11_For_2_Conditional_30_Conditional_4_Template_button_click_16_listener($event) { i0.ɵɵrestoreView(_r10); const summary_r6 = i0.ɵɵnextContext(2).$implicit; const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.RunSyncWithDirection(summary_r6.Integration.ID, true, "Push", $event)); });
137
- i0.ɵɵelement(17, "i", 61);
152
+ i0.ɵɵelementStart(16, "button", 62);
153
+ i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_8_Conditional_2_For_2_Conditional_30_Conditional_4_Template_button_click_16_listener($event) { i0.ɵɵrestoreView(_r10); const summary_r6 = i0.ɵɵnextContext(2).$implicit; const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.RunSyncWithDirection(summary_r6.Integration.ID, true, "Push", $event)); });
154
+ i0.ɵɵelement(17, "i", 64);
138
155
  i0.ɵɵtext(18, " Full Push ");
139
156
  i0.ɵɵelementEnd()();
140
- i0.ɵɵelementStart(19, "div", 57)(20, "span", 58);
157
+ i0.ɵɵelementStart(19, "div", 60)(20, "span", 61);
141
158
  i0.ɵɵtext(21, "Bidirectional");
142
159
  i0.ɵɵelementEnd();
143
- i0.ɵɵelementStart(22, "button", 59);
144
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_1_Conditional_11_For_2_Conditional_30_Conditional_4_Template_button_click_22_listener($event) { i0.ɵɵrestoreView(_r10); const summary_r6 = i0.ɵɵnextContext(2).$implicit; const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.RunSyncWithDirection(summary_r6.Integration.ID, false, "Bidirectional", $event)); });
145
- i0.ɵɵelement(23, "i", 36);
160
+ i0.ɵɵelementStart(22, "button", 62);
161
+ i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_8_Conditional_2_For_2_Conditional_30_Conditional_4_Template_button_click_22_listener($event) { i0.ɵɵrestoreView(_r10); const summary_r6 = i0.ɵɵnextContext(2).$implicit; const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.RunSyncWithDirection(summary_r6.Integration.ID, false, "Bidirectional", $event)); });
162
+ i0.ɵɵelement(23, "i", 39);
146
163
  i0.ɵɵtext(24, " Incremental Both ");
147
164
  i0.ɵɵelementEnd();
148
- i0.ɵɵelementStart(25, "button", 59);
149
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_1_Conditional_11_For_2_Conditional_30_Conditional_4_Template_button_click_25_listener($event) { i0.ɵɵrestoreView(_r10); const summary_r6 = i0.ɵɵnextContext(2).$implicit; const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.RunSyncWithDirection(summary_r6.Integration.ID, true, "Bidirectional", $event)); });
150
- i0.ɵɵelement(26, "i", 61);
165
+ i0.ɵɵelementStart(25, "button", 62);
166
+ i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_8_Conditional_2_For_2_Conditional_30_Conditional_4_Template_button_click_25_listener($event) { i0.ɵɵrestoreView(_r10); const summary_r6 = i0.ɵɵnextContext(2).$implicit; const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.RunSyncWithDirection(summary_r6.Integration.ID, true, "Bidirectional", $event)); });
167
+ i0.ɵɵelement(26, "i", 64);
151
168
  i0.ɵɵtext(27, " Full Both ");
152
169
  i0.ɵɵelementEnd()()();
153
170
  } }
154
- function ConnectionsComponent_Conditional_1_Conditional_11_For_2_Conditional_30_Template(rf, ctx) { if (rf & 1) {
171
+ function ConnectionsComponent_Conditional_8_Conditional_2_For_2_Conditional_30_Template(rf, ctx) { if (rf & 1) {
155
172
  const _r9 = i0.ɵɵgetCurrentView();
156
- i0.ɵɵelementStart(0, "div", 43)(1, "button", 54);
157
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_1_Conditional_11_For_2_Conditional_30_Template_button_click_1_listener($event) { i0.ɵɵrestoreView(_r9); const summary_r6 = i0.ɵɵnextContext().$implicit; const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.ToggleSyncMenu(summary_r6.Integration.ID, $event)); });
158
- i0.ɵɵconditionalCreate(2, ConnectionsComponent_Conditional_1_Conditional_11_For_2_Conditional_30_Conditional_2_Template, 2, 0)(3, ConnectionsComponent_Conditional_1_Conditional_11_For_2_Conditional_30_Conditional_3_Template, 3, 0);
173
+ i0.ɵɵelementStart(0, "div", 46)(1, "button", 57);
174
+ i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_8_Conditional_2_For_2_Conditional_30_Template_button_click_1_listener($event) { i0.ɵɵrestoreView(_r9); const summary_r6 = i0.ɵɵnextContext().$implicit; const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.ToggleSyncMenu(summary_r6.Integration.ID, $event)); });
175
+ i0.ɵɵconditionalCreate(2, ConnectionsComponent_Conditional_8_Conditional_2_For_2_Conditional_30_Conditional_2_Template, 2, 0)(3, ConnectionsComponent_Conditional_8_Conditional_2_For_2_Conditional_30_Conditional_3_Template, 3, 0);
159
176
  i0.ɵɵelementEnd();
160
- i0.ɵɵconditionalCreate(4, ConnectionsComponent_Conditional_1_Conditional_11_For_2_Conditional_30_Conditional_4_Template, 28, 0, "div", 55);
177
+ i0.ɵɵconditionalCreate(4, ConnectionsComponent_Conditional_8_Conditional_2_For_2_Conditional_30_Conditional_4_Template, 28, 0, "div", 58);
161
178
  i0.ɵɵelementEnd();
162
179
  } if (rf & 2) {
163
180
  const summary_r6 = i0.ɵɵnextContext().$implicit;
164
- const ctx_r1 = i0.ɵɵnextContext(3);
181
+ const ctx_r0 = i0.ɵɵnextContext(3);
165
182
  i0.ɵɵadvance();
166
- i0.ɵɵproperty("disabled", !!ctx_r1.SyncingIntegrationID);
183
+ i0.ɵɵproperty("disabled", !!ctx_r0.SyncingIntegrationID);
167
184
  i0.ɵɵadvance();
168
- i0.ɵɵconditional(ctx_r1.IsSyncing(summary_r6.Integration.ID) ? 2 : 3);
185
+ i0.ɵɵconditional(ctx_r0.IsSyncing(summary_r6.Integration.ID) ? 2 : 3);
169
186
  i0.ɵɵadvance(2);
170
- i0.ɵɵconditional(ctx_r1.SyncMenuIntegrationID === summary_r6.Integration.ID ? 4 : -1);
187
+ i0.ɵɵconditional(ctx_r0.SyncMenuIntegrationID === summary_r6.Integration.ID ? 4 : -1);
171
188
  } }
172
- function ConnectionsComponent_Conditional_1_Conditional_11_For_2_Template(rf, ctx) { if (rf & 1) {
189
+ function ConnectionsComponent_Conditional_8_Conditional_2_For_2_Template(rf, ctx) { if (rf & 1) {
173
190
  const _r5 = i0.ɵɵgetCurrentView();
174
- i0.ɵɵelementStart(0, "div", 19)(1, "div", 24);
175
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_1_Conditional_11_For_2_Template_div_click_1_listener() { const summary_r6 = i0.ɵɵrestoreView(_r5).$implicit; const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.SelectIntegrationCard(summary_r6)); });
176
- i0.ɵɵelementStart(2, "div", 25)(3, "div", 26);
177
- i0.ɵɵelement(4, "i", 27);
191
+ i0.ɵɵelementStart(0, "div", 22)(1, "div", 27);
192
+ i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_8_Conditional_2_For_2_Template_div_click_1_listener() { const summary_r6 = i0.ɵɵrestoreView(_r5).$implicit; const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.SelectIntegrationCard(summary_r6)); });
193
+ i0.ɵɵelementStart(2, "div", 28)(3, "div", 29);
194
+ i0.ɵɵelement(4, "i", 30);
178
195
  i0.ɵɵelementEnd();
179
196
  i0.ɵɵelementStart(5, "span");
180
197
  i0.ɵɵtext(6);
181
198
  i0.ɵɵelementEnd()();
182
- i0.ɵɵelementStart(7, "div", 28)(8, "div", 29);
199
+ i0.ɵɵelementStart(7, "div", 31)(8, "div", 32);
183
200
  i0.ɵɵtext(9);
184
201
  i0.ɵɵelementEnd();
185
- i0.ɵɵelementStart(10, "div", 30);
202
+ i0.ɵɵelementStart(10, "div", 33);
186
203
  i0.ɵɵtext(11);
187
204
  i0.ɵɵelementEnd();
188
- i0.ɵɵelementStart(12, "div", 31)(13, "span", 32);
205
+ i0.ɵɵelementStart(12, "div", 34)(13, "span", 35);
189
206
  i0.ɵɵtext(14);
190
207
  i0.ɵɵelementEnd();
191
- i0.ɵɵelementStart(15, "span", 33);
208
+ i0.ɵɵelementStart(15, "span", 36);
192
209
  i0.ɵɵtext(16, "\u00B7");
193
210
  i0.ɵɵelementEnd();
194
- i0.ɵɵelementStart(17, "span", 34);
211
+ i0.ɵɵelementStart(17, "span", 37);
195
212
  i0.ɵɵtext(18);
196
213
  i0.ɵɵelementEnd()();
197
- i0.ɵɵelementStart(19, "div", 35);
198
- i0.ɵɵelement(20, "i", 36);
214
+ i0.ɵɵelementStart(19, "div", 38);
215
+ i0.ɵɵelement(20, "i", 39);
199
216
  i0.ɵɵtext(21);
200
217
  i0.ɵɵelementEnd();
201
- i0.ɵɵconditionalCreate(22, ConnectionsComponent_Conditional_1_Conditional_11_For_2_Conditional_22_Template, 5, 6, "div", 37);
218
+ i0.ɵɵconditionalCreate(22, ConnectionsComponent_Conditional_8_Conditional_2_For_2_Conditional_22_Template, 5, 6, "div", 40);
202
219
  i0.ɵɵelementEnd()();
203
- i0.ɵɵconditionalCreate(23, ConnectionsComponent_Conditional_1_Conditional_11_For_2_Conditional_23_Template, 11, 2, "div", 38);
204
- i0.ɵɵelementStart(24, "div", 39)(25, "button", 40);
205
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_1_Conditional_11_For_2_Template_button_click_25_listener() { const summary_r6 = i0.ɵɵrestoreView(_r5).$implicit; const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.TestExistingConnection(summary_r6.Integration.ID)); });
206
- i0.ɵɵconditionalCreate(26, ConnectionsComponent_Conditional_1_Conditional_11_For_2_Conditional_26_Template, 1, 0, "i", 41)(27, ConnectionsComponent_Conditional_1_Conditional_11_For_2_Conditional_27_Template, 1, 0);
220
+ i0.ɵɵconditionalCreate(23, ConnectionsComponent_Conditional_8_Conditional_2_For_2_Conditional_23_Template, 11, 2, "div", 41);
221
+ i0.ɵɵelementStart(24, "div", 42)(25, "button", 43);
222
+ i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_8_Conditional_2_For_2_Template_button_click_25_listener() { const summary_r6 = i0.ɵɵrestoreView(_r5).$implicit; const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.TestExistingConnection(summary_r6.Integration.ID)); });
223
+ i0.ɵɵconditionalCreate(26, ConnectionsComponent_Conditional_8_Conditional_2_For_2_Conditional_26_Template, 1, 0, "i", 44)(27, ConnectionsComponent_Conditional_8_Conditional_2_For_2_Conditional_27_Template, 1, 0);
207
224
  i0.ɵɵelementEnd();
208
- i0.ɵɵelementStart(28, "button", 42);
209
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_1_Conditional_11_For_2_Template_button_click_28_listener() { const summary_r6 = i0.ɵɵrestoreView(_r5).$implicit; const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.OnMenuAction("edit", summary_r6)); });
225
+ i0.ɵɵelementStart(28, "button", 45);
226
+ i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_8_Conditional_2_For_2_Template_button_click_28_listener() { const summary_r6 = i0.ɵɵrestoreView(_r5).$implicit; const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.OnMenuAction("edit", summary_r6)); });
210
227
  i0.ɵɵtext(29, " Configure ");
211
228
  i0.ɵɵelementEnd();
212
- i0.ɵɵconditionalCreate(30, ConnectionsComponent_Conditional_1_Conditional_11_For_2_Conditional_30_Template, 5, 3, "div", 43);
213
- i0.ɵɵelementStart(31, "button", 44);
214
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_1_Conditional_11_For_2_Template_button_click_31_listener() { const summary_r6 = i0.ɵɵrestoreView(_r5).$implicit; const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.OnMenuAction("delete", summary_r6)); });
215
- i0.ɵɵelement(32, "i", 45);
229
+ i0.ɵɵconditionalCreate(30, ConnectionsComponent_Conditional_8_Conditional_2_For_2_Conditional_30_Template, 5, 3, "div", 46);
230
+ i0.ɵɵelementStart(31, "button", 47);
231
+ i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_8_Conditional_2_For_2_Template_button_click_31_listener() { const summary_r6 = i0.ɵɵrestoreView(_r5).$implicit; const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.OnMenuAction("delete", summary_r6)); });
232
+ i0.ɵɵelement(32, "i", 48);
216
233
  i0.ɵɵelementEnd()()();
217
234
  } if (rf & 2) {
218
235
  let tmp_21_0;
219
236
  const summary_r6 = ctx.$implicit;
220
- const ctx_r1 = i0.ɵɵnextContext(3);
237
+ const ctx_r0 = i0.ɵɵnextContext(3);
221
238
  i0.ɵɵadvance(3);
222
- i0.ɵɵstyleProp("background-color", ctx_r1.GetIconBrandColor(summary_r6.Integration.Integration));
239
+ i0.ɵɵstyleProp("background-color", ctx_r0.GetIconBrandColor(summary_r6.Integration.Integration));
223
240
  i0.ɵɵadvance();
224
- i0.ɵɵclassMap(ctx_r1.GetIntegrationIcon(summary_r6.Integration.Integration, summary_r6.Icon));
241
+ i0.ɵɵclassMap(ctx_r0.GetIntegrationIcon(summary_r6.Integration.Integration, summary_r6.Icon));
225
242
  i0.ɵɵadvance();
226
- i0.ɵɵclassMap(ctx_r1.GetStatusBadgeClass(summary_r6));
243
+ i0.ɵɵclassMap(ctx_r0.GetStatusBadgeClass(summary_r6));
227
244
  i0.ɵɵadvance();
228
- i0.ɵɵtextInterpolate(ctx_r1.GetStatusBadge(summary_r6));
245
+ i0.ɵɵtextInterpolate(ctx_r0.GetStatusBadge(summary_r6));
229
246
  i0.ɵɵadvance(3);
230
247
  i0.ɵɵtextInterpolate(summary_r6.Integration.Name);
231
248
  i0.ɵɵadvance(2);
232
249
  i0.ɵɵtextInterpolate(summary_r6.Integration.Company);
233
250
  i0.ɵɵadvance(3);
234
- i0.ɵɵtextInterpolate(ctx_r1.GetSourceTypeLabel(summary_r6));
251
+ i0.ɵɵtextInterpolate(ctx_r0.GetSourceTypeLabel(summary_r6));
235
252
  i0.ɵɵadvance(4);
236
- i0.ɵɵtextInterpolate(ctx_r1.GetCredentialHint(summary_r6));
253
+ i0.ɵɵtextInterpolate(ctx_r0.GetCredentialHint(summary_r6));
237
254
  i0.ɵɵadvance(3);
238
- i0.ɵɵtextInterpolate1(" Syncing ", ctx_r1.GetEntityMapCount(summary_r6.Integration.ID), " entities ");
255
+ i0.ɵɵtextInterpolate1(" Syncing ", ctx_r0.GetEntityMapCount(summary_r6.Integration.ID), " entities ");
239
256
  i0.ɵɵadvance();
240
- i0.ɵɵconditional((tmp_21_0 = ctx_r1.GetCardTestResult(summary_r6.Integration.ID)) ? 22 : -1, tmp_21_0);
257
+ i0.ɵɵconditional((tmp_21_0 = ctx_r0.GetCardTestResult(summary_r6.Integration.ID)) ? 22 : -1, tmp_21_0);
241
258
  i0.ɵɵadvance();
242
- i0.ɵɵconditional(ctx_r1.IsDeleteConfirming(summary_r6.Integration.ID) ? 23 : -1);
259
+ i0.ɵɵconditional(ctx_r0.IsDeleteConfirming(summary_r6.Integration.ID) ? 23 : -1);
243
260
  i0.ɵɵadvance(2);
244
- i0.ɵɵproperty("disabled", !!ctx_r1.TestingCardID);
261
+ i0.ɵɵproperty("disabled", !!ctx_r0.TestingCardID);
245
262
  i0.ɵɵadvance();
246
- i0.ɵɵconditional(ctx_r1.IsTestingCard(summary_r6.Integration.ID) ? 26 : 27);
263
+ i0.ɵɵconditional(ctx_r0.IsTestingCard(summary_r6.Integration.ID) ? 26 : 27);
247
264
  i0.ɵɵadvance(4);
248
- i0.ɵɵconditional(ctx_r1.IsConnectionActive(summary_r6) ? 30 : -1);
265
+ i0.ɵɵconditional(ctx_r0.IsConnectionActive(summary_r6) ? 30 : -1);
249
266
  } }
250
- function ConnectionsComponent_Conditional_1_Conditional_11_Template(rf, ctx) { if (rf & 1) {
267
+ function ConnectionsComponent_Conditional_8_Conditional_2_Template(rf, ctx) { if (rf & 1) {
251
268
  const _r4 = i0.ɵɵgetCurrentView();
252
- i0.ɵɵelementStart(0, "div", 15);
253
- i0.ɵɵrepeaterCreate(1, ConnectionsComponent_Conditional_1_Conditional_11_For_2_Template, 33, 17, "div", 19, _forTrack0);
254
- i0.ɵɵelementStart(3, "div", 20);
255
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_1_Conditional_11_Template_div_click_3_listener() { i0.ɵɵrestoreView(_r4); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.OpenWizard()); });
256
- i0.ɵɵelementStart(4, "div", 21)(5, "div", 22);
257
- i0.ɵɵelement(6, "i", 12);
258
- i0.ɵɵelementEnd();
259
- i0.ɵɵelementStart(7, "span", 23);
269
+ i0.ɵɵelementStart(0, "div", 18);
270
+ i0.ɵɵrepeaterCreate(1, ConnectionsComponent_Conditional_8_Conditional_2_For_2_Template, 33, 17, "div", 22, _forTrack0);
271
+ i0.ɵɵelementStart(3, "div", 23);
272
+ i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_8_Conditional_2_Template_div_click_3_listener() { i0.ɵɵrestoreView(_r4); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.OpenWizard()); });
273
+ i0.ɵɵelementStart(4, "div", 24)(5, "div", 25);
274
+ i0.ɵɵelement(6, "i", 15);
275
+ i0.ɵɵelementEnd();
276
+ i0.ɵɵelementStart(7, "span", 26);
260
277
  i0.ɵɵtext(8, "Add Integration");
261
278
  i0.ɵɵelementEnd()()()();
262
279
  } if (rf & 2) {
263
- const ctx_r1 = i0.ɵɵnextContext(2);
280
+ const ctx_r0 = i0.ɵɵnextContext(2);
264
281
  i0.ɵɵadvance();
265
- i0.ɵɵrepeater(ctx_r1.Connections);
282
+ i0.ɵɵrepeater(ctx_r0.Connections);
266
283
  } }
267
- function ConnectionsComponent_Conditional_1_Template(rf, ctx) { if (rf & 1) {
268
- const _r1 = i0.ɵɵgetCurrentView();
269
- i0.ɵɵelementStart(0, "div", 7)(1, "div", 8)(2, "h2", 9);
270
- i0.ɵɵtext(3, "Integrations");
271
- i0.ɵɵelementEnd();
272
- i0.ɵɵelementStart(4, "span", 10);
273
- i0.ɵɵtext(5);
274
- i0.ɵɵelementEnd()();
275
- i0.ɵɵelementStart(6, "button", 11);
276
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_1_Template_button_click_6_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.OpenWizard()); });
277
- i0.ɵɵelement(7, "i", 12);
278
- i0.ɵɵtext(8, " Add Integration ");
279
- i0.ɵɵelementEnd()();
280
- i0.ɵɵconditionalCreate(9, ConnectionsComponent_Conditional_1_Conditional_9_Template, 2, 0, "div", 13);
281
- i0.ɵɵconditionalCreate(10, ConnectionsComponent_Conditional_1_Conditional_10_Template, 9, 0, "div", 14);
282
- i0.ɵɵconditionalCreate(11, ConnectionsComponent_Conditional_1_Conditional_11_Template, 9, 0, "div", 15);
284
+ function ConnectionsComponent_Conditional_8_Template(rf, ctx) { if (rf & 1) {
285
+ i0.ɵɵconditionalCreate(0, ConnectionsComponent_Conditional_8_Conditional_0_Template, 2, 0, "div", 16);
286
+ i0.ɵɵconditionalCreate(1, ConnectionsComponent_Conditional_8_Conditional_1_Template, 9, 0, "div", 17);
287
+ i0.ɵɵconditionalCreate(2, ConnectionsComponent_Conditional_8_Conditional_2_Template, 9, 0, "div", 18);
283
288
  } if (rf & 2) {
284
- const ctx_r1 = i0.ɵɵnextContext();
285
- i0.ɵɵadvance(5);
286
- i0.ɵɵtextInterpolate2("", ctx_r1.Connections.length, " integration", ctx_r1.Connections.length !== 1 ? "s" : "");
287
- i0.ɵɵadvance(4);
288
- i0.ɵɵconditional(ctx_r1.IsLoading ? 9 : -1);
289
+ const ctx_r0 = i0.ɵɵnextContext();
290
+ i0.ɵɵconditional(ctx_r0.IsLoading ? 0 : -1);
289
291
  i0.ɵɵadvance();
290
- i0.ɵɵconditional(!ctx_r1.IsLoading && ctx_r1.Connections.length === 0 ? 10 : -1);
292
+ i0.ɵɵconditional(!ctx_r0.IsLoading && ctx_r0.Connections.length === 0 ? 1 : -1);
291
293
  i0.ɵɵadvance();
292
- i0.ɵɵconditional(!ctx_r1.IsLoading && ctx_r1.Connections.length > 0 ? 11 : -1);
294
+ i0.ɵɵconditional(!ctx_r0.IsLoading && ctx_r0.Connections.length > 0 ? 2 : -1);
293
295
  } }
294
- function ConnectionsComponent_Conditional_2_Conditional_1_Template(rf, ctx) { if (rf & 1) {
296
+ function ConnectionsComponent_Conditional_9_Conditional_1_Template(rf, ctx) { if (rf & 1) {
295
297
  const _r11 = i0.ɵɵgetCurrentView();
296
- i0.ɵɵelementStart(0, "app-visual-field-editor", 64);
297
- i0.ɵɵlistener("Close", function ConnectionsComponent_Conditional_2_Conditional_1_Template_app_visual_field_editor_Close_0_listener() { i0.ɵɵrestoreView(_r11); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.CloseEntityMapEditor()); });
298
+ i0.ɵɵelementStart(0, "app-visual-field-editor", 67);
299
+ i0.ɵɵlistener("Close", function ConnectionsComponent_Conditional_9_Conditional_1_Template_app_visual_field_editor_Close_0_listener() { i0.ɵɵrestoreView(_r11); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.CloseEntityMapEditor()); });
298
300
  i0.ɵɵelementEnd();
299
301
  } if (rf & 2) {
300
- const ctx_r1 = i0.ɵɵnextContext(2);
301
- i0.ɵɵproperty("EntityMap", ctx_r1.EditorEntityMap)("CompanyIntegrationID", ctx_r1.SelectedSummary.Integration.ID)("RunViewProvider", ctx_r1.RunViewToUse);
302
+ const ctx_r0 = i0.ɵɵnextContext(2);
303
+ i0.ɵɵproperty("EntityMap", ctx_r0.EditorEntityMap)("CompanyIntegrationID", ctx_r0.SelectedSummary.Integration.ID)("RunViewProvider", ctx_r0.RunViewToUse);
302
304
  } }
303
- function ConnectionsComponent_Conditional_2_Conditional_2_Conditional_21_Conditional_2_Template(rf, ctx) { if (rf & 1) {
304
- i0.ɵɵelement(0, "i", 41);
305
+ function ConnectionsComponent_Conditional_9_Conditional_2_Conditional_21_Conditional_2_Template(rf, ctx) { if (rf & 1) {
306
+ i0.ɵɵelement(0, "i", 44);
305
307
  i0.ɵɵtext(1, " Syncing... ");
306
308
  } }
307
- function ConnectionsComponent_Conditional_2_Conditional_2_Conditional_21_Conditional_3_Template(rf, ctx) { if (rf & 1) {
308
- i0.ɵɵelement(0, "i", 36);
309
+ function ConnectionsComponent_Conditional_9_Conditional_2_Conditional_21_Conditional_3_Template(rf, ctx) { if (rf & 1) {
310
+ i0.ɵɵelement(0, "i", 39);
309
311
  i0.ɵɵtext(1, " Sync ");
310
- i0.ɵɵelement(2, "i", 56);
312
+ i0.ɵɵelement(2, "i", 59);
311
313
  } }
312
- function ConnectionsComponent_Conditional_2_Conditional_2_Conditional_21_Conditional_4_Template(rf, ctx) { if (rf & 1) {
314
+ function ConnectionsComponent_Conditional_9_Conditional_2_Conditional_21_Conditional_4_Template(rf, ctx) { if (rf & 1) {
313
315
  const _r14 = i0.ɵɵgetCurrentView();
314
- i0.ɵɵelementStart(0, "div", 96)(1, "div", 57)(2, "span", 58);
316
+ i0.ɵɵelementStart(0, "div", 99)(1, "div", 60)(2, "span", 61);
315
317
  i0.ɵɵtext(3, "Pull (External \u2192 MJ)");
316
318
  i0.ɵɵelementEnd();
317
- i0.ɵɵelementStart(4, "button", 59);
318
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_2_Conditional_2_Conditional_21_Conditional_4_Template_button_click_4_listener($event) { i0.ɵɵrestoreView(_r14); const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.RunSyncWithDirection(ctx_r1.SelectedSummary.Integration.ID, false, "Pull", $event)); });
319
- i0.ɵɵelement(5, "i", 60);
319
+ i0.ɵɵelementStart(4, "button", 62);
320
+ i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_9_Conditional_2_Conditional_21_Conditional_4_Template_button_click_4_listener($event) { i0.ɵɵrestoreView(_r14); const ctx_r0 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r0.RunSyncWithDirection(ctx_r0.SelectedSummary.Integration.ID, false, "Pull", $event)); });
321
+ i0.ɵɵelement(5, "i", 63);
320
322
  i0.ɵɵtext(6, " Incremental Pull ");
321
323
  i0.ɵɵelementEnd();
322
- i0.ɵɵelementStart(7, "button", 59);
323
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_2_Conditional_2_Conditional_21_Conditional_4_Template_button_click_7_listener($event) { i0.ɵɵrestoreView(_r14); const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.RunSyncWithDirection(ctx_r1.SelectedSummary.Integration.ID, true, "Pull", $event)); });
324
- i0.ɵɵelement(8, "i", 61);
324
+ i0.ɵɵelementStart(7, "button", 62);
325
+ i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_9_Conditional_2_Conditional_21_Conditional_4_Template_button_click_7_listener($event) { i0.ɵɵrestoreView(_r14); const ctx_r0 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r0.RunSyncWithDirection(ctx_r0.SelectedSummary.Integration.ID, true, "Pull", $event)); });
326
+ i0.ɵɵelement(8, "i", 64);
325
327
  i0.ɵɵtext(9, " Full Pull ");
326
328
  i0.ɵɵelementEnd()();
327
- i0.ɵɵelementStart(10, "div", 57)(11, "span", 58);
329
+ i0.ɵɵelementStart(10, "div", 60)(11, "span", 61);
328
330
  i0.ɵɵtext(12, "Push (MJ \u2192 External)");
329
331
  i0.ɵɵelementEnd();
330
- i0.ɵɵelementStart(13, "button", 59);
331
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_2_Conditional_2_Conditional_21_Conditional_4_Template_button_click_13_listener($event) { i0.ɵɵrestoreView(_r14); const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.RunSyncWithDirection(ctx_r1.SelectedSummary.Integration.ID, false, "Push", $event)); });
332
- i0.ɵɵelement(14, "i", 62);
332
+ i0.ɵɵelementStart(13, "button", 62);
333
+ i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_9_Conditional_2_Conditional_21_Conditional_4_Template_button_click_13_listener($event) { i0.ɵɵrestoreView(_r14); const ctx_r0 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r0.RunSyncWithDirection(ctx_r0.SelectedSummary.Integration.ID, false, "Push", $event)); });
334
+ i0.ɵɵelement(14, "i", 65);
333
335
  i0.ɵɵtext(15, " Incremental Push ");
334
336
  i0.ɵɵelementEnd();
335
- i0.ɵɵelementStart(16, "button", 59);
336
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_2_Conditional_2_Conditional_21_Conditional_4_Template_button_click_16_listener($event) { i0.ɵɵrestoreView(_r14); const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.RunSyncWithDirection(ctx_r1.SelectedSummary.Integration.ID, true, "Push", $event)); });
337
- i0.ɵɵelement(17, "i", 61);
337
+ i0.ɵɵelementStart(16, "button", 62);
338
+ i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_9_Conditional_2_Conditional_21_Conditional_4_Template_button_click_16_listener($event) { i0.ɵɵrestoreView(_r14); const ctx_r0 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r0.RunSyncWithDirection(ctx_r0.SelectedSummary.Integration.ID, true, "Push", $event)); });
339
+ i0.ɵɵelement(17, "i", 64);
338
340
  i0.ɵɵtext(18, " Full Push ");
339
341
  i0.ɵɵelementEnd()();
340
- i0.ɵɵelementStart(19, "div", 57)(20, "span", 58);
342
+ i0.ɵɵelementStart(19, "div", 60)(20, "span", 61);
341
343
  i0.ɵɵtext(21, "Bidirectional");
342
344
  i0.ɵɵelementEnd();
343
- i0.ɵɵelementStart(22, "button", 59);
344
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_2_Conditional_2_Conditional_21_Conditional_4_Template_button_click_22_listener($event) { i0.ɵɵrestoreView(_r14); const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.RunSyncWithDirection(ctx_r1.SelectedSummary.Integration.ID, false, "Bidirectional", $event)); });
345
- i0.ɵɵelement(23, "i", 36);
345
+ i0.ɵɵelementStart(22, "button", 62);
346
+ i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_9_Conditional_2_Conditional_21_Conditional_4_Template_button_click_22_listener($event) { i0.ɵɵrestoreView(_r14); const ctx_r0 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r0.RunSyncWithDirection(ctx_r0.SelectedSummary.Integration.ID, false, "Bidirectional", $event)); });
347
+ i0.ɵɵelement(23, "i", 39);
346
348
  i0.ɵɵtext(24, " Incremental Both ");
347
349
  i0.ɵɵelementEnd();
348
- i0.ɵɵelementStart(25, "button", 59);
349
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_2_Conditional_2_Conditional_21_Conditional_4_Template_button_click_25_listener($event) { i0.ɵɵrestoreView(_r14); const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.RunSyncWithDirection(ctx_r1.SelectedSummary.Integration.ID, true, "Bidirectional", $event)); });
350
- i0.ɵɵelement(26, "i", 61);
350
+ i0.ɵɵelementStart(25, "button", 62);
351
+ i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_9_Conditional_2_Conditional_21_Conditional_4_Template_button_click_25_listener($event) { i0.ɵɵrestoreView(_r14); const ctx_r0 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r0.RunSyncWithDirection(ctx_r0.SelectedSummary.Integration.ID, true, "Bidirectional", $event)); });
352
+ i0.ɵɵelement(26, "i", 64);
351
353
  i0.ɵɵtext(27, " Full Both ");
352
354
  i0.ɵɵelementEnd()()();
353
355
  } }
354
- function ConnectionsComponent_Conditional_2_Conditional_2_Conditional_21_Template(rf, ctx) { if (rf & 1) {
356
+ function ConnectionsComponent_Conditional_9_Conditional_2_Conditional_21_Template(rf, ctx) { if (rf & 1) {
355
357
  const _r13 = i0.ɵɵgetCurrentView();
356
- i0.ɵɵelementStart(0, "div", 43)(1, "button", 54);
357
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_2_Conditional_2_Conditional_21_Template_button_click_1_listener($event) { i0.ɵɵrestoreView(_r13); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.ToggleSyncMenu(ctx_r1.SelectedSummary.Integration.ID, $event)); });
358
- i0.ɵɵconditionalCreate(2, ConnectionsComponent_Conditional_2_Conditional_2_Conditional_21_Conditional_2_Template, 2, 0)(3, ConnectionsComponent_Conditional_2_Conditional_2_Conditional_21_Conditional_3_Template, 3, 0);
358
+ i0.ɵɵelementStart(0, "div", 46)(1, "button", 57);
359
+ i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_9_Conditional_2_Conditional_21_Template_button_click_1_listener($event) { i0.ɵɵrestoreView(_r13); const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.ToggleSyncMenu(ctx_r0.SelectedSummary.Integration.ID, $event)); });
360
+ i0.ɵɵconditionalCreate(2, ConnectionsComponent_Conditional_9_Conditional_2_Conditional_21_Conditional_2_Template, 2, 0)(3, ConnectionsComponent_Conditional_9_Conditional_2_Conditional_21_Conditional_3_Template, 3, 0);
359
361
  i0.ɵɵelementEnd();
360
- i0.ɵɵconditionalCreate(4, ConnectionsComponent_Conditional_2_Conditional_2_Conditional_21_Conditional_4_Template, 28, 0, "div", 96);
362
+ i0.ɵɵconditionalCreate(4, ConnectionsComponent_Conditional_9_Conditional_2_Conditional_21_Conditional_4_Template, 28, 0, "div", 99);
361
363
  i0.ɵɵelementEnd();
362
364
  } if (rf & 2) {
363
- const ctx_r1 = i0.ɵɵnextContext(3);
365
+ const ctx_r0 = i0.ɵɵnextContext(3);
364
366
  i0.ɵɵadvance();
365
- i0.ɵɵproperty("disabled", !!ctx_r1.SyncingIntegrationID);
367
+ i0.ɵɵproperty("disabled", !!ctx_r0.SyncingIntegrationID);
366
368
  i0.ɵɵadvance();
367
- i0.ɵɵconditional(ctx_r1.IsSyncing(ctx_r1.SelectedSummary.Integration.ID) ? 2 : 3);
369
+ i0.ɵɵconditional(ctx_r0.IsSyncing(ctx_r0.SelectedSummary.Integration.ID) ? 2 : 3);
368
370
  i0.ɵɵadvance(2);
369
- i0.ɵɵconditional(ctx_r1.SyncMenuIntegrationID === ctx_r1.SelectedSummary.Integration.ID ? 4 : -1);
371
+ i0.ɵɵconditional(ctx_r0.SyncMenuIntegrationID === ctx_r0.SelectedSummary.Integration.ID ? 4 : -1);
370
372
  } }
371
- function ConnectionsComponent_Conditional_2_Conditional_2_Conditional_28_Template(rf, ctx) { if (rf & 1) {
373
+ function ConnectionsComponent_Conditional_9_Conditional_2_Conditional_28_Template(rf, ctx) { if (rf & 1) {
372
374
  const _r15 = i0.ɵɵgetCurrentView();
373
- i0.ɵɵelementStart(0, "mj-scheduled-job-summary", 97);
374
- i0.ɵɵlistener("EditRequested", function ConnectionsComponent_Conditional_2_Conditional_2_Conditional_28_Template_mj_scheduled_job_summary_EditRequested_0_listener() { i0.ɵɵrestoreView(_r15); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.OpenSchedulePanel()); });
375
+ i0.ɵɵelementStart(0, "mj-scheduled-job-summary", 100);
376
+ i0.ɵɵlistener("EditRequested", function ConnectionsComponent_Conditional_9_Conditional_2_Conditional_28_Template_mj_scheduled_job_summary_EditRequested_0_listener() { i0.ɵɵrestoreView(_r15); const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.OpenSchedulePanel()); });
375
377
  i0.ɵɵelementEnd();
376
378
  } if (rf & 2) {
377
- const ctx_r1 = i0.ɵɵnextContext(3);
378
- i0.ɵɵproperty("ScheduledJobID", ctx_r1.ScheduledJobID);
379
+ const ctx_r0 = i0.ɵɵnextContext(3);
380
+ i0.ɵɵproperty("ScheduledJobID", ctx_r0.ScheduledJobID);
379
381
  } }
380
- function ConnectionsComponent_Conditional_2_Conditional_2_Conditional_29_Template(rf, ctx) { if (rf & 1) {
382
+ function ConnectionsComponent_Conditional_9_Conditional_2_Conditional_29_Template(rf, ctx) { if (rf & 1) {
381
383
  const _r16 = i0.ɵɵgetCurrentView();
382
- i0.ɵɵelementStart(0, "div", 80)(1, "span", 98);
384
+ i0.ɵɵelementStart(0, "div", 83)(1, "span", 101);
383
385
  i0.ɵɵtext(2, "No sync schedule configured");
384
386
  i0.ɵɵelementEnd();
385
- i0.ɵɵelementStart(3, "button", 99);
386
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_2_Conditional_2_Conditional_29_Template_button_click_3_listener() { i0.ɵɵrestoreView(_r16); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.OpenSchedulePanel()); });
387
- i0.ɵɵelement(4, "i", 12);
387
+ i0.ɵɵelementStart(3, "button", 102);
388
+ i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_9_Conditional_2_Conditional_29_Template_button_click_3_listener() { i0.ɵɵrestoreView(_r16); const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.OpenSchedulePanel()); });
389
+ i0.ɵɵelement(4, "i", 15);
388
390
  i0.ɵɵtext(5, " Schedule Sync ");
389
391
  i0.ɵɵelementEnd()();
390
392
  } }
391
- function ConnectionsComponent_Conditional_2_Conditional_2_Conditional_51_Conditional_1_Template(rf, ctx) { if (rf & 1) {
392
- i0.ɵɵelement(0, "i", 47);
393
+ function ConnectionsComponent_Conditional_9_Conditional_2_Conditional_51_Conditional_1_Template(rf, ctx) { if (rf & 1) {
394
+ i0.ɵɵelement(0, "i", 50);
393
395
  } }
394
- function ConnectionsComponent_Conditional_2_Conditional_2_Conditional_51_Conditional_2_Template(rf, ctx) { if (rf & 1) {
395
- i0.ɵɵelement(0, "i", 48);
396
+ function ConnectionsComponent_Conditional_9_Conditional_2_Conditional_51_Conditional_2_Template(rf, ctx) { if (rf & 1) {
397
+ i0.ɵɵelement(0, "i", 51);
396
398
  } }
397
- function ConnectionsComponent_Conditional_2_Conditional_2_Conditional_51_Template(rf, ctx) { if (rf & 1) {
398
- i0.ɵɵelementStart(0, "div", 100);
399
- i0.ɵɵconditionalCreate(1, ConnectionsComponent_Conditional_2_Conditional_2_Conditional_51_Conditional_1_Template, 1, 0, "i", 47)(2, ConnectionsComponent_Conditional_2_Conditional_2_Conditional_51_Conditional_2_Template, 1, 0, "i", 48);
399
+ function ConnectionsComponent_Conditional_9_Conditional_2_Conditional_51_Template(rf, ctx) { if (rf & 1) {
400
+ i0.ɵɵelementStart(0, "div", 103);
401
+ i0.ɵɵconditionalCreate(1, ConnectionsComponent_Conditional_9_Conditional_2_Conditional_51_Conditional_1_Template, 1, 0, "i", 50)(2, ConnectionsComponent_Conditional_9_Conditional_2_Conditional_51_Conditional_2_Template, 1, 0, "i", 51);
400
402
  i0.ɵɵelementStart(3, "span");
401
403
  i0.ɵɵtext(4);
402
404
  i0.ɵɵelementEnd()();
403
405
  } if (rf & 2) {
404
- const ctx_r1 = i0.ɵɵnextContext(3);
405
- i0.ɵɵclassProp("sync-success", ctx_r1.SyncResult.Success)("sync-failure", !ctx_r1.SyncResult.Success);
406
+ const ctx_r0 = i0.ɵɵnextContext(3);
407
+ i0.ɵɵclassProp("sync-success", ctx_r0.SyncResult.Success)("sync-failure", !ctx_r0.SyncResult.Success);
406
408
  i0.ɵɵadvance();
407
- i0.ɵɵconditional(ctx_r1.SyncResult.Success ? 1 : 2);
409
+ i0.ɵɵconditional(ctx_r0.SyncResult.Success ? 1 : 2);
408
410
  i0.ɵɵadvance(3);
409
- i0.ɵɵtextInterpolate(ctx_r1.SyncResult.Message || (ctx_r1.SyncResult.Success ? "Sync completed successfully" : "Sync failed"));
411
+ i0.ɵɵtextInterpolate(ctx_r0.SyncResult.Message || (ctx_r0.SyncResult.Success ? "Sync completed successfully" : "Sync failed"));
410
412
  } }
411
- function ConnectionsComponent_Conditional_2_Conditional_2_Conditional_52_For_13_Template(rf, ctx) { if (rf & 1) {
412
- i0.ɵɵelementStart(0, "option", 107);
413
+ function ConnectionsComponent_Conditional_9_Conditional_2_Conditional_52_For_13_Template(rf, ctx) { if (rf & 1) {
414
+ i0.ɵɵelementStart(0, "option", 110);
413
415
  i0.ɵɵtext(1);
414
416
  i0.ɵɵelementEnd();
415
417
  } if (rf & 2) {
@@ -418,33 +420,33 @@ function ConnectionsComponent_Conditional_2_Conditional_2_Conditional_52_For_13_
418
420
  i0.ɵɵadvance();
419
421
  i0.ɵɵtextInterpolate(schema_r18);
420
422
  } }
421
- function ConnectionsComponent_Conditional_2_Conditional_2_Conditional_52_Conditional_26_Template(rf, ctx) { if (rf & 1) {
422
- i0.ɵɵelement(0, "i", 41);
423
+ function ConnectionsComponent_Conditional_9_Conditional_2_Conditional_52_Conditional_26_Template(rf, ctx) { if (rf & 1) {
424
+ i0.ɵɵelement(0, "i", 44);
423
425
  i0.ɵɵtext(1, " Mapping... ");
424
426
  } }
425
- function ConnectionsComponent_Conditional_2_Conditional_2_Conditional_52_Conditional_27_Template(rf, ctx) { if (rf & 1) {
426
- i0.ɵɵelement(0, "i", 92);
427
+ function ConnectionsComponent_Conditional_9_Conditional_2_Conditional_52_Conditional_27_Template(rf, ctx) { if (rf & 1) {
428
+ i0.ɵɵelement(0, "i", 95);
427
429
  i0.ɵɵtext(1, " Auto-Map ");
428
430
  } }
429
- function ConnectionsComponent_Conditional_2_Conditional_2_Conditional_52_Conditional_30_Conditional_1_Template(rf, ctx) { if (rf & 1) {
430
- i0.ɵɵelementStart(0, "div", 121);
431
- i0.ɵɵelement(1, "i", 47);
431
+ function ConnectionsComponent_Conditional_9_Conditional_2_Conditional_52_Conditional_30_Conditional_1_Template(rf, ctx) { if (rf & 1) {
432
+ i0.ɵɵelementStart(0, "div", 124);
433
+ i0.ɵɵelement(1, "i", 50);
432
434
  i0.ɵɵtext(2);
433
435
  i0.ɵɵelementEnd();
434
436
  } if (rf & 2) {
435
- const ctx_r1 = i0.ɵɵnextContext(5);
437
+ const ctx_r0 = i0.ɵɵnextContext(5);
436
438
  i0.ɵɵadvance(2);
437
- i0.ɵɵtextInterpolate4(" Created ", ctx_r1.AutoMapResult.EntityMapsCreated, " entity map", ctx_r1.AutoMapResult.EntityMapsCreated !== 1 ? "s" : "", " with ", ctx_r1.AutoMapResult.FieldMapsCreated, " field map", ctx_r1.AutoMapResult.FieldMapsCreated !== 1 ? "s" : "", " ");
439
+ i0.ɵɵtextInterpolate4(" Created ", ctx_r0.AutoMapResult.EntityMapsCreated, " entity map", ctx_r0.AutoMapResult.EntityMapsCreated !== 1 ? "s" : "", " with ", ctx_r0.AutoMapResult.FieldMapsCreated, " field map", ctx_r0.AutoMapResult.FieldMapsCreated !== 1 ? "s" : "", " ");
438
440
  } }
439
- function ConnectionsComponent_Conditional_2_Conditional_2_Conditional_52_Conditional_30_Conditional_2_Template(rf, ctx) { if (rf & 1) {
440
- i0.ɵɵelementStart(0, "div", 121);
441
- i0.ɵɵelement(1, "i", 123);
441
+ function ConnectionsComponent_Conditional_9_Conditional_2_Conditional_52_Conditional_30_Conditional_2_Template(rf, ctx) { if (rf & 1) {
442
+ i0.ɵɵelementStart(0, "div", 124);
443
+ i0.ɵɵelement(1, "i", 126);
442
444
  i0.ɵɵtext(2, " All entities in this schema are already mapped. ");
443
445
  i0.ɵɵelementEnd();
444
446
  } }
445
- function ConnectionsComponent_Conditional_2_Conditional_2_Conditional_52_Conditional_30_Conditional_3_For_2_Template(rf, ctx) { if (rf & 1) {
446
- i0.ɵɵelementStart(0, "div", 124);
447
- i0.ɵɵelement(1, "i", 125);
447
+ function ConnectionsComponent_Conditional_9_Conditional_2_Conditional_52_Conditional_30_Conditional_3_For_2_Template(rf, ctx) { if (rf & 1) {
448
+ i0.ɵɵelementStart(0, "div", 127);
449
+ i0.ɵɵelement(1, "i", 128);
448
450
  i0.ɵɵtext(2);
449
451
  i0.ɵɵelementEnd();
450
452
  } if (rf & 2) {
@@ -452,114 +454,114 @@ function ConnectionsComponent_Conditional_2_Conditional_2_Conditional_52_Conditi
452
454
  i0.ɵɵadvance(2);
453
455
  i0.ɵɵtextInterpolate1(" ", err_r19);
454
456
  } }
455
- function ConnectionsComponent_Conditional_2_Conditional_2_Conditional_52_Conditional_30_Conditional_3_Template(rf, ctx) { if (rf & 1) {
456
- i0.ɵɵelementStart(0, "div", 122);
457
- i0.ɵɵrepeaterCreate(1, ConnectionsComponent_Conditional_2_Conditional_2_Conditional_52_Conditional_30_Conditional_3_For_2_Template, 3, 1, "div", 124, i0.ɵɵrepeaterTrackByIdentity);
457
+ function ConnectionsComponent_Conditional_9_Conditional_2_Conditional_52_Conditional_30_Conditional_3_Template(rf, ctx) { if (rf & 1) {
458
+ i0.ɵɵelementStart(0, "div", 125);
459
+ i0.ɵɵrepeaterCreate(1, ConnectionsComponent_Conditional_9_Conditional_2_Conditional_52_Conditional_30_Conditional_3_For_2_Template, 3, 1, "div", 127, i0.ɵɵrepeaterTrackByIdentity);
458
460
  i0.ɵɵelementEnd();
459
461
  } if (rf & 2) {
460
- const ctx_r1 = i0.ɵɵnextContext(5);
462
+ const ctx_r0 = i0.ɵɵnextContext(5);
461
463
  i0.ɵɵadvance();
462
- i0.ɵɵrepeater(ctx_r1.AutoMapResult.Errors);
464
+ i0.ɵɵrepeater(ctx_r0.AutoMapResult.Errors);
463
465
  } }
464
- function ConnectionsComponent_Conditional_2_Conditional_2_Conditional_52_Conditional_30_Template(rf, ctx) { if (rf & 1) {
465
- i0.ɵɵelementStart(0, "div", 120);
466
- i0.ɵɵconditionalCreate(1, ConnectionsComponent_Conditional_2_Conditional_2_Conditional_52_Conditional_30_Conditional_1_Template, 3, 4, "div", 121)(2, ConnectionsComponent_Conditional_2_Conditional_2_Conditional_52_Conditional_30_Conditional_2_Template, 3, 0, "div", 121);
467
- i0.ɵɵconditionalCreate(3, ConnectionsComponent_Conditional_2_Conditional_2_Conditional_52_Conditional_30_Conditional_3_Template, 3, 0, "div", 122);
466
+ function ConnectionsComponent_Conditional_9_Conditional_2_Conditional_52_Conditional_30_Template(rf, ctx) { if (rf & 1) {
467
+ i0.ɵɵelementStart(0, "div", 123);
468
+ i0.ɵɵconditionalCreate(1, ConnectionsComponent_Conditional_9_Conditional_2_Conditional_52_Conditional_30_Conditional_1_Template, 3, 4, "div", 124)(2, ConnectionsComponent_Conditional_9_Conditional_2_Conditional_52_Conditional_30_Conditional_2_Template, 3, 0, "div", 124);
469
+ i0.ɵɵconditionalCreate(3, ConnectionsComponent_Conditional_9_Conditional_2_Conditional_52_Conditional_30_Conditional_3_Template, 3, 0, "div", 125);
468
470
  i0.ɵɵelementEnd();
469
471
  } if (rf & 2) {
470
- const ctx_r1 = i0.ɵɵnextContext(4);
471
- i0.ɵɵclassProp("auto-map-success", ctx_r1.AutoMapResult.Errors.length === 0)("auto-map-partial", ctx_r1.AutoMapResult.Errors.length > 0 && ctx_r1.AutoMapResult.EntityMapsCreated > 0)("auto-map-failure", ctx_r1.AutoMapResult.EntityMapsCreated === 0 && ctx_r1.AutoMapResult.Errors.length > 0);
472
+ const ctx_r0 = i0.ɵɵnextContext(4);
473
+ i0.ɵɵclassProp("auto-map-success", ctx_r0.AutoMapResult.Errors.length === 0)("auto-map-partial", ctx_r0.AutoMapResult.Errors.length > 0 && ctx_r0.AutoMapResult.EntityMapsCreated > 0)("auto-map-failure", ctx_r0.AutoMapResult.EntityMapsCreated === 0 && ctx_r0.AutoMapResult.Errors.length > 0);
472
474
  i0.ɵɵadvance();
473
- i0.ɵɵconditional(ctx_r1.AutoMapResult.EntityMapsCreated > 0 ? 1 : ctx_r1.AutoMapResult.Errors.length === 0 ? 2 : -1);
475
+ i0.ɵɵconditional(ctx_r0.AutoMapResult.EntityMapsCreated > 0 ? 1 : ctx_r0.AutoMapResult.Errors.length === 0 ? 2 : -1);
474
476
  i0.ɵɵadvance(2);
475
- i0.ɵɵconditional(ctx_r1.AutoMapResult.Errors.length > 0 ? 3 : -1);
477
+ i0.ɵɵconditional(ctx_r0.AutoMapResult.Errors.length > 0 ? 3 : -1);
476
478
  } }
477
- function ConnectionsComponent_Conditional_2_Conditional_2_Conditional_52_Template(rf, ctx) { if (rf & 1) {
479
+ function ConnectionsComponent_Conditional_9_Conditional_2_Conditional_52_Template(rf, ctx) { if (rf & 1) {
478
480
  const _r17 = i0.ɵɵgetCurrentView();
479
- i0.ɵɵelementStart(0, "div", 94)(1, "div", 101);
480
- i0.ɵɵelement(2, "i", 92);
481
+ i0.ɵɵelementStart(0, "div", 97)(1, "div", 104);
482
+ i0.ɵɵelement(2, "i", 95);
481
483
  i0.ɵɵelementStart(3, "span");
482
484
  i0.ɵɵtext(4, "Auto-map all entities in a schema to this integration with 1:1 field mappings");
483
485
  i0.ɵɵelementEnd()();
484
- i0.ɵɵelementStart(5, "div", 102)(6, "div", 103)(7, "label", 104);
486
+ i0.ɵɵelementStart(5, "div", 105)(6, "div", 106)(7, "label", 107);
485
487
  i0.ɵɵtext(8, "Target Schema");
486
488
  i0.ɵɵelementEnd();
487
- i0.ɵɵelementStart(9, "select", 105);
488
- i0.ɵɵtwoWayListener("ngModelChange", function ConnectionsComponent_Conditional_2_Conditional_2_Conditional_52_Template_select_ngModelChange_9_listener($event) { i0.ɵɵrestoreView(_r17); const ctx_r1 = i0.ɵɵnextContext(3); i0.ɵɵtwoWayBindingSet(ctx_r1.AutoMapSelectedSchema, $event) || (ctx_r1.AutoMapSelectedSchema = $event); return i0.ɵɵresetView($event); });
489
- i0.ɵɵelementStart(10, "option", 106);
489
+ i0.ɵɵelementStart(9, "select", 108);
490
+ i0.ɵɵtwoWayListener("ngModelChange", function ConnectionsComponent_Conditional_9_Conditional_2_Conditional_52_Template_select_ngModelChange_9_listener($event) { i0.ɵɵrestoreView(_r17); const ctx_r0 = i0.ɵɵnextContext(3); i0.ɵɵtwoWayBindingSet(ctx_r0.AutoMapSelectedSchema, $event) || (ctx_r0.AutoMapSelectedSchema = $event); return i0.ɵɵresetView($event); });
491
+ i0.ɵɵelementStart(10, "option", 109);
490
492
  i0.ɵɵtext(11, "Select schema...");
491
493
  i0.ɵɵelementEnd();
492
- i0.ɵɵrepeaterCreate(12, ConnectionsComponent_Conditional_2_Conditional_2_Conditional_52_For_13_Template, 2, 2, "option", 107, i0.ɵɵrepeaterTrackByIdentity);
494
+ i0.ɵɵrepeaterCreate(12, ConnectionsComponent_Conditional_9_Conditional_2_Conditional_52_For_13_Template, 2, 2, "option", 110, i0.ɵɵrepeaterTrackByIdentity);
493
495
  i0.ɵɵelementEnd()();
494
- i0.ɵɵelementStart(14, "div", 108)(15, "label", 104);
496
+ i0.ɵɵelementStart(14, "div", 111)(15, "label", 107);
495
497
  i0.ɵɵtext(16, "Direction");
496
498
  i0.ɵɵelementEnd();
497
- i0.ɵɵelementStart(17, "div", 109)(18, "button", 110);
498
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_2_Conditional_2_Conditional_52_Template_button_click_18_listener() { i0.ɵɵrestoreView(_r17); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.AutoMapDirection = "Pull"); });
499
- i0.ɵɵelement(19, "i", 111);
499
+ i0.ɵɵelementStart(17, "div", 112)(18, "button", 113);
500
+ i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_9_Conditional_2_Conditional_52_Template_button_click_18_listener() { i0.ɵɵrestoreView(_r17); const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.AutoMapDirection = "Pull"); });
501
+ i0.ɵɵelement(19, "i", 114);
500
502
  i0.ɵɵelementEnd();
501
- i0.ɵɵelementStart(20, "button", 112);
502
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_2_Conditional_2_Conditional_52_Template_button_click_20_listener() { i0.ɵɵrestoreView(_r17); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.AutoMapDirection = "Bidirectional"); });
503
- i0.ɵɵelement(21, "i", 113);
503
+ i0.ɵɵelementStart(20, "button", 115);
504
+ i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_9_Conditional_2_Conditional_52_Template_button_click_20_listener() { i0.ɵɵrestoreView(_r17); const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.AutoMapDirection = "Bidirectional"); });
505
+ i0.ɵɵelement(21, "i", 116);
504
506
  i0.ɵɵelementEnd();
505
- i0.ɵɵelementStart(22, "button", 114);
506
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_2_Conditional_2_Conditional_52_Template_button_click_22_listener() { i0.ɵɵrestoreView(_r17); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.AutoMapDirection = "Push"); });
507
- i0.ɵɵelement(23, "i", 67);
507
+ i0.ɵɵelementStart(22, "button", 117);
508
+ i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_9_Conditional_2_Conditional_52_Template_button_click_22_listener() { i0.ɵɵrestoreView(_r17); const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.AutoMapDirection = "Push"); });
509
+ i0.ɵɵelement(23, "i", 70);
508
510
  i0.ɵɵelementEnd()()();
509
- i0.ɵɵelementStart(24, "div", 115)(25, "button", 116);
510
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_2_Conditional_2_Conditional_52_Template_button_click_25_listener() { i0.ɵɵrestoreView(_r17); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.RunAutoMap()); });
511
- i0.ɵɵconditionalCreate(26, ConnectionsComponent_Conditional_2_Conditional_2_Conditional_52_Conditional_26_Template, 2, 0)(27, ConnectionsComponent_Conditional_2_Conditional_2_Conditional_52_Conditional_27_Template, 2, 0);
511
+ i0.ɵɵelementStart(24, "div", 118)(25, "button", 119);
512
+ i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_9_Conditional_2_Conditional_52_Template_button_click_25_listener() { i0.ɵɵrestoreView(_r17); const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.RunAutoMap()); });
513
+ i0.ɵɵconditionalCreate(26, ConnectionsComponent_Conditional_9_Conditional_2_Conditional_52_Conditional_26_Template, 2, 0)(27, ConnectionsComponent_Conditional_9_Conditional_2_Conditional_52_Conditional_27_Template, 2, 0);
512
514
  i0.ɵɵelementEnd();
513
- i0.ɵɵelementStart(28, "button", 117);
514
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_2_Conditional_2_Conditional_52_Template_button_click_28_listener() { i0.ɵɵrestoreView(_r17); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.CloseAutoMapPanel()); });
515
- i0.ɵɵelement(29, "i", 118);
515
+ i0.ɵɵelementStart(28, "button", 120);
516
+ i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_9_Conditional_2_Conditional_52_Template_button_click_28_listener() { i0.ɵɵrestoreView(_r17); const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.CloseAutoMapPanel()); });
517
+ i0.ɵɵelement(29, "i", 121);
516
518
  i0.ɵɵelementEnd()()();
517
- i0.ɵɵconditionalCreate(30, ConnectionsComponent_Conditional_2_Conditional_2_Conditional_52_Conditional_30_Template, 4, 8, "div", 119);
519
+ i0.ɵɵconditionalCreate(30, ConnectionsComponent_Conditional_9_Conditional_2_Conditional_52_Conditional_30_Template, 4, 8, "div", 122);
518
520
  i0.ɵɵelementEnd();
519
521
  } if (rf & 2) {
520
- const ctx_r1 = i0.ɵɵnextContext(3);
522
+ const ctx_r0 = i0.ɵɵnextContext(3);
521
523
  i0.ɵɵadvance(9);
522
- i0.ɵɵtwoWayProperty("ngModel", ctx_r1.AutoMapSelectedSchema);
524
+ i0.ɵɵtwoWayProperty("ngModel", ctx_r0.AutoMapSelectedSchema);
523
525
  i0.ɵɵadvance();
524
526
  i0.ɵɵproperty("ngValue", "");
525
527
  i0.ɵɵadvance(2);
526
- i0.ɵɵrepeater(ctx_r1.AutoMapSchemas);
528
+ i0.ɵɵrepeater(ctx_r0.AutoMapSchemas);
527
529
  i0.ɵɵadvance(6);
528
- i0.ɵɵclassProp("active", ctx_r1.AutoMapDirection === "Pull");
530
+ i0.ɵɵclassProp("active", ctx_r0.AutoMapDirection === "Pull");
529
531
  i0.ɵɵadvance(2);
530
- i0.ɵɵclassProp("active", ctx_r1.AutoMapDirection === "Bidirectional");
532
+ i0.ɵɵclassProp("active", ctx_r0.AutoMapDirection === "Bidirectional");
531
533
  i0.ɵɵadvance(2);
532
- i0.ɵɵclassProp("active", ctx_r1.AutoMapDirection === "Push");
534
+ i0.ɵɵclassProp("active", ctx_r0.AutoMapDirection === "Push");
533
535
  i0.ɵɵadvance(3);
534
- i0.ɵɵproperty("disabled", !ctx_r1.CanAutoMap);
536
+ i0.ɵɵproperty("disabled", !ctx_r0.CanAutoMap);
535
537
  i0.ɵɵadvance();
536
- i0.ɵɵconditional(ctx_r1.IsAutoMapping ? 26 : 27);
538
+ i0.ɵɵconditional(ctx_r0.IsAutoMapping ? 26 : 27);
537
539
  i0.ɵɵadvance(4);
538
- i0.ɵɵconditional(ctx_r1.AutoMapResult ? 30 : -1);
540
+ i0.ɵɵconditional(ctx_r0.AutoMapResult ? 30 : -1);
539
541
  } }
540
- function ConnectionsComponent_Conditional_2_Conditional_2_Conditional_53_Conditional_8_Template(rf, ctx) { if (rf & 1) {
541
- i0.ɵɵelement(0, "i", 41);
542
+ function ConnectionsComponent_Conditional_9_Conditional_2_Conditional_53_Conditional_8_Template(rf, ctx) { if (rf & 1) {
543
+ i0.ɵɵelement(0, "i", 44);
542
544
  i0.ɵɵtext(1, " Creating... ");
543
545
  } }
544
- function ConnectionsComponent_Conditional_2_Conditional_2_Conditional_53_Conditional_9_Template(rf, ctx) { if (rf & 1) {
545
- i0.ɵɵelement(0, "i", 90);
546
+ function ConnectionsComponent_Conditional_9_Conditional_2_Conditional_53_Conditional_9_Template(rf, ctx) { if (rf & 1) {
547
+ i0.ɵɵelement(0, "i", 93);
546
548
  i0.ɵɵtext(1);
547
549
  } if (rf & 2) {
548
- const ctx_r1 = i0.ɵɵnextContext(4);
550
+ const ctx_r0 = i0.ɵɵnextContext(4);
549
551
  i0.ɵɵadvance();
550
- i0.ɵɵtextInterpolate2(" Create ", ctx_r1.CreateTablesSelectedCount, " Table", ctx_r1.CreateTablesSelectedCount !== 1 ? "s" : "", " ");
552
+ i0.ɵɵtextInterpolate2(" Create ", ctx_r0.CreateTablesSelectedCount, " Table", ctx_r0.CreateTablesSelectedCount !== 1 ? "s" : "", " ");
551
553
  } }
552
- function ConnectionsComponent_Conditional_2_Conditional_2_Conditional_53_Conditional_12_Template(rf, ctx) { if (rf & 1) {
553
- i0.ɵɵelement(0, "mj-loading", 126);
554
+ function ConnectionsComponent_Conditional_9_Conditional_2_Conditional_53_Conditional_12_Template(rf, ctx) { if (rf & 1) {
555
+ i0.ɵɵelement(0, "mj-loading", 129);
554
556
  } }
555
- function ConnectionsComponent_Conditional_2_Conditional_2_Conditional_53_Conditional_13_Template(rf, ctx) { if (rf & 1) {
556
- i0.ɵɵelementStart(0, "div", 127);
557
- i0.ɵɵelement(1, "i", 123);
557
+ function ConnectionsComponent_Conditional_9_Conditional_2_Conditional_53_Conditional_13_Template(rf, ctx) { if (rf & 1) {
558
+ i0.ɵɵelementStart(0, "div", 130);
559
+ i0.ɵɵelement(1, "i", 126);
558
560
  i0.ɵɵtext(2, " No source objects available from this connector. ");
559
561
  i0.ɵɵelementEnd();
560
562
  } }
561
- function ConnectionsComponent_Conditional_2_Conditional_2_Conditional_53_Conditional_14_For_9_Conditional_4_Template(rf, ctx) { if (rf & 1) {
562
- i0.ɵɵelementStart(0, "span", 136);
563
+ function ConnectionsComponent_Conditional_9_Conditional_2_Conditional_53_Conditional_14_For_9_Conditional_4_Template(rf, ctx) { if (rf & 1) {
564
+ i0.ɵɵelementStart(0, "span", 139);
563
565
  i0.ɵɵtext(1);
564
566
  i0.ɵɵelementEnd();
565
567
  } if (rf & 2) {
@@ -567,27 +569,27 @@ function ConnectionsComponent_Conditional_2_Conditional_2_Conditional_53_Conditi
567
569
  i0.ɵɵadvance();
568
570
  i0.ɵɵtextInterpolate(obj_r23.Name);
569
571
  } }
570
- function ConnectionsComponent_Conditional_2_Conditional_2_Conditional_53_Conditional_14_For_9_Conditional_5_Template(rf, ctx) { if (rf & 1) {
571
- i0.ɵɵelementStart(0, "span", 137);
572
+ function ConnectionsComponent_Conditional_9_Conditional_2_Conditional_53_Conditional_14_For_9_Conditional_5_Template(rf, ctx) { if (rf & 1) {
573
+ i0.ɵɵelementStart(0, "span", 140);
572
574
  i0.ɵɵtext(1, "Custom");
573
575
  i0.ɵɵelementEnd();
574
576
  } }
575
- function ConnectionsComponent_Conditional_2_Conditional_2_Conditional_53_Conditional_14_For_9_Conditional_6_Template(rf, ctx) { if (rf & 1) {
576
- i0.ɵɵelementStart(0, "span", 138);
577
+ function ConnectionsComponent_Conditional_9_Conditional_2_Conditional_53_Conditional_14_For_9_Conditional_6_Template(rf, ctx) { if (rf & 1) {
578
+ i0.ɵɵelementStart(0, "span", 141);
577
579
  i0.ɵɵtext(1, "Registered");
578
580
  i0.ɵɵelementEnd();
579
581
  } }
580
- function ConnectionsComponent_Conditional_2_Conditional_2_Conditional_53_Conditional_14_For_9_Template(rf, ctx) { if (rf & 1) {
582
+ function ConnectionsComponent_Conditional_9_Conditional_2_Conditional_53_Conditional_14_For_9_Template(rf, ctx) { if (rf & 1) {
581
583
  const _r22 = i0.ɵɵgetCurrentView();
582
- i0.ɵɵelementStart(0, "label", 133)(1, "input", 135);
583
- i0.ɵɵtwoWayListener("ngModelChange", function ConnectionsComponent_Conditional_2_Conditional_2_Conditional_53_Conditional_14_For_9_Template_input_ngModelChange_1_listener($event) { const obj_r23 = i0.ɵɵrestoreView(_r22).$implicit; i0.ɵɵtwoWayBindingSet(obj_r23.Selected, $event) || (obj_r23.Selected = $event); return i0.ɵɵresetView($event); });
584
+ i0.ɵɵelementStart(0, "label", 136)(1, "input", 138);
585
+ i0.ɵɵtwoWayListener("ngModelChange", function ConnectionsComponent_Conditional_9_Conditional_2_Conditional_53_Conditional_14_For_9_Template_input_ngModelChange_1_listener($event) { const obj_r23 = i0.ɵɵrestoreView(_r22).$implicit; i0.ɵɵtwoWayBindingSet(obj_r23.Selected, $event) || (obj_r23.Selected = $event); return i0.ɵɵresetView($event); });
584
586
  i0.ɵɵelementEnd();
585
587
  i0.ɵɵelementStart(2, "span");
586
588
  i0.ɵɵtext(3);
587
589
  i0.ɵɵelementEnd();
588
- i0.ɵɵconditionalCreate(4, ConnectionsComponent_Conditional_2_Conditional_2_Conditional_53_Conditional_14_For_9_Conditional_4_Template, 2, 1, "span", 136);
589
- i0.ɵɵconditionalCreate(5, ConnectionsComponent_Conditional_2_Conditional_2_Conditional_53_Conditional_14_For_9_Conditional_5_Template, 2, 0, "span", 137);
590
- i0.ɵɵconditionalCreate(6, ConnectionsComponent_Conditional_2_Conditional_2_Conditional_53_Conditional_14_For_9_Conditional_6_Template, 2, 0, "span", 138);
590
+ i0.ɵɵconditionalCreate(4, ConnectionsComponent_Conditional_9_Conditional_2_Conditional_53_Conditional_14_For_9_Conditional_4_Template, 2, 1, "span", 139);
591
+ i0.ɵɵconditionalCreate(5, ConnectionsComponent_Conditional_9_Conditional_2_Conditional_53_Conditional_14_For_9_Conditional_5_Template, 2, 0, "span", 140);
592
+ i0.ɵɵconditionalCreate(6, ConnectionsComponent_Conditional_9_Conditional_2_Conditional_53_Conditional_14_For_9_Conditional_6_Template, 2, 0, "span", 141);
591
593
  i0.ɵɵelementEnd();
592
594
  } if (rf & 2) {
593
595
  const obj_r23 = ctx.$implicit;
@@ -602,92 +604,92 @@ function ConnectionsComponent_Conditional_2_Conditional_2_Conditional_53_Conditi
602
604
  i0.ɵɵadvance();
603
605
  i0.ɵɵconditional(obj_r23.AlreadyPersisted ? 6 : -1);
604
606
  } }
605
- function ConnectionsComponent_Conditional_2_Conditional_2_Conditional_53_Conditional_14_Template(rf, ctx) { if (rf & 1) {
607
+ function ConnectionsComponent_Conditional_9_Conditional_2_Conditional_53_Conditional_14_Template(rf, ctx) { if (rf & 1) {
606
608
  const _r21 = i0.ɵɵgetCurrentView();
607
- i0.ɵɵelementStart(0, "div", 129)(1, "input", 130);
608
- i0.ɵɵtwoWayListener("ngModelChange", function ConnectionsComponent_Conditional_2_Conditional_2_Conditional_53_Conditional_14_Template_input_ngModelChange_1_listener($event) { i0.ɵɵrestoreView(_r21); const ctx_r1 = i0.ɵɵnextContext(4); i0.ɵɵtwoWayBindingSet(ctx_r1.CreateTablesSearch, $event) || (ctx_r1.CreateTablesSearch = $event); return i0.ɵɵresetView($event); });
609
+ i0.ɵɵelementStart(0, "div", 132)(1, "input", 133);
610
+ i0.ɵɵtwoWayListener("ngModelChange", function ConnectionsComponent_Conditional_9_Conditional_2_Conditional_53_Conditional_14_Template_input_ngModelChange_1_listener($event) { i0.ɵɵrestoreView(_r21); const ctx_r0 = i0.ɵɵnextContext(4); i0.ɵɵtwoWayBindingSet(ctx_r0.CreateTablesSearch, $event) || (ctx_r0.CreateTablesSearch = $event); return i0.ɵɵresetView($event); });
609
611
  i0.ɵɵelementEnd()();
610
- i0.ɵɵelementStart(2, "div", 131)(3, "div", 132)(4, "label", 133)(5, "input", 134);
611
- i0.ɵɵlistener("change", function ConnectionsComponent_Conditional_2_Conditional_2_Conditional_53_Conditional_14_Template_input_change_5_listener($event) { i0.ɵɵrestoreView(_r21); const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.ToggleAllCreateTablesObjects($event.target.checked)); });
612
+ i0.ɵɵelementStart(2, "div", 134)(3, "div", 135)(4, "label", 136)(5, "input", 137);
613
+ i0.ɵɵlistener("change", function ConnectionsComponent_Conditional_9_Conditional_2_Conditional_53_Conditional_14_Template_input_change_5_listener($event) { i0.ɵɵrestoreView(_r21); const ctx_r0 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r0.ToggleAllCreateTablesObjects($event.target.checked)); });
612
614
  i0.ɵɵelementEnd();
613
615
  i0.ɵɵelementStart(6, "span");
614
616
  i0.ɵɵtext(7);
615
617
  i0.ɵɵelementEnd()()();
616
- i0.ɵɵrepeaterCreate(8, ConnectionsComponent_Conditional_2_Conditional_2_Conditional_53_Conditional_14_For_9_Template, 7, 5, "label", 133, _forTrack1);
618
+ i0.ɵɵrepeaterCreate(8, ConnectionsComponent_Conditional_9_Conditional_2_Conditional_53_Conditional_14_For_9_Template, 7, 5, "label", 136, _forTrack1);
617
619
  i0.ɵɵelementEnd();
618
620
  } if (rf & 2) {
619
- const ctx_r1 = i0.ɵɵnextContext(4);
621
+ const ctx_r0 = i0.ɵɵnextContext(4);
620
622
  i0.ɵɵadvance();
621
- i0.ɵɵtwoWayProperty("ngModel", ctx_r1.CreateTablesSearch);
623
+ i0.ɵɵtwoWayProperty("ngModel", ctx_r0.CreateTablesSearch);
622
624
  i0.ɵɵadvance(4);
623
- i0.ɵɵproperty("checked", ctx_r1.FilteredCreateTablesObjects.length > 0 && ctx_r1.CreateTablesSelectedCount === ctx_r1.FilteredCreateTablesObjects.length);
625
+ i0.ɵɵproperty("checked", ctx_r0.FilteredCreateTablesObjects.length > 0 && ctx_r0.CreateTablesSelectedCount === ctx_r0.FilteredCreateTablesObjects.length);
624
626
  i0.ɵɵadvance(2);
625
- i0.ɵɵtextInterpolate2("Select All (", ctx_r1.FilteredCreateTablesObjects.length, " of ", ctx_r1.CreateTablesObjects.length, ")");
627
+ i0.ɵɵtextInterpolate2("Select All (", ctx_r0.FilteredCreateTablesObjects.length, " of ", ctx_r0.CreateTablesObjects.length, ")");
626
628
  i0.ɵɵadvance();
627
- i0.ɵɵrepeater(ctx_r1.FilteredCreateTablesObjects);
629
+ i0.ɵɵrepeater(ctx_r0.FilteredCreateTablesObjects);
628
630
  } }
629
- function ConnectionsComponent_Conditional_2_Conditional_2_Conditional_53_Conditional_15_Conditional_1_Template(rf, ctx) { if (rf & 1) {
630
- i0.ɵɵelement(0, "i", 47);
631
+ function ConnectionsComponent_Conditional_9_Conditional_2_Conditional_53_Conditional_15_Conditional_1_Template(rf, ctx) { if (rf & 1) {
632
+ i0.ɵɵelement(0, "i", 50);
631
633
  } }
632
- function ConnectionsComponent_Conditional_2_Conditional_2_Conditional_53_Conditional_15_Conditional_2_Template(rf, ctx) { if (rf & 1) {
633
- i0.ɵɵelement(0, "i", 48);
634
+ function ConnectionsComponent_Conditional_9_Conditional_2_Conditional_53_Conditional_15_Conditional_2_Template(rf, ctx) { if (rf & 1) {
635
+ i0.ɵɵelement(0, "i", 51);
634
636
  } }
635
- function ConnectionsComponent_Conditional_2_Conditional_2_Conditional_53_Conditional_15_Template(rf, ctx) { if (rf & 1) {
636
- i0.ɵɵelementStart(0, "div", 120);
637
- i0.ɵɵconditionalCreate(1, ConnectionsComponent_Conditional_2_Conditional_2_Conditional_53_Conditional_15_Conditional_1_Template, 1, 0, "i", 47)(2, ConnectionsComponent_Conditional_2_Conditional_2_Conditional_53_Conditional_15_Conditional_2_Template, 1, 0, "i", 48);
637
+ function ConnectionsComponent_Conditional_9_Conditional_2_Conditional_53_Conditional_15_Template(rf, ctx) { if (rf & 1) {
638
+ i0.ɵɵelementStart(0, "div", 123);
639
+ i0.ɵɵconditionalCreate(1, ConnectionsComponent_Conditional_9_Conditional_2_Conditional_53_Conditional_15_Conditional_1_Template, 1, 0, "i", 50)(2, ConnectionsComponent_Conditional_9_Conditional_2_Conditional_53_Conditional_15_Conditional_2_Template, 1, 0, "i", 51);
638
640
  i0.ɵɵelementStart(3, "span");
639
641
  i0.ɵɵtext(4);
640
642
  i0.ɵɵelementEnd()();
641
643
  } if (rf & 2) {
642
- const ctx_r1 = i0.ɵɵnextContext(4);
643
- i0.ɵɵclassProp("auto-map-success", ctx_r1.CreateTablesResult.Success)("auto-map-failure", !ctx_r1.CreateTablesResult.Success);
644
+ const ctx_r0 = i0.ɵɵnextContext(4);
645
+ i0.ɵɵclassProp("auto-map-success", ctx_r0.CreateTablesResult.Success)("auto-map-failure", !ctx_r0.CreateTablesResult.Success);
644
646
  i0.ɵɵadvance();
645
- i0.ɵɵconditional(ctx_r1.CreateTablesResult.Success ? 1 : 2);
647
+ i0.ɵɵconditional(ctx_r0.CreateTablesResult.Success ? 1 : 2);
646
648
  i0.ɵɵadvance(3);
647
- i0.ɵɵtextInterpolate(ctx_r1.CreateTablesResult.Message);
649
+ i0.ɵɵtextInterpolate(ctx_r0.CreateTablesResult.Message);
648
650
  } }
649
- function ConnectionsComponent_Conditional_2_Conditional_2_Conditional_53_Template(rf, ctx) { if (rf & 1) {
651
+ function ConnectionsComponent_Conditional_9_Conditional_2_Conditional_53_Template(rf, ctx) { if (rf & 1) {
650
652
  const _r20 = i0.ɵɵgetCurrentView();
651
- i0.ɵɵelementStart(0, "div", 94)(1, "div", 101);
652
- i0.ɵɵelement(2, "i", 90);
653
+ i0.ɵɵelementStart(0, "div", 97)(1, "div", 104);
654
+ i0.ɵɵelement(2, "i", 93);
653
655
  i0.ɵɵelementStart(3, "span");
654
656
  i0.ɵɵtext(4, "Select source objects to create as entity tables in your database");
655
657
  i0.ɵɵelementEnd()();
656
- i0.ɵɵelementStart(5, "div", 102)(6, "div", 115)(7, "button", 116);
657
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_2_Conditional_2_Conditional_53_Template_button_click_7_listener() { i0.ɵɵrestoreView(_r20); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.RunCreateTables()); });
658
- i0.ɵɵconditionalCreate(8, ConnectionsComponent_Conditional_2_Conditional_2_Conditional_53_Conditional_8_Template, 2, 0)(9, ConnectionsComponent_Conditional_2_Conditional_2_Conditional_53_Conditional_9_Template, 2, 2);
658
+ i0.ɵɵelementStart(5, "div", 105)(6, "div", 118)(7, "button", 119);
659
+ i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_9_Conditional_2_Conditional_53_Template_button_click_7_listener() { i0.ɵɵrestoreView(_r20); const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.RunCreateTables()); });
660
+ i0.ɵɵconditionalCreate(8, ConnectionsComponent_Conditional_9_Conditional_2_Conditional_53_Conditional_8_Template, 2, 0)(9, ConnectionsComponent_Conditional_9_Conditional_2_Conditional_53_Conditional_9_Template, 2, 2);
659
661
  i0.ɵɵelementEnd();
660
- i0.ɵɵelementStart(10, "button", 117);
661
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_2_Conditional_2_Conditional_53_Template_button_click_10_listener() { i0.ɵɵrestoreView(_r20); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.CloseCreateTablesPanel()); });
662
- i0.ɵɵelement(11, "i", 118);
662
+ i0.ɵɵelementStart(10, "button", 120);
663
+ i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_9_Conditional_2_Conditional_53_Template_button_click_10_listener() { i0.ɵɵrestoreView(_r20); const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.CloseCreateTablesPanel()); });
664
+ i0.ɵɵelement(11, "i", 121);
663
665
  i0.ɵɵelementEnd()()();
664
- i0.ɵɵconditionalCreate(12, ConnectionsComponent_Conditional_2_Conditional_2_Conditional_53_Conditional_12_Template, 1, 0, "mj-loading", 126)(13, ConnectionsComponent_Conditional_2_Conditional_2_Conditional_53_Conditional_13_Template, 3, 0, "div", 127)(14, ConnectionsComponent_Conditional_2_Conditional_2_Conditional_53_Conditional_14_Template, 10, 4);
665
- i0.ɵɵconditionalCreate(15, ConnectionsComponent_Conditional_2_Conditional_2_Conditional_53_Conditional_15_Template, 5, 6, "div", 128);
666
+ i0.ɵɵconditionalCreate(12, ConnectionsComponent_Conditional_9_Conditional_2_Conditional_53_Conditional_12_Template, 1, 0, "mj-loading", 129)(13, ConnectionsComponent_Conditional_9_Conditional_2_Conditional_53_Conditional_13_Template, 3, 0, "div", 130)(14, ConnectionsComponent_Conditional_9_Conditional_2_Conditional_53_Conditional_14_Template, 10, 4);
667
+ i0.ɵɵconditionalCreate(15, ConnectionsComponent_Conditional_9_Conditional_2_Conditional_53_Conditional_15_Template, 5, 6, "div", 131);
666
668
  i0.ɵɵelementEnd();
667
669
  } if (rf & 2) {
668
- const ctx_r1 = i0.ɵɵnextContext(3);
670
+ const ctx_r0 = i0.ɵɵnextContext(3);
669
671
  i0.ɵɵadvance(7);
670
- i0.ɵɵproperty("disabled", !ctx_r1.CanCreateTables);
672
+ i0.ɵɵproperty("disabled", !ctx_r0.CanCreateTables);
671
673
  i0.ɵɵadvance();
672
- i0.ɵɵconditional(ctx_r1.IsCreatingTables ? 8 : 9);
674
+ i0.ɵɵconditional(ctx_r0.IsCreatingTables ? 8 : 9);
673
675
  i0.ɵɵadvance(4);
674
- i0.ɵɵconditional(ctx_r1.IsLoadingCreateTablesObjects ? 12 : ctx_r1.CreateTablesObjects.length === 0 ? 13 : 14);
676
+ i0.ɵɵconditional(ctx_r0.IsLoadingCreateTablesObjects ? 12 : ctx_r0.CreateTablesObjects.length === 0 ? 13 : 14);
675
677
  i0.ɵɵadvance(3);
676
- i0.ɵɵconditional(ctx_r1.CreateTablesResult ? 15 : -1);
678
+ i0.ɵɵconditional(ctx_r0.CreateTablesResult ? 15 : -1);
677
679
  } }
678
- function ConnectionsComponent_Conditional_2_Conditional_2_Conditional_54_Conditional_5_Template(rf, ctx) { if (rf & 1) {
679
- i0.ɵɵelementStart(0, "div", 139);
680
- i0.ɵɵelement(1, "i", 41);
680
+ function ConnectionsComponent_Conditional_9_Conditional_2_Conditional_54_Conditional_5_Template(rf, ctx) { if (rf & 1) {
681
+ i0.ɵɵelementStart(0, "div", 142);
682
+ i0.ɵɵelement(1, "i", 44);
681
683
  i0.ɵɵtext(2, " Loading...");
682
684
  i0.ɵɵelementEnd();
683
685
  } }
684
- function ConnectionsComponent_Conditional_2_Conditional_2_Conditional_54_Conditional_6_Template(rf, ctx) { if (rf & 1) {
685
- i0.ɵɵelementStart(0, "div", 140);
686
+ function ConnectionsComponent_Conditional_9_Conditional_2_Conditional_54_Conditional_6_Template(rf, ctx) { if (rf & 1) {
687
+ i0.ɵɵelementStart(0, "div", 143);
686
688
  i0.ɵɵtext(1, "No source objects found in metadata");
687
689
  i0.ɵɵelementEnd();
688
690
  } }
689
- function ConnectionsComponent_Conditional_2_Conditional_2_Conditional_54_Conditional_7_For_4_Template(rf, ctx) { if (rf & 1) {
690
- i0.ɵɵelementStart(0, "option", 107);
691
+ function ConnectionsComponent_Conditional_9_Conditional_2_Conditional_54_Conditional_7_For_4_Template(rf, ctx) { if (rf & 1) {
692
+ i0.ɵɵelementStart(0, "option", 110);
691
693
  i0.ɵɵtext(1);
692
694
  i0.ɵɵelementEnd();
693
695
  } if (rf & 2) {
@@ -696,148 +698,148 @@ function ConnectionsComponent_Conditional_2_Conditional_2_Conditional_54_Conditi
696
698
  i0.ɵɵadvance();
697
699
  i0.ɵɵtextInterpolate(obj_r26.Label || obj_r26.Name);
698
700
  } }
699
- function ConnectionsComponent_Conditional_2_Conditional_2_Conditional_54_Conditional_7_Template(rf, ctx) { if (rf & 1) {
701
+ function ConnectionsComponent_Conditional_9_Conditional_2_Conditional_54_Conditional_7_Template(rf, ctx) { if (rf & 1) {
700
702
  const _r25 = i0.ɵɵgetCurrentView();
701
- i0.ɵɵelementStart(0, "select", 105);
702
- i0.ɵɵtwoWayListener("ngModelChange", function ConnectionsComponent_Conditional_2_Conditional_2_Conditional_54_Conditional_7_Template_select_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r25); const ctx_r1 = i0.ɵɵnextContext(4); i0.ɵɵtwoWayBindingSet(ctx_r1.AddMapSourceObjectName, $event) || (ctx_r1.AddMapSourceObjectName = $event); return i0.ɵɵresetView($event); });
703
- i0.ɵɵelementStart(1, "option", 106);
703
+ i0.ɵɵelementStart(0, "select", 108);
704
+ i0.ɵɵtwoWayListener("ngModelChange", function ConnectionsComponent_Conditional_9_Conditional_2_Conditional_54_Conditional_7_Template_select_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r25); const ctx_r0 = i0.ɵɵnextContext(4); i0.ɵɵtwoWayBindingSet(ctx_r0.AddMapSourceObjectName, $event) || (ctx_r0.AddMapSourceObjectName = $event); return i0.ɵɵresetView($event); });
705
+ i0.ɵɵelementStart(1, "option", 109);
704
706
  i0.ɵɵtext(2, "Select source object...");
705
707
  i0.ɵɵelementEnd();
706
- i0.ɵɵrepeaterCreate(3, ConnectionsComponent_Conditional_2_Conditional_2_Conditional_54_Conditional_7_For_4_Template, 2, 2, "option", 107, _forTrack1);
708
+ i0.ɵɵrepeaterCreate(3, ConnectionsComponent_Conditional_9_Conditional_2_Conditional_54_Conditional_7_For_4_Template, 2, 2, "option", 110, _forTrack1);
707
709
  i0.ɵɵelementEnd();
708
710
  } if (rf & 2) {
709
- const ctx_r1 = i0.ɵɵnextContext(4);
710
- i0.ɵɵtwoWayProperty("ngModel", ctx_r1.AddMapSourceObjectName);
711
+ const ctx_r0 = i0.ɵɵnextContext(4);
712
+ i0.ɵɵtwoWayProperty("ngModel", ctx_r0.AddMapSourceObjectName);
711
713
  i0.ɵɵadvance();
712
714
  i0.ɵɵproperty("ngValue", "");
713
715
  i0.ɵɵadvance(2);
714
- i0.ɵɵrepeater(ctx_r1.AvailableSourceObjects);
716
+ i0.ɵɵrepeater(ctx_r0.AvailableSourceObjects);
715
717
  } }
716
- function ConnectionsComponent_Conditional_2_Conditional_2_Conditional_54_Conditional_29_Template(rf, ctx) { if (rf & 1) {
717
- i0.ɵɵelement(0, "i", 41);
718
+ function ConnectionsComponent_Conditional_9_Conditional_2_Conditional_54_Conditional_29_Template(rf, ctx) { if (rf & 1) {
719
+ i0.ɵɵelement(0, "i", 44);
718
720
  } }
719
- function ConnectionsComponent_Conditional_2_Conditional_2_Conditional_54_Conditional_30_Template(rf, ctx) { if (rf & 1) {
720
- i0.ɵɵelement(0, "i", 146);
721
+ function ConnectionsComponent_Conditional_9_Conditional_2_Conditional_54_Conditional_30_Template(rf, ctx) { if (rf & 1) {
722
+ i0.ɵɵelement(0, "i", 149);
721
723
  i0.ɵɵtext(1, " Add ");
722
724
  } }
723
- function ConnectionsComponent_Conditional_2_Conditional_2_Conditional_54_Template(rf, ctx) { if (rf & 1) {
725
+ function ConnectionsComponent_Conditional_9_Conditional_2_Conditional_54_Template(rf, ctx) { if (rf & 1) {
724
726
  const _r24 = i0.ɵɵgetCurrentView();
725
- i0.ɵɵelementStart(0, "div", 94)(1, "div", 102)(2, "div", 103)(3, "label", 104);
727
+ i0.ɵɵelementStart(0, "div", 97)(1, "div", 105)(2, "div", 106)(3, "label", 107);
726
728
  i0.ɵɵtext(4, "Source Object");
727
729
  i0.ɵɵelementEnd();
728
- i0.ɵɵconditionalCreate(5, ConnectionsComponent_Conditional_2_Conditional_2_Conditional_54_Conditional_5_Template, 3, 0, "div", 139)(6, ConnectionsComponent_Conditional_2_Conditional_2_Conditional_54_Conditional_6_Template, 2, 0, "div", 140)(7, ConnectionsComponent_Conditional_2_Conditional_2_Conditional_54_Conditional_7_Template, 5, 2, "select", 141);
730
+ i0.ɵɵconditionalCreate(5, ConnectionsComponent_Conditional_9_Conditional_2_Conditional_54_Conditional_5_Template, 3, 0, "div", 142)(6, ConnectionsComponent_Conditional_9_Conditional_2_Conditional_54_Conditional_6_Template, 2, 0, "div", 143)(7, ConnectionsComponent_Conditional_9_Conditional_2_Conditional_54_Conditional_7_Template, 5, 2, "select", 144);
729
731
  i0.ɵɵelementEnd();
730
- i0.ɵɵelementStart(8, "div", 108)(9, "label", 104);
732
+ i0.ɵɵelementStart(8, "div", 111)(9, "label", 107);
731
733
  i0.ɵɵtext(10, "Direction");
732
734
  i0.ɵɵelementEnd();
733
- i0.ɵɵelementStart(11, "div", 109)(12, "button", 110);
734
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_2_Conditional_2_Conditional_54_Template_button_click_12_listener() { i0.ɵɵrestoreView(_r24); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.AddMapDirection = "Pull"); });
735
- i0.ɵɵelement(13, "i", 111);
735
+ i0.ɵɵelementStart(11, "div", 112)(12, "button", 113);
736
+ i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_9_Conditional_2_Conditional_54_Template_button_click_12_listener() { i0.ɵɵrestoreView(_r24); const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.AddMapDirection = "Pull"); });
737
+ i0.ɵɵelement(13, "i", 114);
736
738
  i0.ɵɵelementEnd();
737
- i0.ɵɵelementStart(14, "button", 112);
738
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_2_Conditional_2_Conditional_54_Template_button_click_14_listener() { i0.ɵɵrestoreView(_r24); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.AddMapDirection = "Bidirectional"); });
739
- i0.ɵɵelement(15, "i", 113);
739
+ i0.ɵɵelementStart(14, "button", 115);
740
+ i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_9_Conditional_2_Conditional_54_Template_button_click_14_listener() { i0.ɵɵrestoreView(_r24); const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.AddMapDirection = "Bidirectional"); });
741
+ i0.ɵɵelement(15, "i", 116);
740
742
  i0.ɵɵelementEnd();
741
- i0.ɵɵelementStart(16, "button", 114);
742
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_2_Conditional_2_Conditional_54_Template_button_click_16_listener() { i0.ɵɵrestoreView(_r24); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.AddMapDirection = "Push"); });
743
- i0.ɵɵelement(17, "i", 67);
743
+ i0.ɵɵelementStart(16, "button", 117);
744
+ i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_9_Conditional_2_Conditional_54_Template_button_click_16_listener() { i0.ɵɵrestoreView(_r24); const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.AddMapDirection = "Push"); });
745
+ i0.ɵɵelement(17, "i", 70);
744
746
  i0.ɵɵelementEnd()()();
745
- i0.ɵɵelementStart(18, "div", 142)(19, "label", 104);
747
+ i0.ɵɵelementStart(18, "div", 145)(19, "label", 107);
746
748
  i0.ɵɵtext(20, "MJ Entity");
747
749
  i0.ɵɵelementEnd();
748
- i0.ɵɵelementStart(21, "div", 143)(22, "mj-tree-dropdown", 144, 0);
749
- i0.ɵɵlistener("SelectionChange", function ConnectionsComponent_Conditional_2_Conditional_2_Conditional_54_Template_mj_tree_dropdown_SelectionChange_22_listener($event) { i0.ɵɵrestoreView(_r24); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.OnEntityTreeSelection($event)); });
750
+ i0.ɵɵelementStart(21, "div", 146)(22, "mj-tree-dropdown", 147, 0);
751
+ i0.ɵɵlistener("SelectionChange", function ConnectionsComponent_Conditional_9_Conditional_2_Conditional_54_Template_mj_tree_dropdown_SelectionChange_22_listener($event) { i0.ɵɵrestoreView(_r24); const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.OnEntityTreeSelection($event)); });
750
752
  i0.ɵɵelementEnd();
751
- i0.ɵɵelementStart(24, "button", 145);
752
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_2_Conditional_2_Conditional_54_Template_button_click_24_listener() { i0.ɵɵrestoreView(_r24); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.OpenNewEntityDialog()); });
753
- i0.ɵɵelement(25, "i", 12);
753
+ i0.ɵɵelementStart(24, "button", 148);
754
+ i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_9_Conditional_2_Conditional_54_Template_button_click_24_listener() { i0.ɵɵrestoreView(_r24); const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.OpenNewEntityDialog()); });
755
+ i0.ɵɵelement(25, "i", 15);
754
756
  i0.ɵɵtext(26, " New ");
755
757
  i0.ɵɵelementEnd()()();
756
- i0.ɵɵelementStart(27, "div", 115)(28, "button", 116);
757
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_2_Conditional_2_Conditional_54_Template_button_click_28_listener() { i0.ɵɵrestoreView(_r24); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.SaveAddMap()); });
758
- i0.ɵɵconditionalCreate(29, ConnectionsComponent_Conditional_2_Conditional_2_Conditional_54_Conditional_29_Template, 1, 0, "i", 41)(30, ConnectionsComponent_Conditional_2_Conditional_2_Conditional_54_Conditional_30_Template, 2, 0);
758
+ i0.ɵɵelementStart(27, "div", 118)(28, "button", 119);
759
+ i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_9_Conditional_2_Conditional_54_Template_button_click_28_listener() { i0.ɵɵrestoreView(_r24); const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.SaveAddMap()); });
760
+ i0.ɵɵconditionalCreate(29, ConnectionsComponent_Conditional_9_Conditional_2_Conditional_54_Conditional_29_Template, 1, 0, "i", 44)(30, ConnectionsComponent_Conditional_9_Conditional_2_Conditional_54_Conditional_30_Template, 2, 0);
759
761
  i0.ɵɵelementEnd();
760
- i0.ɵɵelementStart(31, "button", 117);
761
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_2_Conditional_2_Conditional_54_Template_button_click_31_listener() { i0.ɵɵrestoreView(_r24); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.CloseAddMapPanel()); });
762
- i0.ɵɵelement(32, "i", 118);
762
+ i0.ɵɵelementStart(31, "button", 120);
763
+ i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_9_Conditional_2_Conditional_54_Template_button_click_31_listener() { i0.ɵɵrestoreView(_r24); const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.CloseAddMapPanel()); });
764
+ i0.ɵɵelement(32, "i", 121);
763
765
  i0.ɵɵelementEnd()()()();
764
766
  } if (rf & 2) {
765
- const ctx_r1 = i0.ɵɵnextContext(3);
767
+ const ctx_r0 = i0.ɵɵnextContext(3);
766
768
  i0.ɵɵadvance(5);
767
- i0.ɵɵconditional(ctx_r1.IsLoadingSourceObjects ? 5 : ctx_r1.AvailableSourceObjects.length === 0 ? 6 : 7);
769
+ i0.ɵɵconditional(ctx_r0.IsLoadingSourceObjects ? 5 : ctx_r0.AvailableSourceObjects.length === 0 ? 6 : 7);
768
770
  i0.ɵɵadvance(7);
769
- i0.ɵɵclassProp("active", ctx_r1.AddMapDirection === "Pull");
771
+ i0.ɵɵclassProp("active", ctx_r0.AddMapDirection === "Pull");
770
772
  i0.ɵɵadvance(2);
771
- i0.ɵɵclassProp("active", ctx_r1.AddMapDirection === "Bidirectional");
773
+ i0.ɵɵclassProp("active", ctx_r0.AddMapDirection === "Bidirectional");
772
774
  i0.ɵɵadvance(2);
773
- i0.ɵɵclassProp("active", ctx_r1.AddMapDirection === "Push");
775
+ i0.ɵɵclassProp("active", ctx_r0.AddMapDirection === "Push");
774
776
  i0.ɵɵadvance(6);
775
- i0.ɵɵproperty("BranchConfig", ctx_r1.EntityBranchConfig)("LeafConfig", ctx_r1.EntityLeafConfig)("Value", ctx_r1.AddMapEntityIDAsKey)("SelectableTypes", "leaf")("SelectionMode", "single")("Placeholder", "Search entities by schema...")("EnableSearch", true);
777
+ i0.ɵɵproperty("BranchConfig", ctx_r0.EntityBranchConfig)("LeafConfig", ctx_r0.EntityLeafConfig)("Value", ctx_r0.AddMapEntityIDAsKey)("SelectableTypes", "leaf")("SelectionMode", "single")("Placeholder", "Search entities by schema...")("EnableSearch", true);
776
778
  i0.ɵɵadvance(6);
777
- i0.ɵɵproperty("disabled", !ctx_r1.CanSaveAddMap || ctx_r1.IsSavingAddMap);
779
+ i0.ɵɵproperty("disabled", !ctx_r0.CanSaveAddMap || ctx_r0.IsSavingAddMap);
778
780
  i0.ɵɵadvance();
779
- i0.ɵɵconditional(ctx_r1.IsSavingAddMap ? 29 : 30);
781
+ i0.ɵɵconditional(ctx_r0.IsSavingAddMap ? 29 : 30);
780
782
  } }
781
- function ConnectionsComponent_Conditional_2_Conditional_2_Conditional_55_Template(rf, ctx) { if (rf & 1) {
782
- i0.ɵɵelementStart(0, "div", 13);
783
- i0.ɵɵelement(1, "mj-loading", 147);
783
+ function ConnectionsComponent_Conditional_9_Conditional_2_Conditional_55_Template(rf, ctx) { if (rf & 1) {
784
+ i0.ɵɵelementStart(0, "div", 16);
785
+ i0.ɵɵelement(1, "mj-loading", 150);
784
786
  i0.ɵɵelementEnd();
785
787
  } }
786
- function ConnectionsComponent_Conditional_2_Conditional_2_Conditional_56_Template(rf, ctx) { if (rf & 1) {
788
+ function ConnectionsComponent_Conditional_9_Conditional_2_Conditional_56_Template(rf, ctx) { if (rf & 1) {
787
789
  const _r27 = i0.ɵɵgetCurrentView();
788
- i0.ɵɵelementStart(0, "div", 95);
789
- i0.ɵɵelement(1, "i", 148);
790
+ i0.ɵɵelementStart(0, "div", 98);
791
+ i0.ɵɵelement(1, "i", 151);
790
792
  i0.ɵɵelementStart(2, "h3");
791
793
  i0.ɵɵtext(3, "No entity maps configured");
792
794
  i0.ɵɵelementEnd();
793
795
  i0.ɵɵelementStart(4, "p");
794
796
  i0.ɵɵtext(5, "Entity maps define how external objects sync to MJ entities.");
795
797
  i0.ɵɵelementEnd();
796
- i0.ɵɵelementStart(6, "button", 149);
797
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_2_Conditional_2_Conditional_56_Template_button_click_6_listener() { i0.ɵɵrestoreView(_r27); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.ToggleAddMapPanel()); });
798
- i0.ɵɵelement(7, "i", 12);
798
+ i0.ɵɵelementStart(6, "button", 152);
799
+ i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_9_Conditional_2_Conditional_56_Template_button_click_6_listener() { i0.ɵɵrestoreView(_r27); const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.ToggleAddMapPanel()); });
800
+ i0.ɵɵelement(7, "i", 15);
799
801
  i0.ɵɵtext(8, " Add Your First Entity Map ");
800
802
  i0.ɵɵelementEnd()();
801
803
  } }
802
- function ConnectionsComponent_Conditional_2_Conditional_2_Conditional_57_For_12_Conditional_13_Template(rf, ctx) { if (rf & 1) {
803
- i0.ɵɵelementStart(0, "span", 167);
804
- i0.ɵɵelement(1, "i", 171);
804
+ function ConnectionsComponent_Conditional_9_Conditional_2_Conditional_57_For_12_Conditional_13_Template(rf, ctx) { if (rf & 1) {
805
+ i0.ɵɵelementStart(0, "span", 170);
806
+ i0.ɵɵelement(1, "i", 174);
805
807
  i0.ɵɵelementEnd();
806
808
  } }
807
- function ConnectionsComponent_Conditional_2_Conditional_2_Conditional_57_For_12_Template(rf, ctx) { if (rf & 1) {
809
+ function ConnectionsComponent_Conditional_9_Conditional_2_Conditional_57_For_12_Template(rf, ctx) { if (rf & 1) {
808
810
  const _r28 = i0.ɵɵgetCurrentView();
809
- i0.ɵɵelementStart(0, "div", 159);
810
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_2_Conditional_2_Conditional_57_For_12_Template_div_click_0_listener() { const em_r29 = i0.ɵɵrestoreView(_r28).$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.OnEntityMapClick(em_r29)); });
811
- i0.ɵɵelementStart(1, "span", 160);
812
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_2_Conditional_2_Conditional_57_For_12_Template_span_click_1_listener($event) { i0.ɵɵrestoreView(_r28); return i0.ɵɵresetView($event.stopPropagation()); });
813
- i0.ɵɵelementStart(2, "label", 161)(3, "input", 134);
814
- i0.ɵɵlistener("change", function ConnectionsComponent_Conditional_2_Conditional_2_Conditional_57_For_12_Template_input_change_3_listener($event) { const em_r29 = i0.ɵɵrestoreView(_r28).$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.OnToggleMapEnabled(em_r29, $event)); });
815
- i0.ɵɵelementEnd();
816
- i0.ɵɵelement(4, "span", 162);
811
+ i0.ɵɵelementStart(0, "div", 162);
812
+ i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_9_Conditional_2_Conditional_57_For_12_Template_div_click_0_listener() { const em_r29 = i0.ɵɵrestoreView(_r28).$implicit; const ctx_r0 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r0.OnEntityMapClick(em_r29)); });
813
+ i0.ɵɵelementStart(1, "span", 163);
814
+ i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_9_Conditional_2_Conditional_57_For_12_Template_span_click_1_listener($event) { i0.ɵɵrestoreView(_r28); return i0.ɵɵresetView($event.stopPropagation()); });
815
+ i0.ɵɵelementStart(2, "label", 164)(3, "input", 137);
816
+ i0.ɵɵlistener("change", function ConnectionsComponent_Conditional_9_Conditional_2_Conditional_57_For_12_Template_input_change_3_listener($event) { const em_r29 = i0.ɵɵrestoreView(_r28).$implicit; const ctx_r0 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r0.OnToggleMapEnabled(em_r29, $event)); });
817
+ i0.ɵɵelementEnd();
818
+ i0.ɵɵelement(4, "span", 165);
817
819
  i0.ɵɵelementEnd()();
818
- i0.ɵɵelementStart(5, "span", 163);
820
+ i0.ɵɵelementStart(5, "span", 166);
819
821
  i0.ɵɵtext(6);
820
822
  i0.ɵɵelementEnd();
821
- i0.ɵɵelementStart(7, "span", 164);
822
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_2_Conditional_2_Conditional_57_For_12_Template_span_click_7_listener($event) { i0.ɵɵrestoreView(_r28); return i0.ɵɵresetView($event.stopPropagation()); });
823
- i0.ɵɵelementStart(8, "button", 165);
824
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_2_Conditional_2_Conditional_57_For_12_Template_button_click_8_listener() { const em_r29 = i0.ɵɵrestoreView(_r28).$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.CycleSyncDirection(em_r29)); });
823
+ i0.ɵɵelementStart(7, "span", 167);
824
+ i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_9_Conditional_2_Conditional_57_For_12_Template_span_click_7_listener($event) { i0.ɵɵrestoreView(_r28); return i0.ɵɵresetView($event.stopPropagation()); });
825
+ i0.ɵɵelementStart(8, "button", 168);
826
+ i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_9_Conditional_2_Conditional_57_For_12_Template_button_click_8_listener() { const em_r29 = i0.ɵɵrestoreView(_r28).$implicit; const ctx_r0 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r0.CycleSyncDirection(em_r29)); });
825
827
  i0.ɵɵtext(9);
826
828
  i0.ɵɵelementEnd()();
827
- i0.ɵɵelementStart(10, "span", 166);
829
+ i0.ɵɵelementStart(10, "span", 169);
828
830
  i0.ɵɵtext(11);
829
831
  i0.ɵɵelementEnd();
830
- i0.ɵɵelementStart(12, "span", 155);
831
- i0.ɵɵconditionalCreate(13, ConnectionsComponent_Conditional_2_Conditional_2_Conditional_57_For_12_Conditional_13_Template, 2, 0, "span", 167);
832
- i0.ɵɵelementStart(14, "span", 168);
833
- i0.ɵɵelement(15, "i", 36);
832
+ i0.ɵɵelementStart(12, "span", 158);
833
+ i0.ɵɵconditionalCreate(13, ConnectionsComponent_Conditional_9_Conditional_2_Conditional_57_For_12_Conditional_13_Template, 2, 0, "span", 170);
834
+ i0.ɵɵelementStart(14, "span", 171);
835
+ i0.ɵɵelement(15, "i", 39);
834
836
  i0.ɵɵelementEnd();
835
- i0.ɵɵelementStart(16, "span", 169);
836
- i0.ɵɵelement(17, "i", 170);
837
+ i0.ɵɵelementStart(16, "span", 172);
838
+ i0.ɵɵelement(17, "i", 173);
837
839
  i0.ɵɵelementEnd()()();
838
840
  } if (rf & 2) {
839
841
  const em_r29 = ctx.$implicit;
840
- const ctx_r1 = i0.ɵɵnextContext(4);
842
+ const ctx_r0 = i0.ɵɵnextContext(4);
841
843
  i0.ɵɵclassProp("sync-disabled", !em_r29.SyncEnabled);
842
844
  i0.ɵɵadvance(2);
843
845
  i0.ɵɵproperty("title", em_r29.SyncEnabled ? "Sync enabled" : "Sync disabled");
@@ -848,10 +850,10 @@ function ConnectionsComponent_Conditional_2_Conditional_2_Conditional_57_For_12_
848
850
  i0.ɵɵadvance();
849
851
  i0.ɵɵtextInterpolate1(" ", em_r29.ExternalObjectLabel ?? em_r29.ExternalObjectName, " ");
850
852
  i0.ɵɵadvance(2);
851
- i0.ɵɵclassMap(ctx_r1.DirectionBadgeClass(em_r29.SyncDirection));
853
+ i0.ɵɵclassMap(ctx_r0.DirectionBadgeClass(em_r29.SyncDirection));
852
854
  i0.ɵɵproperty("title", "Click to change sync direction (currently: " + em_r29.SyncDirection + ")");
853
855
  i0.ɵɵadvance();
854
- i0.ɵɵtextInterpolate1(" ", ctx_r1.DirectionText(em_r29.SyncDirection), " ");
856
+ i0.ɵɵtextInterpolate1(" ", ctx_r0.DirectionText(em_r29.SyncDirection), " ");
855
857
  i0.ɵɵadvance();
856
858
  i0.ɵɵproperty("title", em_r29.Entity);
857
859
  i0.ɵɵadvance();
@@ -861,213 +863,213 @@ function ConnectionsComponent_Conditional_2_Conditional_2_Conditional_57_For_12_
861
863
  i0.ɵɵadvance();
862
864
  i0.ɵɵproperty("title", "Conflict: " + em_r29.ConflictResolution);
863
865
  } }
864
- function ConnectionsComponent_Conditional_2_Conditional_2_Conditional_57_ForEmpty_13_Template(rf, ctx) { if (rf & 1) {
865
- i0.ɵɵelementStart(0, "div", 158);
866
+ function ConnectionsComponent_Conditional_9_Conditional_2_Conditional_57_ForEmpty_13_Template(rf, ctx) { if (rf & 1) {
867
+ i0.ɵɵelementStart(0, "div", 161);
866
868
  i0.ɵɵtext(1, " No entity maps match your filter. ");
867
869
  i0.ɵɵelementEnd();
868
870
  } }
869
- function ConnectionsComponent_Conditional_2_Conditional_2_Conditional_57_Template(rf, ctx) { if (rf & 1) {
870
- i0.ɵɵelementStart(0, "div", 150)(1, "span", 151);
871
+ function ConnectionsComponent_Conditional_9_Conditional_2_Conditional_57_Template(rf, ctx) { if (rf & 1) {
872
+ i0.ɵɵelementStart(0, "div", 153)(1, "span", 154);
871
873
  i0.ɵɵtext(2, "Sync");
872
874
  i0.ɵɵelementEnd();
873
- i0.ɵɵelementStart(3, "span", 152);
875
+ i0.ɵɵelementStart(3, "span", 155);
874
876
  i0.ɵɵtext(4, "External Object");
875
877
  i0.ɵɵelementEnd();
876
- i0.ɵɵelement(5, "span", 153);
877
- i0.ɵɵelementStart(6, "span", 154);
878
+ i0.ɵɵelement(5, "span", 156);
879
+ i0.ɵɵelementStart(6, "span", 157);
878
880
  i0.ɵɵtext(7, "MJ Entity");
879
881
  i0.ɵɵelementEnd();
880
- i0.ɵɵelementStart(8, "span", 155);
882
+ i0.ɵɵelementStart(8, "span", 158);
881
883
  i0.ɵɵtext(9, "Config");
882
884
  i0.ɵɵelementEnd()();
883
- i0.ɵɵelementStart(10, "div", 156);
884
- i0.ɵɵrepeaterCreate(11, ConnectionsComponent_Conditional_2_Conditional_2_Conditional_57_For_12_Template, 18, 14, "div", 157, _forTrack2, false, ConnectionsComponent_Conditional_2_Conditional_2_Conditional_57_ForEmpty_13_Template, 2, 0, "div", 158);
885
+ i0.ɵɵelementStart(10, "div", 159);
886
+ i0.ɵɵrepeaterCreate(11, ConnectionsComponent_Conditional_9_Conditional_2_Conditional_57_For_12_Template, 18, 14, "div", 160, _forTrack2, false, ConnectionsComponent_Conditional_9_Conditional_2_Conditional_57_ForEmpty_13_Template, 2, 0, "div", 161);
885
887
  i0.ɵɵelementEnd();
886
888
  } if (rf & 2) {
887
- const ctx_r1 = i0.ɵɵnextContext(3);
889
+ const ctx_r0 = i0.ɵɵnextContext(3);
888
890
  i0.ɵɵadvance(11);
889
- i0.ɵɵrepeater(ctx_r1.DetailFilteredMaps);
891
+ i0.ɵɵrepeater(ctx_r0.DetailFilteredMaps);
890
892
  } }
891
- function ConnectionsComponent_Conditional_2_Conditional_2_Template(rf, ctx) { if (rf & 1) {
893
+ function ConnectionsComponent_Conditional_9_Conditional_2_Template(rf, ctx) { if (rf & 1) {
892
894
  const _r12 = i0.ɵɵgetCurrentView();
893
- i0.ɵɵelementStart(0, "div", 65)(1, "button", 66);
894
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_2_Conditional_2_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r12); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.CloseDetailView()); });
895
- i0.ɵɵelement(2, "i", 67);
895
+ i0.ɵɵelementStart(0, "div", 68)(1, "button", 69);
896
+ i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_9_Conditional_2_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r12); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.CloseDetailView()); });
897
+ i0.ɵɵelement(2, "i", 70);
896
898
  i0.ɵɵelementEnd();
897
- i0.ɵɵelementStart(3, "div", 68)(4, "div", 26);
898
- i0.ɵɵelement(5, "i", 27);
899
+ i0.ɵɵelementStart(3, "div", 71)(4, "div", 29);
900
+ i0.ɵɵelement(5, "i", 30);
899
901
  i0.ɵɵelementEnd();
900
- i0.ɵɵelementStart(6, "div", 69)(7, "h2", 70);
902
+ i0.ɵɵelementStart(6, "div", 72)(7, "h2", 73);
901
903
  i0.ɵɵtext(8);
902
904
  i0.ɵɵelementEnd();
903
- i0.ɵɵelementStart(9, "span", 71);
905
+ i0.ɵɵelementStart(9, "span", 74);
904
906
  i0.ɵɵtext(10);
905
- i0.ɵɵelementStart(11, "span", 33);
907
+ i0.ɵɵelementStart(11, "span", 36);
906
908
  i0.ɵɵtext(12, "\u00B7");
907
909
  i0.ɵɵelementEnd();
908
910
  i0.ɵɵtext(13);
909
- i0.ɵɵelementStart(14, "span", 33);
911
+ i0.ɵɵelementStart(14, "span", 36);
910
912
  i0.ɵɵtext(15, "\u00B7");
911
913
  i0.ɵɵelementEnd();
912
914
  i0.ɵɵelementStart(16, "span");
913
915
  i0.ɵɵtext(17);
914
916
  i0.ɵɵelementEnd()()()();
915
- i0.ɵɵelementStart(18, "div", 72)(19, "button", 73);
916
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_2_Conditional_2_Template_button_click_19_listener() { i0.ɵɵrestoreView(_r12); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.OpenEditPanel(ctx_r1.SelectedSummary)); });
917
- i0.ɵɵelement(20, "i", 74);
917
+ i0.ɵɵelementStart(18, "div", 75)(19, "button", 76);
918
+ i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_9_Conditional_2_Template_button_click_19_listener() { i0.ɵɵrestoreView(_r12); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.OpenEditPanel(ctx_r0.SelectedSummary)); });
919
+ i0.ɵɵelement(20, "i", 77);
918
920
  i0.ɵɵelementEnd();
919
- i0.ɵɵconditionalCreate(21, ConnectionsComponent_Conditional_2_Conditional_2_Conditional_21_Template, 5, 3, "div", 43);
921
+ i0.ɵɵconditionalCreate(21, ConnectionsComponent_Conditional_9_Conditional_2_Conditional_21_Template, 5, 3, "div", 46);
920
922
  i0.ɵɵelementEnd()();
921
- i0.ɵɵelementStart(22, "div", 75)(23, "div", 76)(24, "div", 77);
922
- i0.ɵɵelement(25, "i", 78);
923
+ i0.ɵɵelementStart(22, "div", 78)(23, "div", 79)(24, "div", 80);
924
+ i0.ɵɵelement(25, "i", 81);
923
925
  i0.ɵɵelementStart(26, "span");
924
926
  i0.ɵɵtext(27, "Sync Schedule");
925
927
  i0.ɵɵelementEnd()()();
926
- i0.ɵɵconditionalCreate(28, ConnectionsComponent_Conditional_2_Conditional_2_Conditional_28_Template, 1, 1, "mj-scheduled-job-summary", 79)(29, ConnectionsComponent_Conditional_2_Conditional_2_Conditional_29_Template, 6, 0, "div", 80);
928
+ i0.ɵɵconditionalCreate(28, ConnectionsComponent_Conditional_9_Conditional_2_Conditional_28_Template, 1, 1, "mj-scheduled-job-summary", 82)(29, ConnectionsComponent_Conditional_9_Conditional_2_Conditional_29_Template, 6, 0, "div", 83);
927
929
  i0.ɵɵelementEnd();
928
- i0.ɵɵelementStart(30, "mj-scheduled-job-slide-panel", 81);
929
- i0.ɵɵlistener("Close", function ConnectionsComponent_Conditional_2_Conditional_2_Template_mj_scheduled_job_slide_panel_Close_30_listener() { i0.ɵɵrestoreView(_r12); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.CloseSchedulePanel()); })("Saved", function ConnectionsComponent_Conditional_2_Conditional_2_Template_mj_scheduled_job_slide_panel_Saved_30_listener() { i0.ɵɵrestoreView(_r12); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.OnScheduleSaved()); })("Deleted", function ConnectionsComponent_Conditional_2_Conditional_2_Template_mj_scheduled_job_slide_panel_Deleted_30_listener() { i0.ɵɵrestoreView(_r12); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.OnScheduleDeleted()); });
930
+ i0.ɵɵelementStart(30, "mj-scheduled-job-slide-panel", 84);
931
+ i0.ɵɵlistener("Close", function ConnectionsComponent_Conditional_9_Conditional_2_Template_mj_scheduled_job_slide_panel_Close_30_listener() { i0.ɵɵrestoreView(_r12); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.CloseSchedulePanel()); })("Saved", function ConnectionsComponent_Conditional_9_Conditional_2_Template_mj_scheduled_job_slide_panel_Saved_30_listener() { i0.ɵɵrestoreView(_r12); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.OnScheduleSaved()); })("Deleted", function ConnectionsComponent_Conditional_9_Conditional_2_Template_mj_scheduled_job_slide_panel_Deleted_30_listener() { i0.ɵɵrestoreView(_r12); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.OnScheduleDeleted()); });
930
932
  i0.ɵɵelementEnd();
931
- i0.ɵɵelementStart(31, "div", 82)(32, "div", 83)(33, "span", 84);
933
+ i0.ɵɵelementStart(31, "div", 85)(32, "div", 86)(33, "span", 87);
932
934
  i0.ɵɵtext(34);
933
- i0.ɵɵelementStart(35, "span", 33);
935
+ i0.ɵɵelementStart(35, "span", 36);
934
936
  i0.ɵɵtext(36, "\u00B7");
935
937
  i0.ɵɵelementEnd();
936
938
  i0.ɵɵtext(37);
937
939
  i0.ɵɵelementEnd()();
938
- i0.ɵɵelementStart(38, "div", 85)(39, "div", 86);
939
- i0.ɵɵelement(40, "i", 87);
940
- i0.ɵɵelementStart(41, "input", 88);
941
- i0.ɵɵlistener("input", function ConnectionsComponent_Conditional_2_Conditional_2_Template_input_input_41_listener($event) { i0.ɵɵrestoreView(_r12); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.OnDetailSearch($event)); });
940
+ i0.ɵɵelementStart(38, "div", 88)(39, "div", 89);
941
+ i0.ɵɵelement(40, "i", 90);
942
+ i0.ɵɵelementStart(41, "input", 91);
943
+ i0.ɵɵlistener("input", function ConnectionsComponent_Conditional_9_Conditional_2_Template_input_input_41_listener($event) { i0.ɵɵrestoreView(_r12); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.OnDetailSearch($event)); });
942
944
  i0.ɵɵelementEnd()();
943
- i0.ɵɵelementStart(42, "button", 89);
944
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_2_Conditional_2_Template_button_click_42_listener() { i0.ɵɵrestoreView(_r12); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.ToggleCreateTablesPanel()); });
945
- i0.ɵɵelement(43, "i", 90);
945
+ i0.ɵɵelementStart(42, "button", 92);
946
+ i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_9_Conditional_2_Template_button_click_42_listener() { i0.ɵɵrestoreView(_r12); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.ToggleCreateTablesPanel()); });
947
+ i0.ɵɵelement(43, "i", 93);
946
948
  i0.ɵɵtext(44, " Create Tables ");
947
949
  i0.ɵɵelementEnd();
948
- i0.ɵɵelementStart(45, "button", 91);
949
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_2_Conditional_2_Template_button_click_45_listener() { i0.ɵɵrestoreView(_r12); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.ToggleAutoMapPanel()); });
950
- i0.ɵɵelement(46, "i", 92);
950
+ i0.ɵɵelementStart(45, "button", 94);
951
+ i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_9_Conditional_2_Template_button_click_45_listener() { i0.ɵɵrestoreView(_r12); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.ToggleAutoMapPanel()); });
952
+ i0.ɵɵelement(46, "i", 95);
951
953
  i0.ɵɵtext(47, " Auto-Map Schema ");
952
954
  i0.ɵɵelementEnd();
953
- i0.ɵɵelementStart(48, "button", 91);
954
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_2_Conditional_2_Template_button_click_48_listener() { i0.ɵɵrestoreView(_r12); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.ToggleAddMapPanel()); });
955
- i0.ɵɵelement(49, "i", 12);
955
+ i0.ɵɵelementStart(48, "button", 94);
956
+ i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_9_Conditional_2_Template_button_click_48_listener() { i0.ɵɵrestoreView(_r12); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.ToggleAddMapPanel()); });
957
+ i0.ɵɵelement(49, "i", 15);
956
958
  i0.ɵɵtext(50, " Add Map ");
957
959
  i0.ɵɵelementEnd()()();
958
- i0.ɵɵconditionalCreate(51, ConnectionsComponent_Conditional_2_Conditional_2_Conditional_51_Template, 5, 6, "div", 93);
959
- i0.ɵɵconditionalCreate(52, ConnectionsComponent_Conditional_2_Conditional_2_Conditional_52_Template, 31, 11, "div", 94);
960
- i0.ɵɵconditionalCreate(53, ConnectionsComponent_Conditional_2_Conditional_2_Conditional_53_Template, 16, 4, "div", 94);
961
- i0.ɵɵconditionalCreate(54, ConnectionsComponent_Conditional_2_Conditional_2_Conditional_54_Template, 33, 16, "div", 94);
962
- i0.ɵɵconditionalCreate(55, ConnectionsComponent_Conditional_2_Conditional_2_Conditional_55_Template, 2, 0, "div", 13)(56, ConnectionsComponent_Conditional_2_Conditional_2_Conditional_56_Template, 9, 0, "div", 95)(57, ConnectionsComponent_Conditional_2_Conditional_2_Conditional_57_Template, 14, 1);
960
+ i0.ɵɵconditionalCreate(51, ConnectionsComponent_Conditional_9_Conditional_2_Conditional_51_Template, 5, 6, "div", 96);
961
+ i0.ɵɵconditionalCreate(52, ConnectionsComponent_Conditional_9_Conditional_2_Conditional_52_Template, 31, 11, "div", 97);
962
+ i0.ɵɵconditionalCreate(53, ConnectionsComponent_Conditional_9_Conditional_2_Conditional_53_Template, 16, 4, "div", 97);
963
+ i0.ɵɵconditionalCreate(54, ConnectionsComponent_Conditional_9_Conditional_2_Conditional_54_Template, 33, 16, "div", 97);
964
+ i0.ɵɵconditionalCreate(55, ConnectionsComponent_Conditional_9_Conditional_2_Conditional_55_Template, 2, 0, "div", 16)(56, ConnectionsComponent_Conditional_9_Conditional_2_Conditional_56_Template, 9, 0, "div", 98)(57, ConnectionsComponent_Conditional_9_Conditional_2_Conditional_57_Template, 14, 1);
963
965
  } if (rf & 2) {
964
- const ctx_r1 = i0.ɵɵnextContext(2);
966
+ const ctx_r0 = i0.ɵɵnextContext(2);
965
967
  i0.ɵɵadvance(4);
966
- i0.ɵɵstyleProp("background-color", ctx_r1.GetIconBrandColor(ctx_r1.SelectedSummary.Integration.Integration));
968
+ i0.ɵɵstyleProp("background-color", ctx_r0.GetIconBrandColor(ctx_r0.SelectedSummary.Integration.Integration));
967
969
  i0.ɵɵadvance();
968
- i0.ɵɵclassMap(ctx_r1.GetIntegrationIcon(ctx_r1.SelectedSummary.Integration.Integration));
970
+ i0.ɵɵclassMap(ctx_r0.GetIntegrationIcon(ctx_r0.SelectedSummary.Integration.Integration));
969
971
  i0.ɵɵadvance(3);
970
- i0.ɵɵtextInterpolate(ctx_r1.SelectedSummary.Integration.Name);
972
+ i0.ɵɵtextInterpolate(ctx_r0.SelectedSummary.Integration.Name);
971
973
  i0.ɵɵadvance(2);
972
- i0.ɵɵtextInterpolate1(" ", ctx_r1.SelectedSummary.Integration.Company, " ");
974
+ i0.ɵɵtextInterpolate1(" ", ctx_r0.SelectedSummary.Integration.Company, " ");
973
975
  i0.ɵɵadvance(3);
974
- i0.ɵɵtextInterpolate1(" ", ctx_r1.GetSourceTypeLabel(ctx_r1.SelectedSummary), " ");
976
+ i0.ɵɵtextInterpolate1(" ", ctx_r0.GetSourceTypeLabel(ctx_r0.SelectedSummary), " ");
975
977
  i0.ɵɵadvance(3);
976
- i0.ɵɵclassMap(ctx_r1.GetStatusBadgeClass(ctx_r1.SelectedSummary));
978
+ i0.ɵɵclassMap(ctx_r0.GetStatusBadgeClass(ctx_r0.SelectedSummary));
977
979
  i0.ɵɵadvance();
978
- i0.ɵɵtextInterpolate(ctx_r1.GetStatusBadge(ctx_r1.SelectedSummary));
980
+ i0.ɵɵtextInterpolate(ctx_r0.GetStatusBadge(ctx_r0.SelectedSummary));
979
981
  i0.ɵɵadvance(4);
980
- i0.ɵɵconditional(ctx_r1.IsConnectionActive(ctx_r1.SelectedSummary) ? 21 : -1);
982
+ i0.ɵɵconditional(ctx_r0.IsConnectionActive(ctx_r0.SelectedSummary) ? 21 : -1);
981
983
  i0.ɵɵadvance(7);
982
- i0.ɵɵconditional(ctx_r1.ScheduledJobID ? 28 : 29);
984
+ i0.ɵɵconditional(ctx_r0.ScheduledJobID ? 28 : 29);
983
985
  i0.ɵɵadvance(2);
984
- i0.ɵɵproperty("IsOpen", ctx_r1.ShowScheduleSlidePanel)("ScheduledJobID", ctx_r1.ScheduledJobID)("JobTypeID", ctx_r1.IntegrationSyncJobTypeID)("DefaultConfiguration", ctx_r1.ScheduleDefaultConfiguration)("HideJobType", true);
986
+ i0.ɵɵproperty("IsOpen", ctx_r0.ShowScheduleSlidePanel)("ScheduledJobID", ctx_r0.ScheduledJobID)("JobTypeID", ctx_r0.IntegrationSyncJobTypeID)("DefaultConfiguration", ctx_r0.ScheduleDefaultConfiguration)("HideJobType", true);
985
987
  i0.ɵɵadvance(4);
986
- i0.ɵɵtextInterpolate2(" ", ctx_r1.DetailEntityMaps.length, " entity map", ctx_r1.DetailEntityMaps.length !== 1 ? "s" : "", " ");
988
+ i0.ɵɵtextInterpolate2(" ", ctx_r0.DetailEntityMaps.length, " entity map", ctx_r0.DetailEntityMaps.length !== 1 ? "s" : "", " ");
987
989
  i0.ɵɵadvance(3);
988
- i0.ɵɵtextInterpolate1(" ", ctx_r1.DetailActiveMapCount, " active ");
990
+ i0.ɵɵtextInterpolate1(" ", ctx_r0.DetailActiveMapCount, " active ");
989
991
  i0.ɵɵadvance(4);
990
- i0.ɵɵproperty("value", ctx_r1.DetailSearchTerm);
992
+ i0.ɵɵproperty("value", ctx_r0.DetailSearchTerm);
991
993
  i0.ɵɵadvance();
992
- i0.ɵɵclassProp("active", ctx_r1.ShowCreateTablesPanel);
994
+ i0.ɵɵclassProp("active", ctx_r0.ShowCreateTablesPanel);
993
995
  i0.ɵɵadvance(3);
994
- i0.ɵɵclassProp("active", ctx_r1.ShowAutoMapPanel);
996
+ i0.ɵɵclassProp("active", ctx_r0.ShowAutoMapPanel);
995
997
  i0.ɵɵadvance(3);
996
- i0.ɵɵclassProp("active", ctx_r1.ShowAddMapPanel);
998
+ i0.ɵɵclassProp("active", ctx_r0.ShowAddMapPanel);
997
999
  i0.ɵɵadvance(3);
998
- i0.ɵɵconditional(ctx_r1.SyncResult ? 51 : -1);
1000
+ i0.ɵɵconditional(ctx_r0.SyncResult ? 51 : -1);
999
1001
  i0.ɵɵadvance();
1000
- i0.ɵɵconditional(ctx_r1.ShowAutoMapPanel ? 52 : -1);
1002
+ i0.ɵɵconditional(ctx_r0.ShowAutoMapPanel ? 52 : -1);
1001
1003
  i0.ɵɵadvance();
1002
- i0.ɵɵconditional(ctx_r1.ShowCreateTablesPanel ? 53 : -1);
1004
+ i0.ɵɵconditional(ctx_r0.ShowCreateTablesPanel ? 53 : -1);
1003
1005
  i0.ɵɵadvance();
1004
- i0.ɵɵconditional(ctx_r1.ShowAddMapPanel ? 54 : -1);
1006
+ i0.ɵɵconditional(ctx_r0.ShowAddMapPanel ? 54 : -1);
1005
1007
  i0.ɵɵadvance();
1006
- i0.ɵɵconditional(ctx_r1.IsDetailLoading ? 55 : ctx_r1.DetailEntityMaps.length === 0 && !ctx_r1.ShowAddMapPanel ? 56 : ctx_r1.DetailEntityMaps.length > 0 ? 57 : -1);
1008
+ i0.ɵɵconditional(ctx_r0.IsDetailLoading ? 55 : ctx_r0.DetailEntityMaps.length === 0 && !ctx_r0.ShowAddMapPanel ? 56 : ctx_r0.DetailEntityMaps.length > 0 ? 57 : -1);
1007
1009
  } }
1008
- function ConnectionsComponent_Conditional_2_Template(rf, ctx) { if (rf & 1) {
1009
- i0.ɵɵelementStart(0, "div", 2);
1010
- i0.ɵɵconditionalCreate(1, ConnectionsComponent_Conditional_2_Conditional_1_Template, 1, 3, "app-visual-field-editor", 63)(2, ConnectionsComponent_Conditional_2_Conditional_2_Template, 58, 32);
1010
+ function ConnectionsComponent_Conditional_9_Template(rf, ctx) { if (rf & 1) {
1011
+ i0.ɵɵelementStart(0, "div", 8);
1012
+ i0.ɵɵconditionalCreate(1, ConnectionsComponent_Conditional_9_Conditional_1_Template, 1, 3, "app-visual-field-editor", 66)(2, ConnectionsComponent_Conditional_9_Conditional_2_Template, 58, 32);
1011
1013
  i0.ɵɵelementEnd();
1012
1014
  } if (rf & 2) {
1013
- const ctx_r1 = i0.ɵɵnextContext();
1015
+ const ctx_r0 = i0.ɵɵnextContext();
1014
1016
  i0.ɵɵadvance();
1015
- i0.ɵɵconditional(ctx_r1.EditorEntityMap ? 1 : 2);
1017
+ i0.ɵɵconditional(ctx_r0.EditorEntityMap ? 1 : 2);
1016
1018
  } }
1017
- function ConnectionsComponent_Conditional_3_For_9_Conditional_2_Template(rf, ctx) { if (rf & 1) {
1018
- i0.ɵɵelement(0, "i", 146);
1019
+ function ConnectionsComponent_Conditional_10_For_9_Conditional_2_Template(rf, ctx) { if (rf & 1) {
1020
+ i0.ɵɵelement(0, "i", 149);
1019
1021
  } }
1020
- function ConnectionsComponent_Conditional_3_For_9_Conditional_3_Template(rf, ctx) { if (rf & 1) {
1022
+ function ConnectionsComponent_Conditional_10_For_9_Conditional_3_Template(rf, ctx) { if (rf & 1) {
1021
1023
  i0.ɵɵtext(0);
1022
1024
  } if (rf & 2) {
1023
1025
  const step_r31 = i0.ɵɵnextContext().$implicit;
1024
1026
  i0.ɵɵtextInterpolate1(" ", step_r31.Number, " ");
1025
1027
  } }
1026
- function ConnectionsComponent_Conditional_3_For_9_Conditional_6_Template(rf, ctx) { if (rf & 1) {
1027
- i0.ɵɵelement(0, "div", 187);
1028
+ function ConnectionsComponent_Conditional_10_For_9_Conditional_6_Template(rf, ctx) { if (rf & 1) {
1029
+ i0.ɵɵelement(0, "div", 190);
1028
1030
  } if (rf & 2) {
1029
1031
  const step_r31 = i0.ɵɵnextContext().$implicit;
1030
- const ctx_r1 = i0.ɵɵnextContext(2);
1031
- i0.ɵɵclassProp("step-line-active", ctx_r1.IsStepCompleted(step_r31.Number));
1032
+ const ctx_r0 = i0.ɵɵnextContext(2);
1033
+ i0.ɵɵclassProp("step-line-active", ctx_r0.IsStepCompleted(step_r31.Number));
1032
1034
  } }
1033
- function ConnectionsComponent_Conditional_3_For_9_Template(rf, ctx) { if (rf & 1) {
1034
- i0.ɵɵelementStart(0, "div", 183)(1, "div", 184);
1035
- i0.ɵɵconditionalCreate(2, ConnectionsComponent_Conditional_3_For_9_Conditional_2_Template, 1, 0, "i", 146)(3, ConnectionsComponent_Conditional_3_For_9_Conditional_3_Template, 1, 1);
1035
+ function ConnectionsComponent_Conditional_10_For_9_Template(rf, ctx) { if (rf & 1) {
1036
+ i0.ɵɵelementStart(0, "div", 186)(1, "div", 187);
1037
+ i0.ɵɵconditionalCreate(2, ConnectionsComponent_Conditional_10_For_9_Conditional_2_Template, 1, 0, "i", 149)(3, ConnectionsComponent_Conditional_10_For_9_Conditional_3_Template, 1, 1);
1036
1038
  i0.ɵɵelementEnd();
1037
- i0.ɵɵelementStart(4, "span", 185);
1039
+ i0.ɵɵelementStart(4, "span", 188);
1038
1040
  i0.ɵɵtext(5);
1039
1041
  i0.ɵɵelementEnd()();
1040
- i0.ɵɵconditionalCreate(6, ConnectionsComponent_Conditional_3_For_9_Conditional_6_Template, 1, 2, "div", 186);
1042
+ i0.ɵɵconditionalCreate(6, ConnectionsComponent_Conditional_10_For_9_Conditional_6_Template, 1, 2, "div", 189);
1041
1043
  } if (rf & 2) {
1042
1044
  const step_r31 = ctx.$implicit;
1043
- const ctx_r1 = i0.ɵɵnextContext(2);
1044
- i0.ɵɵclassProp("step-active", ctx_r1.IsStepActive(step_r31.Number))("step-completed", ctx_r1.IsStepCompleted(step_r31.Number));
1045
+ const ctx_r0 = i0.ɵɵnextContext(2);
1046
+ i0.ɵɵclassProp("step-active", ctx_r0.IsStepActive(step_r31.Number))("step-completed", ctx_r0.IsStepCompleted(step_r31.Number));
1045
1047
  i0.ɵɵadvance(2);
1046
- i0.ɵɵconditional(ctx_r1.IsStepCompleted(step_r31.Number) ? 2 : 3);
1048
+ i0.ɵɵconditional(ctx_r0.IsStepCompleted(step_r31.Number) ? 2 : 3);
1047
1049
  i0.ɵɵadvance(3);
1048
1050
  i0.ɵɵtextInterpolate(step_r31.Label);
1049
1051
  i0.ɵɵadvance();
1050
- i0.ɵɵconditional(step_r31.Number < ctx_r1.WizardSteps.length ? 6 : -1);
1052
+ i0.ɵɵconditional(step_r31.Number < ctx_r0.WizardSteps.length ? 6 : -1);
1051
1053
  } }
1052
- function ConnectionsComponent_Conditional_3_Conditional_11_Conditional_6_Template(rf, ctx) { if (rf & 1) {
1053
- i0.ɵɵelementStart(0, "div", 192);
1054
- i0.ɵɵelement(1, "i", 194);
1054
+ function ConnectionsComponent_Conditional_10_Conditional_11_Conditional_6_Template(rf, ctx) { if (rf & 1) {
1055
+ i0.ɵɵelementStart(0, "div", 195);
1056
+ i0.ɵɵelement(1, "i", 197);
1055
1057
  i0.ɵɵelementStart(2, "p");
1056
1058
  i0.ɵɵtext(3, "No integrations configured");
1057
1059
  i0.ɵɵelementEnd();
1058
- i0.ɵɵelementStart(4, "span", 195);
1060
+ i0.ɵɵelementStart(4, "span", 198);
1059
1061
  i0.ɵɵtext(5, "Configure integration definitions in the admin area first.");
1060
1062
  i0.ɵɵelementEnd()();
1061
1063
  } }
1062
- function ConnectionsComponent_Conditional_3_Conditional_11_Conditional_7_Template(rf, ctx) { if (rf & 1) {
1063
- i0.ɵɵelementStart(0, "div", 192);
1064
- i0.ɵɵelement(1, "i", 196);
1064
+ function ConnectionsComponent_Conditional_10_Conditional_11_Conditional_7_Template(rf, ctx) { if (rf & 1) {
1065
+ i0.ɵɵelementStart(0, "div", 195);
1066
+ i0.ɵɵelement(1, "i", 199);
1065
1067
  i0.ɵɵelementStart(2, "p");
1066
1068
  i0.ɵɵtext(3, "No matching integrations");
1067
1069
  i0.ɵɵelementEnd()();
1068
1070
  } }
1069
- function ConnectionsComponent_Conditional_3_Conditional_11_Conditional_8_For_2_Conditional_5_Template(rf, ctx) { if (rf & 1) {
1070
- i0.ɵɵelementStart(0, "div", 201);
1071
+ function ConnectionsComponent_Conditional_10_Conditional_11_Conditional_8_For_2_Conditional_5_Template(rf, ctx) { if (rf & 1) {
1072
+ i0.ɵɵelementStart(0, "div", 204);
1071
1073
  i0.ɵɵtext(1);
1072
1074
  i0.ɵɵelementEnd();
1073
1075
  } if (rf & 2) {
@@ -1075,61 +1077,61 @@ function ConnectionsComponent_Conditional_3_Conditional_11_Conditional_8_For_2_C
1075
1077
  i0.ɵɵadvance();
1076
1078
  i0.ɵɵtextInterpolate(def_r34.Description);
1077
1079
  } }
1078
- function ConnectionsComponent_Conditional_3_Conditional_11_Conditional_8_For_2_Template(rf, ctx) { if (rf & 1) {
1080
+ function ConnectionsComponent_Conditional_10_Conditional_11_Conditional_8_For_2_Template(rf, ctx) { if (rf & 1) {
1079
1081
  const _r33 = i0.ɵɵgetCurrentView();
1080
- i0.ɵɵelementStart(0, "div", 198);
1081
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_3_Conditional_11_Conditional_8_For_2_Template_div_click_0_listener() { const def_r34 = i0.ɵɵrestoreView(_r33).$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.SelectIntegration(def_r34)); });
1082
- i0.ɵɵelementStart(1, "div", 199);
1082
+ i0.ɵɵelementStart(0, "div", 201);
1083
+ i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_10_Conditional_11_Conditional_8_For_2_Template_div_click_0_listener() { const def_r34 = i0.ɵɵrestoreView(_r33).$implicit; const ctx_r0 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r0.SelectIntegration(def_r34)); });
1084
+ i0.ɵɵelementStart(1, "div", 202);
1083
1085
  i0.ɵɵelement(2, "i");
1084
1086
  i0.ɵɵelementEnd();
1085
- i0.ɵɵelementStart(3, "div", 200);
1087
+ i0.ɵɵelementStart(3, "div", 203);
1086
1088
  i0.ɵɵtext(4);
1087
1089
  i0.ɵɵelementEnd();
1088
- i0.ɵɵconditionalCreate(5, ConnectionsComponent_Conditional_3_Conditional_11_Conditional_8_For_2_Conditional_5_Template, 2, 1, "div", 201);
1090
+ i0.ɵɵconditionalCreate(5, ConnectionsComponent_Conditional_10_Conditional_11_Conditional_8_For_2_Conditional_5_Template, 2, 1, "div", 204);
1089
1091
  i0.ɵɵelementEnd();
1090
1092
  } if (rf & 2) {
1091
1093
  const def_r34 = ctx.$implicit;
1092
- const ctx_r1 = i0.ɵɵnextContext(4);
1093
- i0.ɵɵclassProp("picker-selected", ctx_r1.IsSelectedIntegration(def_r34));
1094
+ const ctx_r0 = i0.ɵɵnextContext(4);
1095
+ i0.ɵɵclassProp("picker-selected", ctx_r0.IsSelectedIntegration(def_r34));
1094
1096
  i0.ɵɵadvance();
1095
- i0.ɵɵstyleProp("background-color", ctx_r1.GetIconBrandColor(def_r34.Name));
1097
+ i0.ɵɵstyleProp("background-color", ctx_r0.GetIconBrandColor(def_r34.Name));
1096
1098
  i0.ɵɵadvance();
1097
- i0.ɵɵclassMap(ctx_r1.GetIntegrationIcon(def_r34.Name, def_r34.Get("Icon")));
1099
+ i0.ɵɵclassMap(ctx_r0.GetIntegrationIcon(def_r34.Name, def_r34.Get("Icon")));
1098
1100
  i0.ɵɵadvance(2);
1099
1101
  i0.ɵɵtextInterpolate(def_r34.Name);
1100
1102
  i0.ɵɵadvance();
1101
1103
  i0.ɵɵconditional(def_r34.Description ? 5 : -1);
1102
1104
  } }
1103
- function ConnectionsComponent_Conditional_3_Conditional_11_Conditional_8_Template(rf, ctx) { if (rf & 1) {
1104
- i0.ɵɵelementStart(0, "div", 193);
1105
- i0.ɵɵrepeaterCreate(1, ConnectionsComponent_Conditional_3_Conditional_11_Conditional_8_For_2_Template, 6, 8, "div", 197, _forTrack2);
1105
+ function ConnectionsComponent_Conditional_10_Conditional_11_Conditional_8_Template(rf, ctx) { if (rf & 1) {
1106
+ i0.ɵɵelementStart(0, "div", 196);
1107
+ i0.ɵɵrepeaterCreate(1, ConnectionsComponent_Conditional_10_Conditional_11_Conditional_8_For_2_Template, 6, 8, "div", 200, _forTrack2);
1106
1108
  i0.ɵɵelementEnd();
1107
1109
  } if (rf & 2) {
1108
- const ctx_r1 = i0.ɵɵnextContext(3);
1110
+ const ctx_r0 = i0.ɵɵnextContext(3);
1109
1111
  i0.ɵɵadvance();
1110
- i0.ɵɵrepeater(ctx_r1.FilteredIntegrations);
1112
+ i0.ɵɵrepeater(ctx_r0.FilteredIntegrations);
1111
1113
  } }
1112
- function ConnectionsComponent_Conditional_3_Conditional_11_Template(rf, ctx) { if (rf & 1) {
1114
+ function ConnectionsComponent_Conditional_10_Conditional_11_Template(rf, ctx) { if (rf & 1) {
1113
1115
  const _r32 = i0.ɵɵgetCurrentView();
1114
- i0.ɵɵelementStart(0, "div", 177)(1, "h3", 188);
1116
+ i0.ɵɵelementStart(0, "div", 180)(1, "h3", 191);
1115
1117
  i0.ɵɵtext(2, "What system do you want to connect?");
1116
1118
  i0.ɵɵelementEnd();
1117
- i0.ɵɵelementStart(3, "div", 189);
1118
- i0.ɵɵelement(4, "i", 190);
1119
- i0.ɵɵelementStart(5, "input", 191);
1120
- i0.ɵɵtwoWayListener("ngModelChange", function ConnectionsComponent_Conditional_3_Conditional_11_Template_input_ngModelChange_5_listener($event) { i0.ɵɵrestoreView(_r32); const ctx_r1 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r1.SearchQuery, $event) || (ctx_r1.SearchQuery = $event); return i0.ɵɵresetView($event); });
1119
+ i0.ɵɵelementStart(3, "div", 192);
1120
+ i0.ɵɵelement(4, "i", 193);
1121
+ i0.ɵɵelementStart(5, "input", 194);
1122
+ i0.ɵɵtwoWayListener("ngModelChange", function ConnectionsComponent_Conditional_10_Conditional_11_Template_input_ngModelChange_5_listener($event) { i0.ɵɵrestoreView(_r32); const ctx_r0 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r0.SearchQuery, $event) || (ctx_r0.SearchQuery = $event); return i0.ɵɵresetView($event); });
1121
1123
  i0.ɵɵelementEnd()();
1122
- i0.ɵɵconditionalCreate(6, ConnectionsComponent_Conditional_3_Conditional_11_Conditional_6_Template, 6, 0, "div", 192)(7, ConnectionsComponent_Conditional_3_Conditional_11_Conditional_7_Template, 4, 0, "div", 192)(8, ConnectionsComponent_Conditional_3_Conditional_11_Conditional_8_Template, 3, 0, "div", 193);
1124
+ i0.ɵɵconditionalCreate(6, ConnectionsComponent_Conditional_10_Conditional_11_Conditional_6_Template, 6, 0, "div", 195)(7, ConnectionsComponent_Conditional_10_Conditional_11_Conditional_7_Template, 4, 0, "div", 195)(8, ConnectionsComponent_Conditional_10_Conditional_11_Conditional_8_Template, 3, 0, "div", 196);
1123
1125
  i0.ɵɵelementEnd();
1124
1126
  } if (rf & 2) {
1125
- const ctx_r1 = i0.ɵɵnextContext(2);
1127
+ const ctx_r0 = i0.ɵɵnextContext(2);
1126
1128
  i0.ɵɵadvance(5);
1127
- i0.ɵɵtwoWayProperty("ngModel", ctx_r1.SearchQuery);
1129
+ i0.ɵɵtwoWayProperty("ngModel", ctx_r0.SearchQuery);
1128
1130
  i0.ɵɵadvance();
1129
- i0.ɵɵconditional(ctx_r1.FilteredIntegrations.length === 0 && ctx_r1.AvailableIntegrations.length === 0 ? 6 : ctx_r1.FilteredIntegrations.length === 0 ? 7 : 8);
1131
+ i0.ɵɵconditional(ctx_r0.FilteredIntegrations.length === 0 && ctx_r0.AvailableIntegrations.length === 0 ? 6 : ctx_r0.FilteredIntegrations.length === 0 ? 7 : 8);
1130
1132
  } }
1131
- function ConnectionsComponent_Conditional_3_Conditional_12_Conditional_10_For_4_Template(rf, ctx) { if (rf & 1) {
1132
- i0.ɵɵelementStart(0, "option", 107);
1133
+ function ConnectionsComponent_Conditional_10_Conditional_12_Conditional_10_For_4_Template(rf, ctx) { if (rf & 1) {
1134
+ i0.ɵɵelementStart(0, "option", 110);
1133
1135
  i0.ɵɵtext(1);
1134
1136
  i0.ɵɵelementEnd();
1135
1137
  } if (rf & 2) {
@@ -1138,73 +1140,73 @@ function ConnectionsComponent_Conditional_3_Conditional_12_Conditional_10_For_4_
1138
1140
  i0.ɵɵadvance();
1139
1141
  i0.ɵɵtextInterpolate(company_r37.Name);
1140
1142
  } }
1141
- function ConnectionsComponent_Conditional_3_Conditional_12_Conditional_10_Template(rf, ctx) { if (rf & 1) {
1143
+ function ConnectionsComponent_Conditional_10_Conditional_12_Conditional_10_Template(rf, ctx) { if (rf & 1) {
1142
1144
  const _r36 = i0.ɵɵgetCurrentView();
1143
- i0.ɵɵelementStart(0, "select", 217);
1144
- i0.ɵɵtwoWayListener("ngModelChange", function ConnectionsComponent_Conditional_3_Conditional_12_Conditional_10_Template_select_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r36); const ctx_r1 = i0.ɵɵnextContext(3); i0.ɵɵtwoWayBindingSet(ctx_r1.SelectedCompanyID, $event) || (ctx_r1.SelectedCompanyID = $event); return i0.ɵɵresetView($event); });
1145
- i0.ɵɵelementStart(1, "option", 106);
1145
+ i0.ɵɵelementStart(0, "select", 220);
1146
+ i0.ɵɵtwoWayListener("ngModelChange", function ConnectionsComponent_Conditional_10_Conditional_12_Conditional_10_Template_select_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r36); const ctx_r0 = i0.ɵɵnextContext(3); i0.ɵɵtwoWayBindingSet(ctx_r0.SelectedCompanyID, $event) || (ctx_r0.SelectedCompanyID = $event); return i0.ɵɵresetView($event); });
1147
+ i0.ɵɵelementStart(1, "option", 109);
1146
1148
  i0.ɵɵtext(2, "Select a company...");
1147
1149
  i0.ɵɵelementEnd();
1148
- i0.ɵɵrepeaterCreate(3, ConnectionsComponent_Conditional_3_Conditional_12_Conditional_10_For_4_Template, 2, 2, "option", 107, _forTrack2);
1150
+ i0.ɵɵrepeaterCreate(3, ConnectionsComponent_Conditional_10_Conditional_12_Conditional_10_For_4_Template, 2, 2, "option", 110, _forTrack2);
1149
1151
  i0.ɵɵelementEnd();
1150
1152
  } if (rf & 2) {
1151
- const ctx_r1 = i0.ɵɵnextContext(3);
1152
- i0.ɵɵtwoWayProperty("ngModel", ctx_r1.SelectedCompanyID);
1153
+ const ctx_r0 = i0.ɵɵnextContext(3);
1154
+ i0.ɵɵtwoWayProperty("ngModel", ctx_r0.SelectedCompanyID);
1153
1155
  i0.ɵɵadvance();
1154
1156
  i0.ɵɵproperty("ngValue", null);
1155
1157
  i0.ɵɵadvance(2);
1156
- i0.ɵɵrepeater(ctx_r1.Companies);
1158
+ i0.ɵɵrepeater(ctx_r0.Companies);
1157
1159
  } }
1158
- function ConnectionsComponent_Conditional_3_Conditional_12_Conditional_11_Template(rf, ctx) { if (rf & 1) {
1159
- i0.ɵɵelement(0, "input", 207);
1160
+ function ConnectionsComponent_Conditional_10_Conditional_12_Conditional_11_Template(rf, ctx) { if (rf & 1) {
1161
+ i0.ɵɵelement(0, "input", 210);
1160
1162
  } if (rf & 2) {
1161
- const ctx_r1 = i0.ɵɵnextContext(3);
1162
- i0.ɵɵproperty("value", ctx_r1.Companies[0].Name);
1163
+ const ctx_r0 = i0.ɵɵnextContext(3);
1164
+ i0.ɵɵproperty("value", ctx_r0.Companies[0].Name);
1163
1165
  } }
1164
- function ConnectionsComponent_Conditional_3_Conditional_12_Conditional_12_Template(rf, ctx) { if (rf & 1) {
1165
- i0.ɵɵelementStart(0, "div", 208);
1166
+ function ConnectionsComponent_Conditional_10_Conditional_12_Conditional_12_Template(rf, ctx) { if (rf & 1) {
1167
+ i0.ɵɵelementStart(0, "div", 211);
1166
1168
  i0.ɵɵtext(1, "No companies available. Create one in the admin area.");
1167
1169
  i0.ɵɵelementEnd();
1168
1170
  } }
1169
- function ConnectionsComponent_Conditional_3_Conditional_12_Conditional_22_Template(rf, ctx) { if (rf & 1) {
1171
+ function ConnectionsComponent_Conditional_10_Conditional_12_Conditional_22_Template(rf, ctx) { if (rf & 1) {
1170
1172
  const _r38 = i0.ɵɵgetCurrentView();
1171
- i0.ɵɵelementStart(0, "div", 213)(1, "div", 218);
1172
- i0.ɵɵelement(2, "i", 219);
1173
+ i0.ɵɵelementStart(0, "div", 216)(1, "div", 221);
1174
+ i0.ɵɵelement(2, "i", 222);
1173
1175
  i0.ɵɵelementStart(3, "span");
1174
1176
  i0.ɵɵtext(4);
1175
1177
  i0.ɵɵelementEnd()();
1176
- i0.ɵɵelementStart(5, "button", 220);
1177
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_3_Conditional_12_Conditional_22_Template_button_click_5_listener() { i0.ɵɵrestoreView(_r38); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.ClearCredential()); });
1178
- i0.ɵɵelement(6, "i", 118);
1178
+ i0.ɵɵelementStart(5, "button", 223);
1179
+ i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_10_Conditional_12_Conditional_22_Template_button_click_5_listener() { i0.ɵɵrestoreView(_r38); const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.ClearCredential()); });
1180
+ i0.ɵɵelement(6, "i", 121);
1179
1181
  i0.ɵɵelementEnd()();
1180
1182
  } if (rf & 2) {
1181
- const ctx_r1 = i0.ɵɵnextContext(3);
1183
+ const ctx_r0 = i0.ɵɵnextContext(3);
1182
1184
  i0.ɵɵadvance(4);
1183
- i0.ɵɵtextInterpolate(ctx_r1.SelectedCredential.Name);
1185
+ i0.ɵɵtextInterpolate(ctx_r0.SelectedCredential.Name);
1184
1186
  } }
1185
- function ConnectionsComponent_Conditional_3_Conditional_12_Conditional_23_Template(rf, ctx) { if (rf & 1) {
1187
+ function ConnectionsComponent_Conditional_10_Conditional_12_Conditional_23_Template(rf, ctx) { if (rf & 1) {
1186
1188
  const _r39 = i0.ɵɵgetCurrentView();
1187
- i0.ɵɵelementStart(0, "div", 214)(1, "button", 42);
1188
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_3_Conditional_12_Conditional_23_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r39); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.ShowExistingCredentials()); });
1189
- i0.ɵɵelement(2, "i", 219);
1189
+ i0.ɵɵelementStart(0, "div", 217)(1, "button", 45);
1190
+ i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_10_Conditional_12_Conditional_23_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r39); const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.ShowExistingCredentials()); });
1191
+ i0.ɵɵelement(2, "i", 222);
1190
1192
  i0.ɵɵtext(3, " Choose Existing Credential ");
1191
1193
  i0.ɵɵelementEnd();
1192
- i0.ɵɵelementStart(4, "button", 42);
1193
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_3_Conditional_12_Conditional_23_Template_button_click_4_listener() { i0.ɵɵrestoreView(_r39); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.OpenCredentialDialog()); });
1194
- i0.ɵɵelement(5, "i", 12);
1194
+ i0.ɵɵelementStart(4, "button", 45);
1195
+ i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_10_Conditional_12_Conditional_23_Template_button_click_4_listener() { i0.ɵɵrestoreView(_r39); const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.OpenCredentialDialog()); });
1196
+ i0.ɵɵelement(5, "i", 15);
1195
1197
  i0.ɵɵtext(6, " Create New Credential ");
1196
1198
  i0.ɵɵelementEnd()();
1197
1199
  } }
1198
- function ConnectionsComponent_Conditional_3_Conditional_12_Conditional_24_Template(rf, ctx) { if (rf & 1) {
1199
- i0.ɵɵelementStart(0, "div", 215);
1200
- i0.ɵɵelement(1, "mj-loading", 221);
1200
+ function ConnectionsComponent_Conditional_10_Conditional_12_Conditional_24_Template(rf, ctx) { if (rf & 1) {
1201
+ i0.ɵɵelementStart(0, "div", 218);
1202
+ i0.ɵɵelement(1, "mj-loading", 224);
1201
1203
  i0.ɵɵelementEnd();
1202
1204
  } }
1203
- function ConnectionsComponent_Conditional_3_Conditional_12_Conditional_25_For_2_Template(rf, ctx) { if (rf & 1) {
1205
+ function ConnectionsComponent_Conditional_10_Conditional_12_Conditional_25_For_2_Template(rf, ctx) { if (rf & 1) {
1204
1206
  const _r40 = i0.ɵɵgetCurrentView();
1205
- i0.ɵɵelementStart(0, "div", 223);
1206
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_3_Conditional_12_Conditional_25_For_2_Template_div_click_0_listener() { const cred_r41 = i0.ɵɵrestoreView(_r40).$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.SelectExistingCredential(cred_r41)); });
1207
- i0.ɵɵelement(1, "i", 219);
1207
+ i0.ɵɵelementStart(0, "div", 226);
1208
+ i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_10_Conditional_12_Conditional_25_For_2_Template_div_click_0_listener() { const cred_r41 = i0.ɵɵrestoreView(_r40).$implicit; const ctx_r0 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r0.SelectExistingCredential(cred_r41)); });
1209
+ i0.ɵɵelement(1, "i", 222);
1208
1210
  i0.ɵɵelementStart(2, "span");
1209
1211
  i0.ɵɵtext(3);
1210
1212
  i0.ɵɵelementEnd()();
@@ -1213,228 +1215,228 @@ function ConnectionsComponent_Conditional_3_Conditional_12_Conditional_25_For_2_
1213
1215
  i0.ɵɵadvance(3);
1214
1216
  i0.ɵɵtextInterpolate(cred_r41.Name);
1215
1217
  } }
1216
- function ConnectionsComponent_Conditional_3_Conditional_12_Conditional_25_Template(rf, ctx) { if (rf & 1) {
1217
- i0.ɵɵelementStart(0, "div", 216);
1218
- i0.ɵɵrepeaterCreate(1, ConnectionsComponent_Conditional_3_Conditional_12_Conditional_25_For_2_Template, 4, 1, "div", 222, _forTrack2);
1218
+ function ConnectionsComponent_Conditional_10_Conditional_12_Conditional_25_Template(rf, ctx) { if (rf & 1) {
1219
+ i0.ɵɵelementStart(0, "div", 219);
1220
+ i0.ɵɵrepeaterCreate(1, ConnectionsComponent_Conditional_10_Conditional_12_Conditional_25_For_2_Template, 4, 1, "div", 225, _forTrack2);
1219
1221
  i0.ɵɵelementEnd();
1220
1222
  } if (rf & 2) {
1221
- const ctx_r1 = i0.ɵɵnextContext(3);
1223
+ const ctx_r0 = i0.ɵɵnextContext(3);
1222
1224
  i0.ɵɵadvance();
1223
- i0.ɵɵrepeater(ctx_r1.ExistingCredentials);
1225
+ i0.ɵɵrepeater(ctx_r0.ExistingCredentials);
1224
1226
  } }
1225
- function ConnectionsComponent_Conditional_3_Conditional_12_Template(rf, ctx) { if (rf & 1) {
1227
+ function ConnectionsComponent_Conditional_10_Conditional_12_Template(rf, ctx) { if (rf & 1) {
1226
1228
  const _r35 = i0.ɵɵgetCurrentView();
1227
- i0.ɵɵelementStart(0, "div", 177)(1, "h3", 188);
1229
+ i0.ɵɵelementStart(0, "div", 180)(1, "h3", 191);
1228
1230
  i0.ɵɵtext(2, "Set up your connection");
1229
1231
  i0.ɵɵelementEnd();
1230
- i0.ɵɵelementStart(3, "div", 202)(4, "label", 203);
1232
+ i0.ɵɵelementStart(3, "div", 205)(4, "label", 206);
1231
1233
  i0.ɵɵtext(5, "Connection Name");
1232
1234
  i0.ɵɵelementEnd();
1233
- i0.ɵɵelementStart(6, "input", 204);
1234
- i0.ɵɵtwoWayListener("ngModelChange", function ConnectionsComponent_Conditional_3_Conditional_12_Template_input_ngModelChange_6_listener($event) { i0.ɵɵrestoreView(_r35); const ctx_r1 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r1.ConnectionName, $event) || (ctx_r1.ConnectionName = $event); return i0.ɵɵresetView($event); });
1235
+ i0.ɵɵelementStart(6, "input", 207);
1236
+ i0.ɵɵtwoWayListener("ngModelChange", function ConnectionsComponent_Conditional_10_Conditional_12_Template_input_ngModelChange_6_listener($event) { i0.ɵɵrestoreView(_r35); const ctx_r0 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r0.ConnectionName, $event) || (ctx_r0.ConnectionName = $event); return i0.ɵɵresetView($event); });
1235
1237
  i0.ɵɵelementEnd()();
1236
- i0.ɵɵelementStart(7, "div", 202)(8, "label", 205);
1238
+ i0.ɵɵelementStart(7, "div", 205)(8, "label", 208);
1237
1239
  i0.ɵɵtext(9, "Company");
1238
1240
  i0.ɵɵelementEnd();
1239
- i0.ɵɵconditionalCreate(10, ConnectionsComponent_Conditional_3_Conditional_12_Conditional_10_Template, 5, 2, "select", 206)(11, ConnectionsComponent_Conditional_3_Conditional_12_Conditional_11_Template, 1, 1, "input", 207)(12, ConnectionsComponent_Conditional_3_Conditional_12_Conditional_12_Template, 2, 0, "div", 208);
1241
+ i0.ɵɵconditionalCreate(10, ConnectionsComponent_Conditional_10_Conditional_12_Conditional_10_Template, 5, 2, "select", 209)(11, ConnectionsComponent_Conditional_10_Conditional_12_Conditional_11_Template, 1, 1, "input", 210)(12, ConnectionsComponent_Conditional_10_Conditional_12_Conditional_12_Template, 2, 0, "div", 211);
1240
1242
  i0.ɵɵelementEnd();
1241
- i0.ɵɵelementStart(13, "div", 202)(14, "label", 209);
1243
+ i0.ɵɵelementStart(13, "div", 205)(14, "label", 212);
1242
1244
  i0.ɵɵtext(15, "Description ");
1243
- i0.ɵɵelementStart(16, "span", 210);
1245
+ i0.ɵɵelementStart(16, "span", 213);
1244
1246
  i0.ɵɵtext(17, "(optional)");
1245
1247
  i0.ɵɵelementEnd()();
1246
- i0.ɵɵelementStart(18, "textarea", 211);
1247
- i0.ɵɵtwoWayListener("ngModelChange", function ConnectionsComponent_Conditional_3_Conditional_12_Template_textarea_ngModelChange_18_listener($event) { i0.ɵɵrestoreView(_r35); const ctx_r1 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r1.ConnectionDescription, $event) || (ctx_r1.ConnectionDescription = $event); return i0.ɵɵresetView($event); });
1248
+ i0.ɵɵelementStart(18, "textarea", 214);
1249
+ i0.ɵɵtwoWayListener("ngModelChange", function ConnectionsComponent_Conditional_10_Conditional_12_Template_textarea_ngModelChange_18_listener($event) { i0.ɵɵrestoreView(_r35); const ctx_r0 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r0.ConnectionDescription, $event) || (ctx_r0.ConnectionDescription = $event); return i0.ɵɵresetView($event); });
1248
1250
  i0.ɵɵelementEnd()();
1249
- i0.ɵɵelementStart(19, "div", 202)(20, "label", 212);
1251
+ i0.ɵɵelementStart(19, "div", 205)(20, "label", 215);
1250
1252
  i0.ɵɵtext(21, "Credential");
1251
1253
  i0.ɵɵelementEnd();
1252
- i0.ɵɵconditionalCreate(22, ConnectionsComponent_Conditional_3_Conditional_12_Conditional_22_Template, 7, 1, "div", 213)(23, ConnectionsComponent_Conditional_3_Conditional_12_Conditional_23_Template, 7, 0, "div", 214);
1253
- i0.ɵɵconditionalCreate(24, ConnectionsComponent_Conditional_3_Conditional_12_Conditional_24_Template, 2, 0, "div", 215);
1254
- i0.ɵɵconditionalCreate(25, ConnectionsComponent_Conditional_3_Conditional_12_Conditional_25_Template, 3, 0, "div", 216);
1254
+ i0.ɵɵconditionalCreate(22, ConnectionsComponent_Conditional_10_Conditional_12_Conditional_22_Template, 7, 1, "div", 216)(23, ConnectionsComponent_Conditional_10_Conditional_12_Conditional_23_Template, 7, 0, "div", 217);
1255
+ i0.ɵɵconditionalCreate(24, ConnectionsComponent_Conditional_10_Conditional_12_Conditional_24_Template, 2, 0, "div", 218);
1256
+ i0.ɵɵconditionalCreate(25, ConnectionsComponent_Conditional_10_Conditional_12_Conditional_25_Template, 3, 0, "div", 219);
1255
1257
  i0.ɵɵelementEnd()();
1256
1258
  } if (rf & 2) {
1257
- const ctx_r1 = i0.ɵɵnextContext(2);
1259
+ const ctx_r0 = i0.ɵɵnextContext(2);
1258
1260
  i0.ɵɵadvance(6);
1259
- i0.ɵɵtwoWayProperty("ngModel", ctx_r1.ConnectionName);
1261
+ i0.ɵɵtwoWayProperty("ngModel", ctx_r0.ConnectionName);
1260
1262
  i0.ɵɵadvance(4);
1261
- i0.ɵɵconditional(ctx_r1.NeedsCompanyPicker ? 10 : ctx_r1.Companies.length === 1 ? 11 : 12);
1263
+ i0.ɵɵconditional(ctx_r0.NeedsCompanyPicker ? 10 : ctx_r0.Companies.length === 1 ? 11 : 12);
1262
1264
  i0.ɵɵadvance(8);
1263
- i0.ɵɵtwoWayProperty("ngModel", ctx_r1.ConnectionDescription);
1265
+ i0.ɵɵtwoWayProperty("ngModel", ctx_r0.ConnectionDescription);
1264
1266
  i0.ɵɵadvance(4);
1265
- i0.ɵɵconditional(ctx_r1.SelectedCredential ? 22 : 23);
1267
+ i0.ɵɵconditional(ctx_r0.SelectedCredential ? 22 : 23);
1266
1268
  i0.ɵɵadvance(2);
1267
- i0.ɵɵconditional(ctx_r1.IsLoadingCredentials ? 24 : -1);
1269
+ i0.ɵɵconditional(ctx_r0.IsLoadingCredentials ? 24 : -1);
1268
1270
  i0.ɵɵadvance();
1269
- i0.ɵɵconditional(!ctx_r1.IsLoadingCredentials && ctx_r1.ExistingCredentials.length > 0 && !ctx_r1.SelectedCredential ? 25 : -1);
1271
+ i0.ɵɵconditional(!ctx_r0.IsLoadingCredentials && ctx_r0.ExistingCredentials.length > 0 && !ctx_r0.SelectedCredential ? 25 : -1);
1270
1272
  } }
1271
- function ConnectionsComponent_Conditional_3_Conditional_13_Conditional_3_Template(rf, ctx) { if (rf & 1) {
1273
+ function ConnectionsComponent_Conditional_10_Conditional_13_Conditional_3_Template(rf, ctx) { if (rf & 1) {
1272
1274
  const _r42 = i0.ɵɵgetCurrentView();
1273
- i0.ɵɵelementStart(0, "div", 224)(1, "button", 227);
1274
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_3_Conditional_13_Conditional_3_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r42); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.TestNewConnection()); });
1275
- i0.ɵɵelement(2, "i", 228);
1275
+ i0.ɵɵelementStart(0, "div", 227)(1, "button", 230);
1276
+ i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_10_Conditional_13_Conditional_3_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r42); const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.TestNewConnection()); });
1277
+ i0.ɵɵelement(2, "i", 231);
1276
1278
  i0.ɵɵtext(3, " Test Connection ");
1277
1279
  i0.ɵɵelementEnd();
1278
- i0.ɵɵelementStart(4, "p", 229);
1280
+ i0.ɵɵelementStart(4, "p", 232);
1279
1281
  i0.ɵɵtext(5, "We'll verify we can reach your system and authenticate.");
1280
1282
  i0.ɵɵelementEnd()();
1281
1283
  } }
1282
- function ConnectionsComponent_Conditional_3_Conditional_13_Conditional_4_Template(rf, ctx) { if (rf & 1) {
1283
- i0.ɵɵelementStart(0, "div", 225)(1, "div", 230);
1284
- i0.ɵɵelement(2, "i", 231);
1284
+ function ConnectionsComponent_Conditional_10_Conditional_13_Conditional_4_Template(rf, ctx) { if (rf & 1) {
1285
+ i0.ɵɵelementStart(0, "div", 228)(1, "div", 233);
1286
+ i0.ɵɵelement(2, "i", 234);
1285
1287
  i0.ɵɵelementEnd();
1286
1288
  i0.ɵɵelementStart(3, "p");
1287
1289
  i0.ɵɵtext(4, "Testing connection...");
1288
1290
  i0.ɵɵelementEnd()();
1289
1291
  } }
1290
- function ConnectionsComponent_Conditional_3_Conditional_13_Conditional_5_Conditional_2_Template(rf, ctx) { if (rf & 1) {
1291
- i0.ɵɵelement(0, "i", 47);
1292
+ function ConnectionsComponent_Conditional_10_Conditional_13_Conditional_5_Conditional_2_Template(rf, ctx) { if (rf & 1) {
1293
+ i0.ɵɵelement(0, "i", 50);
1292
1294
  } }
1293
- function ConnectionsComponent_Conditional_3_Conditional_13_Conditional_5_Conditional_3_Template(rf, ctx) { if (rf & 1) {
1294
- i0.ɵɵelement(0, "i", 48);
1295
+ function ConnectionsComponent_Conditional_10_Conditional_13_Conditional_5_Conditional_3_Template(rf, ctx) { if (rf & 1) {
1296
+ i0.ɵɵelement(0, "i", 51);
1295
1297
  } }
1296
- function ConnectionsComponent_Conditional_3_Conditional_13_Conditional_5_Conditional_6_Template(rf, ctx) { if (rf & 1) {
1297
- i0.ɵɵelementStart(0, "div", 235);
1298
+ function ConnectionsComponent_Conditional_10_Conditional_13_Conditional_5_Conditional_6_Template(rf, ctx) { if (rf & 1) {
1299
+ i0.ɵɵelementStart(0, "div", 238);
1298
1300
  i0.ɵɵtext(1);
1299
1301
  i0.ɵɵelementEnd();
1300
1302
  } if (rf & 2) {
1301
- const ctx_r1 = i0.ɵɵnextContext(4);
1303
+ const ctx_r0 = i0.ɵɵnextContext(4);
1302
1304
  i0.ɵɵadvance();
1303
- i0.ɵɵtextInterpolate1(" Server version: ", ctx_r1.TestResult.ServerVersion, " ");
1305
+ i0.ɵɵtextInterpolate1(" Server version: ", ctx_r0.TestResult.ServerVersion, " ");
1304
1306
  } }
1305
- function ConnectionsComponent_Conditional_3_Conditional_13_Conditional_5_Conditional_7_Template(rf, ctx) { if (rf & 1) {
1307
+ function ConnectionsComponent_Conditional_10_Conditional_13_Conditional_5_Conditional_7_Template(rf, ctx) { if (rf & 1) {
1306
1308
  const _r43 = i0.ɵɵgetCurrentView();
1307
- i0.ɵɵelementStart(0, "button", 237);
1308
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_3_Conditional_13_Conditional_5_Conditional_7_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r43); const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.TestNewConnection()); });
1309
- i0.ɵɵelement(1, "i", 238);
1309
+ i0.ɵɵelementStart(0, "button", 240);
1310
+ i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_10_Conditional_13_Conditional_5_Conditional_7_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r43); const ctx_r0 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r0.TestNewConnection()); });
1311
+ i0.ɵɵelement(1, "i", 241);
1310
1312
  i0.ɵɵtext(2, " Retry ");
1311
1313
  i0.ɵɵelementEnd();
1312
1314
  } }
1313
- function ConnectionsComponent_Conditional_3_Conditional_13_Conditional_5_Template(rf, ctx) { if (rf & 1) {
1314
- i0.ɵɵelementStart(0, "div", 232)(1, "div", 233);
1315
- i0.ɵɵconditionalCreate(2, ConnectionsComponent_Conditional_3_Conditional_13_Conditional_5_Conditional_2_Template, 1, 0, "i", 47)(3, ConnectionsComponent_Conditional_3_Conditional_13_Conditional_5_Conditional_3_Template, 1, 0, "i", 48);
1315
+ function ConnectionsComponent_Conditional_10_Conditional_13_Conditional_5_Template(rf, ctx) { if (rf & 1) {
1316
+ i0.ɵɵelementStart(0, "div", 235)(1, "div", 236);
1317
+ i0.ɵɵconditionalCreate(2, ConnectionsComponent_Conditional_10_Conditional_13_Conditional_5_Conditional_2_Template, 1, 0, "i", 50)(3, ConnectionsComponent_Conditional_10_Conditional_13_Conditional_5_Conditional_3_Template, 1, 0, "i", 51);
1316
1318
  i0.ɵɵelementEnd();
1317
- i0.ɵɵelementStart(4, "div", 234);
1319
+ i0.ɵɵelementStart(4, "div", 237);
1318
1320
  i0.ɵɵtext(5);
1319
1321
  i0.ɵɵelementEnd();
1320
- i0.ɵɵconditionalCreate(6, ConnectionsComponent_Conditional_3_Conditional_13_Conditional_5_Conditional_6_Template, 2, 1, "div", 235);
1321
- i0.ɵɵconditionalCreate(7, ConnectionsComponent_Conditional_3_Conditional_13_Conditional_5_Conditional_7_Template, 3, 0, "button", 236);
1322
+ i0.ɵɵconditionalCreate(6, ConnectionsComponent_Conditional_10_Conditional_13_Conditional_5_Conditional_6_Template, 2, 1, "div", 238);
1323
+ i0.ɵɵconditionalCreate(7, ConnectionsComponent_Conditional_10_Conditional_13_Conditional_5_Conditional_7_Template, 3, 0, "button", 239);
1322
1324
  i0.ɵɵelementEnd();
1323
1325
  } if (rf & 2) {
1324
- const ctx_r1 = i0.ɵɵnextContext(3);
1325
- i0.ɵɵclassProp("test-result-success", ctx_r1.TestResult.Success)("test-result-failure", !ctx_r1.TestResult.Success);
1326
+ const ctx_r0 = i0.ɵɵnextContext(3);
1327
+ i0.ɵɵclassProp("test-result-success", ctx_r0.TestResult.Success)("test-result-failure", !ctx_r0.TestResult.Success);
1326
1328
  i0.ɵɵadvance(2);
1327
- i0.ɵɵconditional(ctx_r1.TestResult.Success ? 2 : 3);
1329
+ i0.ɵɵconditional(ctx_r0.TestResult.Success ? 2 : 3);
1328
1330
  i0.ɵɵadvance(3);
1329
- i0.ɵɵtextInterpolate(ctx_r1.TestResult.Message);
1331
+ i0.ɵɵtextInterpolate(ctx_r0.TestResult.Message);
1330
1332
  i0.ɵɵadvance();
1331
- i0.ɵɵconditional(ctx_r1.TestResult.Success && ctx_r1.TestResult.ServerVersion ? 6 : -1);
1333
+ i0.ɵɵconditional(ctx_r0.TestResult.Success && ctx_r0.TestResult.ServerVersion ? 6 : -1);
1332
1334
  i0.ɵɵadvance();
1333
- i0.ɵɵconditional(!ctx_r1.TestResult.Success ? 7 : -1);
1335
+ i0.ɵɵconditional(!ctx_r0.TestResult.Success ? 7 : -1);
1334
1336
  } }
1335
- function ConnectionsComponent_Conditional_3_Conditional_13_Template(rf, ctx) { if (rf & 1) {
1336
- i0.ɵɵelementStart(0, "div", 178)(1, "h3", 188);
1337
+ function ConnectionsComponent_Conditional_10_Conditional_13_Template(rf, ctx) { if (rf & 1) {
1338
+ i0.ɵɵelementStart(0, "div", 181)(1, "h3", 191);
1337
1339
  i0.ɵɵtext(2, "Let's verify everything works");
1338
1340
  i0.ɵɵelementEnd();
1339
- i0.ɵɵconditionalCreate(3, ConnectionsComponent_Conditional_3_Conditional_13_Conditional_3_Template, 6, 0, "div", 224);
1340
- i0.ɵɵconditionalCreate(4, ConnectionsComponent_Conditional_3_Conditional_13_Conditional_4_Template, 5, 0, "div", 225);
1341
- i0.ɵɵconditionalCreate(5, ConnectionsComponent_Conditional_3_Conditional_13_Conditional_5_Template, 8, 8, "div", 226);
1341
+ i0.ɵɵconditionalCreate(3, ConnectionsComponent_Conditional_10_Conditional_13_Conditional_3_Template, 6, 0, "div", 227);
1342
+ i0.ɵɵconditionalCreate(4, ConnectionsComponent_Conditional_10_Conditional_13_Conditional_4_Template, 5, 0, "div", 228);
1343
+ i0.ɵɵconditionalCreate(5, ConnectionsComponent_Conditional_10_Conditional_13_Conditional_5_Template, 8, 8, "div", 229);
1342
1344
  i0.ɵɵelementEnd();
1343
1345
  } if (rf & 2) {
1344
- const ctx_r1 = i0.ɵɵnextContext(2);
1346
+ const ctx_r0 = i0.ɵɵnextContext(2);
1345
1347
  i0.ɵɵadvance(3);
1346
- i0.ɵɵconditional(!ctx_r1.TestResult && !ctx_r1.IsTesting ? 3 : -1);
1348
+ i0.ɵɵconditional(!ctx_r0.TestResult && !ctx_r0.IsTesting ? 3 : -1);
1347
1349
  i0.ɵɵadvance();
1348
- i0.ɵɵconditional(ctx_r1.IsTesting ? 4 : -1);
1350
+ i0.ɵɵconditional(ctx_r0.IsTesting ? 4 : -1);
1349
1351
  i0.ɵɵadvance();
1350
- i0.ɵɵconditional(ctx_r1.TestResult ? 5 : -1);
1352
+ i0.ɵɵconditional(ctx_r0.TestResult ? 5 : -1);
1351
1353
  } }
1352
- function ConnectionsComponent_Conditional_3_Conditional_17_Template(rf, ctx) { if (rf & 1) {
1354
+ function ConnectionsComponent_Conditional_10_Conditional_17_Template(rf, ctx) { if (rf & 1) {
1353
1355
  const _r44 = i0.ɵɵgetCurrentView();
1354
- i0.ɵɵelementStart(0, "button", 42);
1355
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_3_Conditional_17_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r44); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.PreviousStep()); });
1356
+ i0.ɵɵelementStart(0, "button", 45);
1357
+ i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_10_Conditional_17_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r44); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.PreviousStep()); });
1356
1358
  i0.ɵɵtext(1, " Back ");
1357
1359
  i0.ɵɵelementEnd();
1358
1360
  } }
1359
- function ConnectionsComponent_Conditional_3_Conditional_19_Template(rf, ctx) { if (rf & 1) {
1360
- i0.ɵɵelement(0, "i", 41);
1361
+ function ConnectionsComponent_Conditional_10_Conditional_19_Template(rf, ctx) { if (rf & 1) {
1362
+ i0.ɵɵelement(0, "i", 44);
1361
1363
  i0.ɵɵtext(1, " Saving... ");
1362
1364
  } }
1363
- function ConnectionsComponent_Conditional_3_Conditional_20_Template(rf, ctx) { if (rf & 1) {
1365
+ function ConnectionsComponent_Conditional_10_Conditional_20_Template(rf, ctx) { if (rf & 1) {
1364
1366
  i0.ɵɵtext(0);
1365
1367
  } if (rf & 2) {
1366
- const ctx_r1 = i0.ɵɵnextContext(2);
1367
- i0.ɵɵtextInterpolate1(" ", ctx_r1.NextButtonLabel, " ");
1368
+ const ctx_r0 = i0.ɵɵnextContext(2);
1369
+ i0.ɵɵtextInterpolate1(" ", ctx_r0.NextButtonLabel, " ");
1368
1370
  } }
1369
- function ConnectionsComponent_Conditional_3_Template(rf, ctx) { if (rf & 1) {
1371
+ function ConnectionsComponent_Conditional_10_Template(rf, ctx) { if (rf & 1) {
1370
1372
  const _r30 = i0.ɵɵgetCurrentView();
1371
- i0.ɵɵelementStart(0, "div", 3)(1, "div", 172)(2, "button", 173);
1372
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_3_Template_button_click_2_listener() { i0.ɵɵrestoreView(_r30); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.CloseWizard()); });
1373
- i0.ɵɵelement(3, "i", 67);
1373
+ i0.ɵɵelementStart(0, "div", 9)(1, "div", 175)(2, "button", 176);
1374
+ i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_10_Template_button_click_2_listener() { i0.ɵɵrestoreView(_r30); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.CloseWizard()); });
1375
+ i0.ɵɵelement(3, "i", 70);
1374
1376
  i0.ɵɵtext(4, " Back to Integrations ");
1375
1377
  i0.ɵɵelementEnd();
1376
- i0.ɵɵelementStart(5, "h2", 174);
1378
+ i0.ɵɵelementStart(5, "h2", 177);
1377
1379
  i0.ɵɵtext(6, "New Integration");
1378
1380
  i0.ɵɵelementEnd()();
1379
- i0.ɵɵelementStart(7, "div", 175);
1380
- i0.ɵɵrepeaterCreate(8, ConnectionsComponent_Conditional_3_For_9_Template, 7, 7, null, null, _forTrack3);
1381
- i0.ɵɵelementEnd();
1382
- i0.ɵɵelementStart(10, "div", 176);
1383
- i0.ɵɵconditionalCreate(11, ConnectionsComponent_Conditional_3_Conditional_11_Template, 9, 2, "div", 177);
1384
- i0.ɵɵconditionalCreate(12, ConnectionsComponent_Conditional_3_Conditional_12_Template, 26, 6, "div", 177);
1385
- i0.ɵɵconditionalCreate(13, ConnectionsComponent_Conditional_3_Conditional_13_Template, 6, 3, "div", 178);
1386
- i0.ɵɵelementEnd();
1387
- i0.ɵɵelementStart(14, "div", 179);
1388
- i0.ɵɵelement(15, "div", 180);
1389
- i0.ɵɵelementStart(16, "div", 181);
1390
- i0.ɵɵconditionalCreate(17, ConnectionsComponent_Conditional_3_Conditional_17_Template, 2, 0, "button", 182);
1391
- i0.ɵɵelementStart(18, "button", 54);
1392
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_3_Template_button_click_18_listener() { i0.ɵɵrestoreView(_r30); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.FinishWizard()); });
1393
- i0.ɵɵconditionalCreate(19, ConnectionsComponent_Conditional_3_Conditional_19_Template, 2, 0)(20, ConnectionsComponent_Conditional_3_Conditional_20_Template, 1, 1);
1381
+ i0.ɵɵelementStart(7, "div", 178);
1382
+ i0.ɵɵrepeaterCreate(8, ConnectionsComponent_Conditional_10_For_9_Template, 7, 7, null, null, _forTrack3);
1383
+ i0.ɵɵelementEnd();
1384
+ i0.ɵɵelementStart(10, "div", 179);
1385
+ i0.ɵɵconditionalCreate(11, ConnectionsComponent_Conditional_10_Conditional_11_Template, 9, 2, "div", 180);
1386
+ i0.ɵɵconditionalCreate(12, ConnectionsComponent_Conditional_10_Conditional_12_Template, 26, 6, "div", 180);
1387
+ i0.ɵɵconditionalCreate(13, ConnectionsComponent_Conditional_10_Conditional_13_Template, 6, 3, "div", 181);
1388
+ i0.ɵɵelementEnd();
1389
+ i0.ɵɵelementStart(14, "div", 182);
1390
+ i0.ɵɵelement(15, "div", 183);
1391
+ i0.ɵɵelementStart(16, "div", 184);
1392
+ i0.ɵɵconditionalCreate(17, ConnectionsComponent_Conditional_10_Conditional_17_Template, 2, 0, "button", 185);
1393
+ i0.ɵɵelementStart(18, "button", 57);
1394
+ i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_10_Template_button_click_18_listener() { i0.ɵɵrestoreView(_r30); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.FinishWizard()); });
1395
+ i0.ɵɵconditionalCreate(19, ConnectionsComponent_Conditional_10_Conditional_19_Template, 2, 0)(20, ConnectionsComponent_Conditional_10_Conditional_20_Template, 1, 1);
1394
1396
  i0.ɵɵelementEnd()()()();
1395
1397
  } if (rf & 2) {
1396
- const ctx_r1 = i0.ɵɵnextContext();
1398
+ const ctx_r0 = i0.ɵɵnextContext();
1397
1399
  i0.ɵɵadvance(8);
1398
- i0.ɵɵrepeater(ctx_r1.WizardSteps);
1400
+ i0.ɵɵrepeater(ctx_r0.WizardSteps);
1399
1401
  i0.ɵɵadvance(3);
1400
- i0.ɵɵconditional(ctx_r1.WizardStep === 1 ? 11 : -1);
1402
+ i0.ɵɵconditional(ctx_r0.WizardStep === 1 ? 11 : -1);
1401
1403
  i0.ɵɵadvance();
1402
- i0.ɵɵconditional(ctx_r1.WizardStep === 2 ? 12 : -1);
1404
+ i0.ɵɵconditional(ctx_r0.WizardStep === 2 ? 12 : -1);
1403
1405
  i0.ɵɵadvance();
1404
- i0.ɵɵconditional(ctx_r1.WizardStep === 3 ? 13 : -1);
1406
+ i0.ɵɵconditional(ctx_r0.WizardStep === 3 ? 13 : -1);
1405
1407
  i0.ɵɵadvance(4);
1406
- i0.ɵɵconditional(ctx_r1.WizardStep > 1 ? 17 : -1);
1408
+ i0.ɵɵconditional(ctx_r0.WizardStep > 1 ? 17 : -1);
1407
1409
  i0.ɵɵadvance();
1408
- i0.ɵɵproperty("disabled", ctx_r1.IsNextDisabled || ctx_r1.IsSaving);
1410
+ i0.ɵɵproperty("disabled", ctx_r0.IsNextDisabled || ctx_r0.IsSaving);
1409
1411
  i0.ɵɵadvance();
1410
- i0.ɵɵconditional(ctx_r1.IsSaving ? 19 : 20);
1412
+ i0.ɵɵconditional(ctx_r0.IsSaving ? 19 : 20);
1411
1413
  } }
1412
- function ConnectionsComponent_Conditional_6_Conditional_8_Template(rf, ctx) { if (rf & 1) {
1413
- i0.ɵɵelementStart(0, "div", 243);
1414
- i0.ɵɵelement(1, "mj-loading", 244);
1414
+ function ConnectionsComponent_Conditional_13_Conditional_8_Template(rf, ctx) { if (rf & 1) {
1415
+ i0.ɵɵelementStart(0, "div", 246);
1416
+ i0.ɵɵelement(1, "mj-loading", 247);
1415
1417
  i0.ɵɵelementEnd();
1416
1418
  } }
1417
- function ConnectionsComponent_Conditional_6_Conditional_9_Conditional_17_Template(rf, ctx) { if (rf & 1) {
1419
+ function ConnectionsComponent_Conditional_13_Conditional_9_Conditional_17_Template(rf, ctx) { if (rf & 1) {
1418
1420
  const _r47 = i0.ɵɵgetCurrentView();
1419
- i0.ɵɵelementStart(0, "div", 252)(1, "div", 255);
1420
- i0.ɵɵelement(2, "i", 219);
1421
+ i0.ɵɵelementStart(0, "div", 255)(1, "div", 258);
1422
+ i0.ɵɵelement(2, "i", 222);
1421
1423
  i0.ɵɵelementStart(3, "span");
1422
1424
  i0.ɵɵtext(4);
1423
1425
  i0.ɵɵelementEnd()();
1424
- i0.ɵɵelementStart(5, "button", 256);
1425
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_6_Conditional_9_Conditional_17_Template_button_click_5_listener() { i0.ɵɵrestoreView(_r47); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.ClearEditCredential()); });
1426
- i0.ɵɵelement(6, "i", 118);
1426
+ i0.ɵɵelementStart(5, "button", 259);
1427
+ i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_13_Conditional_9_Conditional_17_Template_button_click_5_listener() { i0.ɵɵrestoreView(_r47); const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.ClearEditCredential()); });
1428
+ i0.ɵɵelement(6, "i", 121);
1427
1429
  i0.ɵɵelementEnd()();
1428
1430
  } if (rf & 2) {
1429
- const ctx_r1 = i0.ɵɵnextContext(3);
1431
+ const ctx_r0 = i0.ɵɵnextContext(3);
1430
1432
  i0.ɵɵadvance(4);
1431
- i0.ɵɵtextInterpolate(ctx_r1.EditCredential.Name);
1433
+ i0.ɵɵtextInterpolate(ctx_r0.EditCredential.Name);
1432
1434
  } }
1433
- function ConnectionsComponent_Conditional_6_Conditional_9_Conditional_18_Conditional_4_For_2_Template(rf, ctx) { if (rf & 1) {
1435
+ function ConnectionsComponent_Conditional_13_Conditional_9_Conditional_18_Conditional_4_For_2_Template(rf, ctx) { if (rf & 1) {
1434
1436
  const _r49 = i0.ɵɵgetCurrentView();
1435
- i0.ɵɵelementStart(0, "div", 261);
1436
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_6_Conditional_9_Conditional_18_Conditional_4_For_2_Template_div_click_0_listener() { const cred_r50 = i0.ɵɵrestoreView(_r49).$implicit; const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.SelectEditCredential(cred_r50)); });
1437
- i0.ɵɵelement(1, "i", 219);
1437
+ i0.ɵɵelementStart(0, "div", 264);
1438
+ i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_13_Conditional_9_Conditional_18_Conditional_4_For_2_Template_div_click_0_listener() { const cred_r50 = i0.ɵɵrestoreView(_r49).$implicit; const ctx_r0 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r0.SelectEditCredential(cred_r50)); });
1439
+ i0.ɵɵelement(1, "i", 222);
1438
1440
  i0.ɵɵelementStart(2, "span");
1439
1441
  i0.ɵɵtext(3);
1440
1442
  i0.ɵɵelementEnd()();
@@ -1443,145 +1445,145 @@ function ConnectionsComponent_Conditional_6_Conditional_9_Conditional_18_Conditi
1443
1445
  i0.ɵɵadvance(3);
1444
1446
  i0.ɵɵtextInterpolate(cred_r50.Name);
1445
1447
  } }
1446
- function ConnectionsComponent_Conditional_6_Conditional_9_Conditional_18_Conditional_4_Template(rf, ctx) { if (rf & 1) {
1447
- i0.ɵɵelementStart(0, "div", 259);
1448
- i0.ɵɵrepeaterCreate(1, ConnectionsComponent_Conditional_6_Conditional_9_Conditional_18_Conditional_4_For_2_Template, 4, 1, "div", 260, _forTrack2);
1448
+ function ConnectionsComponent_Conditional_13_Conditional_9_Conditional_18_Conditional_4_Template(rf, ctx) { if (rf & 1) {
1449
+ i0.ɵɵelementStart(0, "div", 262);
1450
+ i0.ɵɵrepeaterCreate(1, ConnectionsComponent_Conditional_13_Conditional_9_Conditional_18_Conditional_4_For_2_Template, 4, 1, "div", 263, _forTrack2);
1449
1451
  i0.ɵɵelementEnd();
1450
1452
  } if (rf & 2) {
1451
- const ctx_r1 = i0.ɵɵnextContext(4);
1453
+ const ctx_r0 = i0.ɵɵnextContext(4);
1452
1454
  i0.ɵɵadvance();
1453
- i0.ɵɵrepeater(ctx_r1.EditCredentials);
1455
+ i0.ɵɵrepeater(ctx_r0.EditCredentials);
1454
1456
  } }
1455
- function ConnectionsComponent_Conditional_6_Conditional_9_Conditional_18_Template(rf, ctx) { if (rf & 1) {
1457
+ function ConnectionsComponent_Conditional_13_Conditional_9_Conditional_18_Template(rf, ctx) { if (rf & 1) {
1456
1458
  const _r48 = i0.ɵɵgetCurrentView();
1457
- i0.ɵɵelementStart(0, "div", 257)(1, "button", 258);
1458
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_6_Conditional_9_Conditional_18_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r48); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.OpenEditCredentialDialog()); });
1459
- i0.ɵɵelement(2, "i", 12);
1459
+ i0.ɵɵelementStart(0, "div", 260)(1, "button", 261);
1460
+ i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_13_Conditional_9_Conditional_18_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r48); const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.OpenEditCredentialDialog()); });
1461
+ i0.ɵɵelement(2, "i", 15);
1460
1462
  i0.ɵɵtext(3, " New Credential ");
1461
1463
  i0.ɵɵelementEnd()();
1462
- i0.ɵɵconditionalCreate(4, ConnectionsComponent_Conditional_6_Conditional_9_Conditional_18_Conditional_4_Template, 3, 0, "div", 259);
1464
+ i0.ɵɵconditionalCreate(4, ConnectionsComponent_Conditional_13_Conditional_9_Conditional_18_Conditional_4_Template, 3, 0, "div", 262);
1463
1465
  } if (rf & 2) {
1464
- const ctx_r1 = i0.ɵɵnextContext(3);
1466
+ const ctx_r0 = i0.ɵɵnextContext(3);
1465
1467
  i0.ɵɵadvance(4);
1466
- i0.ɵɵconditional(ctx_r1.EditCredentials.length > 0 ? 4 : -1);
1468
+ i0.ɵɵconditional(ctx_r0.EditCredentials.length > 0 ? 4 : -1);
1467
1469
  } }
1468
- function ConnectionsComponent_Conditional_6_Conditional_9_Conditional_31_Template(rf, ctx) { if (rf & 1) {
1469
- i0.ɵɵelement(0, "i", 41);
1470
+ function ConnectionsComponent_Conditional_13_Conditional_9_Conditional_31_Template(rf, ctx) { if (rf & 1) {
1471
+ i0.ɵɵelement(0, "i", 44);
1470
1472
  i0.ɵɵtext(1, " Saving... ");
1471
1473
  } }
1472
- function ConnectionsComponent_Conditional_6_Conditional_9_Conditional_32_Template(rf, ctx) { if (rf & 1) {
1474
+ function ConnectionsComponent_Conditional_13_Conditional_9_Conditional_32_Template(rf, ctx) { if (rf & 1) {
1473
1475
  i0.ɵɵtext(0, " Save Changes ");
1474
1476
  } }
1475
- function ConnectionsComponent_Conditional_6_Conditional_9_Template(rf, ctx) { if (rf & 1) {
1477
+ function ConnectionsComponent_Conditional_13_Conditional_9_Template(rf, ctx) { if (rf & 1) {
1476
1478
  const _r46 = i0.ɵɵgetCurrentView();
1477
- i0.ɵɵelementStart(0, "div", 245)(1, "div", 246)(2, "label", 247);
1479
+ i0.ɵɵelementStart(0, "div", 248)(1, "div", 249)(2, "label", 250);
1478
1480
  i0.ɵɵtext(3, "Connection Name");
1479
1481
  i0.ɵɵelementEnd();
1480
- i0.ɵɵelementStart(4, "input", 248);
1481
- i0.ɵɵtwoWayListener("ngModelChange", function ConnectionsComponent_Conditional_6_Conditional_9_Template_input_ngModelChange_4_listener($event) { i0.ɵɵrestoreView(_r46); const ctx_r1 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r1.EditName, $event) || (ctx_r1.EditName = $event); return i0.ɵɵresetView($event); });
1482
+ i0.ɵɵelementStart(4, "input", 251);
1483
+ i0.ɵɵtwoWayListener("ngModelChange", function ConnectionsComponent_Conditional_13_Conditional_9_Template_input_ngModelChange_4_listener($event) { i0.ɵɵrestoreView(_r46); const ctx_r0 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r0.EditName, $event) || (ctx_r0.EditName = $event); return i0.ɵɵresetView($event); });
1482
1484
  i0.ɵɵelementEnd()();
1483
- i0.ɵɵelementStart(5, "div", 246)(6, "label", 247);
1485
+ i0.ɵɵelementStart(5, "div", 249)(6, "label", 250);
1484
1486
  i0.ɵɵtext(7, "Status");
1485
1487
  i0.ɵɵelementEnd();
1486
- i0.ɵɵelementStart(8, "div", 249)(9, "label", 250)(10, "input", 135);
1487
- i0.ɵɵtwoWayListener("ngModelChange", function ConnectionsComponent_Conditional_6_Conditional_9_Template_input_ngModelChange_10_listener($event) { i0.ɵɵrestoreView(_r46); const ctx_r1 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r1.EditIsActive, $event) || (ctx_r1.EditIsActive = $event); return i0.ɵɵresetView($event); });
1488
+ i0.ɵɵelementStart(8, "div", 252)(9, "label", 253)(10, "input", 138);
1489
+ i0.ɵɵtwoWayListener("ngModelChange", function ConnectionsComponent_Conditional_13_Conditional_9_Template_input_ngModelChange_10_listener($event) { i0.ɵɵrestoreView(_r46); const ctx_r0 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r0.EditIsActive, $event) || (ctx_r0.EditIsActive = $event); return i0.ɵɵresetView($event); });
1488
1490
  i0.ɵɵelementEnd();
1489
- i0.ɵɵelement(11, "span", 162);
1491
+ i0.ɵɵelement(11, "span", 165);
1490
1492
  i0.ɵɵelementEnd();
1491
- i0.ɵɵelementStart(12, "span", 251);
1493
+ i0.ɵɵelementStart(12, "span", 254);
1492
1494
  i0.ɵɵtext(13);
1493
1495
  i0.ɵɵelementEnd()()();
1494
- i0.ɵɵelementStart(14, "div", 246)(15, "label", 247);
1496
+ i0.ɵɵelementStart(14, "div", 249)(15, "label", 250);
1495
1497
  i0.ɵɵtext(16, "Credential");
1496
1498
  i0.ɵɵelementEnd();
1497
- i0.ɵɵconditionalCreate(17, ConnectionsComponent_Conditional_6_Conditional_9_Conditional_17_Template, 7, 1, "div", 252)(18, ConnectionsComponent_Conditional_6_Conditional_9_Conditional_18_Template, 5, 1);
1499
+ i0.ɵɵconditionalCreate(17, ConnectionsComponent_Conditional_13_Conditional_9_Conditional_17_Template, 7, 1, "div", 255)(18, ConnectionsComponent_Conditional_13_Conditional_9_Conditional_18_Template, 5, 1);
1498
1500
  i0.ɵɵelementEnd();
1499
- i0.ɵɵelementStart(19, "div", 246)(20, "label", 247);
1501
+ i0.ɵɵelementStart(19, "div", 249)(20, "label", 250);
1500
1502
  i0.ɵɵtext(21, "Integration");
1501
1503
  i0.ɵɵelementEnd();
1502
- i0.ɵɵelementStart(22, "div", 253);
1504
+ i0.ɵɵelementStart(22, "div", 256);
1503
1505
  i0.ɵɵtext(23);
1504
1506
  i0.ɵɵelementEnd()();
1505
- i0.ɵɵelementStart(24, "div", 246)(25, "label", 247);
1507
+ i0.ɵɵelementStart(24, "div", 249)(25, "label", 250);
1506
1508
  i0.ɵɵtext(26, "Company");
1507
1509
  i0.ɵɵelementEnd();
1508
- i0.ɵɵelementStart(27, "div", 253);
1510
+ i0.ɵɵelementStart(27, "div", 256);
1509
1511
  i0.ɵɵtext(28);
1510
1512
  i0.ɵɵelementEnd()()();
1511
- i0.ɵɵelementStart(29, "div", 254)(30, "button", 54);
1512
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_6_Conditional_9_Template_button_click_30_listener() { i0.ɵɵrestoreView(_r46); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.SaveEditChanges()); });
1513
- i0.ɵɵconditionalCreate(31, ConnectionsComponent_Conditional_6_Conditional_9_Conditional_31_Template, 2, 0)(32, ConnectionsComponent_Conditional_6_Conditional_9_Conditional_32_Template, 1, 0);
1513
+ i0.ɵɵelementStart(29, "div", 257)(30, "button", 57);
1514
+ i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_13_Conditional_9_Template_button_click_30_listener() { i0.ɵɵrestoreView(_r46); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.SaveEditChanges()); });
1515
+ i0.ɵɵconditionalCreate(31, ConnectionsComponent_Conditional_13_Conditional_9_Conditional_31_Template, 2, 0)(32, ConnectionsComponent_Conditional_13_Conditional_9_Conditional_32_Template, 1, 0);
1514
1516
  i0.ɵɵelementEnd();
1515
- i0.ɵɵelementStart(33, "button", 42);
1516
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_6_Conditional_9_Template_button_click_33_listener() { i0.ɵɵrestoreView(_r46); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.CloseEditPanel()); });
1517
+ i0.ɵɵelementStart(33, "button", 45);
1518
+ i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_13_Conditional_9_Template_button_click_33_listener() { i0.ɵɵrestoreView(_r46); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.CloseEditPanel()); });
1517
1519
  i0.ɵɵtext(34, " Cancel ");
1518
1520
  i0.ɵɵelementEnd()();
1519
1521
  } if (rf & 2) {
1520
- const ctx_r1 = i0.ɵɵnextContext(2);
1522
+ const ctx_r0 = i0.ɵɵnextContext(2);
1521
1523
  i0.ɵɵadvance(4);
1522
- i0.ɵɵtwoWayProperty("ngModel", ctx_r1.EditName);
1524
+ i0.ɵɵtwoWayProperty("ngModel", ctx_r0.EditName);
1523
1525
  i0.ɵɵadvance(6);
1524
- i0.ɵɵtwoWayProperty("ngModel", ctx_r1.EditIsActive);
1526
+ i0.ɵɵtwoWayProperty("ngModel", ctx_r0.EditIsActive);
1525
1527
  i0.ɵɵadvance(2);
1526
- i0.ɵɵclassProp("active", ctx_r1.EditIsActive);
1528
+ i0.ɵɵclassProp("active", ctx_r0.EditIsActive);
1527
1529
  i0.ɵɵadvance();
1528
- i0.ɵɵtextInterpolate1(" ", ctx_r1.EditIsActive ? "Active" : "Inactive", " ");
1530
+ i0.ɵɵtextInterpolate1(" ", ctx_r0.EditIsActive ? "Active" : "Inactive", " ");
1529
1531
  i0.ɵɵadvance(4);
1530
- i0.ɵɵconditional(ctx_r1.EditCredential ? 17 : 18);
1532
+ i0.ɵɵconditional(ctx_r0.EditCredential ? 17 : 18);
1531
1533
  i0.ɵɵadvance(6);
1532
- i0.ɵɵtextInterpolate1(" ", ctx_r1.EditingSummary.Integration.Integration, " ");
1534
+ i0.ɵɵtextInterpolate1(" ", ctx_r0.EditingSummary.Integration.Integration, " ");
1533
1535
  i0.ɵɵadvance(5);
1534
- i0.ɵɵtextInterpolate1(" ", ctx_r1.EditingSummary.Integration.Company, " ");
1536
+ i0.ɵɵtextInterpolate1(" ", ctx_r0.EditingSummary.Integration.Company, " ");
1535
1537
  i0.ɵɵadvance(2);
1536
- i0.ɵɵproperty("disabled", ctx_r1.IsEditSaving || !ctx_r1.EditName.trim());
1538
+ i0.ɵɵproperty("disabled", ctx_r0.IsEditSaving || !ctx_r0.EditName.trim());
1537
1539
  i0.ɵɵadvance();
1538
- i0.ɵɵconditional(ctx_r1.IsEditSaving ? 31 : 32);
1540
+ i0.ɵɵconditional(ctx_r0.IsEditSaving ? 31 : 32);
1539
1541
  } }
1540
- function ConnectionsComponent_Conditional_6_Template(rf, ctx) { if (rf & 1) {
1542
+ function ConnectionsComponent_Conditional_13_Template(rf, ctx) { if (rf & 1) {
1541
1543
  const _r45 = i0.ɵɵgetCurrentView();
1542
- i0.ɵɵelementStart(0, "div", 239)(1, "div", 240)(2, "div", 241);
1544
+ i0.ɵɵelementStart(0, "div", 242)(1, "div", 243)(2, "div", 244);
1543
1545
  i0.ɵɵelement(3, "i");
1544
1546
  i0.ɵɵelementEnd();
1545
1547
  i0.ɵɵelementStart(4, "span");
1546
1548
  i0.ɵɵtext(5, "Configure Integration");
1547
1549
  i0.ɵɵelementEnd()();
1548
- i0.ɵɵelementStart(6, "button", 242);
1549
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_6_Template_button_click_6_listener() { i0.ɵɵrestoreView(_r45); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.CloseEditPanel()); });
1550
- i0.ɵɵelement(7, "i", 118);
1550
+ i0.ɵɵelementStart(6, "button", 245);
1551
+ i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_13_Template_button_click_6_listener() { i0.ɵɵrestoreView(_r45); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.CloseEditPanel()); });
1552
+ i0.ɵɵelement(7, "i", 121);
1551
1553
  i0.ɵɵelementEnd()();
1552
- i0.ɵɵconditionalCreate(8, ConnectionsComponent_Conditional_6_Conditional_8_Template, 2, 0, "div", 243)(9, ConnectionsComponent_Conditional_6_Conditional_9_Template, 35, 10);
1554
+ i0.ɵɵconditionalCreate(8, ConnectionsComponent_Conditional_13_Conditional_8_Template, 2, 0, "div", 246)(9, ConnectionsComponent_Conditional_13_Conditional_9_Template, 35, 10);
1553
1555
  } if (rf & 2) {
1554
- const ctx_r1 = i0.ɵɵnextContext();
1556
+ const ctx_r0 = i0.ɵɵnextContext();
1555
1557
  i0.ɵɵadvance(2);
1556
- i0.ɵɵstyleProp("background-color", ctx_r1.GetIconBrandColor(ctx_r1.EditingSummary.Integration.Integration));
1558
+ i0.ɵɵstyleProp("background-color", ctx_r0.GetIconBrandColor(ctx_r0.EditingSummary.Integration.Integration));
1557
1559
  i0.ɵɵadvance();
1558
- i0.ɵɵclassMap(ctx_r1.GetIntegrationIcon(ctx_r1.EditingSummary.Integration.Integration, ctx_r1.EditingSummary.Icon));
1560
+ i0.ɵɵclassMap(ctx_r0.GetIntegrationIcon(ctx_r0.EditingSummary.Integration.Integration, ctx_r0.EditingSummary.Icon));
1559
1561
  i0.ɵɵadvance(5);
1560
- i0.ɵɵconditional(ctx_r1.IsEditLoading ? 8 : 9);
1562
+ i0.ɵɵconditional(ctx_r0.IsEditLoading ? 8 : 9);
1561
1563
  } }
1562
- function ConnectionsComponent_Conditional_7_Template(rf, ctx) { if (rf & 1) {
1564
+ function ConnectionsComponent_Conditional_14_Template(rf, ctx) { if (rf & 1) {
1563
1565
  const _r51 = i0.ɵɵgetCurrentView();
1564
- i0.ɵɵelementStart(0, "mj-credential-dialog", 262);
1565
- i0.ɵɵlistener("close", function ConnectionsComponent_Conditional_7_Template_mj_credential_dialog_close_0_listener($event) { i0.ɵɵrestoreView(_r51); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.EditPanelOpen ? ctx_r1.OnEditCredentialDialogClose($event) : ctx_r1.OnCredentialDialogClose($event)); });
1566
+ i0.ɵɵelementStart(0, "mj-credential-dialog", 265);
1567
+ i0.ɵɵlistener("close", function ConnectionsComponent_Conditional_14_Template_mj_credential_dialog_close_0_listener($event) { i0.ɵɵrestoreView(_r51); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.EditPanelOpen ? ctx_r0.OnEditCredentialDialogClose($event) : ctx_r0.OnCredentialDialogClose($event)); });
1566
1568
  i0.ɵɵelementEnd();
1567
1569
  } if (rf & 2) {
1568
- const ctx_r1 = i0.ɵɵnextContext();
1569
- i0.ɵɵproperty("Visible", true)("PreselectedTypeId", ctx_r1.PreselectedCredentialTypeId);
1570
+ const ctx_r0 = i0.ɵɵnextContext();
1571
+ i0.ɵɵproperty("Visible", true)("PreselectedTypeId", ctx_r0.PreselectedCredentialTypeId);
1570
1572
  } }
1571
- function ConnectionsComponent_Conditional_8_Conditional_16_Template(rf, ctx) { if (rf & 1) {
1573
+ function ConnectionsComponent_Conditional_15_Conditional_16_Template(rf, ctx) { if (rf & 1) {
1572
1574
  i0.ɵɵtext(0);
1573
1575
  } if (rf & 2) {
1574
- const ctx_r1 = i0.ɵɵnextContext(2);
1575
- i0.ɵɵtextInterpolate1(" ", ctx_r1.AddMapSourceObjectName, " ");
1576
+ const ctx_r0 = i0.ɵɵnextContext(2);
1577
+ i0.ɵɵtextInterpolate1(" ", ctx_r0.AddMapSourceObjectName, " ");
1576
1578
  } }
1577
- function ConnectionsComponent_Conditional_8_Conditional_17_Template(rf, ctx) { if (rf & 1) {
1578
- i0.ɵɵelementStart(0, "span", 274);
1579
+ function ConnectionsComponent_Conditional_15_Conditional_17_Template(rf, ctx) { if (rf & 1) {
1580
+ i0.ɵɵelementStart(0, "span", 277);
1579
1581
  i0.ɵɵtext(1, "Select a source object in the Add Map form first");
1580
1582
  i0.ɵɵelementEnd();
1581
1583
  } }
1582
- function ConnectionsComponent_Conditional_8_Conditional_29_For_2_Template(rf, ctx) { if (rf & 1) {
1583
- i0.ɵɵelementStart(0, "div", 285);
1584
- i0.ɵɵelement(1, "i", 125);
1584
+ function ConnectionsComponent_Conditional_15_Conditional_29_For_2_Template(rf, ctx) { if (rf & 1) {
1585
+ i0.ɵɵelementStart(0, "div", 288);
1586
+ i0.ɵɵelement(1, "i", 128);
1585
1587
  i0.ɵɵtext(2);
1586
1588
  i0.ɵɵelementEnd();
1587
1589
  } if (rf & 2) {
@@ -1589,45 +1591,45 @@ function ConnectionsComponent_Conditional_8_Conditional_29_For_2_Template(rf, ct
1589
1591
  i0.ɵɵadvance(2);
1590
1592
  i0.ɵɵtextInterpolate1(" ", warn_r53);
1591
1593
  } }
1592
- function ConnectionsComponent_Conditional_8_Conditional_29_Template(rf, ctx) { if (rf & 1) {
1593
- i0.ɵɵelementStart(0, "div", 279);
1594
- i0.ɵɵrepeaterCreate(1, ConnectionsComponent_Conditional_8_Conditional_29_For_2_Template, 3, 1, "div", 285, i0.ɵɵrepeaterTrackByIdentity);
1594
+ function ConnectionsComponent_Conditional_15_Conditional_29_Template(rf, ctx) { if (rf & 1) {
1595
+ i0.ɵɵelementStart(0, "div", 282);
1596
+ i0.ɵɵrepeaterCreate(1, ConnectionsComponent_Conditional_15_Conditional_29_For_2_Template, 3, 1, "div", 288, i0.ɵɵrepeaterTrackByIdentity);
1595
1597
  i0.ɵɵelementEnd();
1596
1598
  } if (rf & 2) {
1597
- const ctx_r1 = i0.ɵɵnextContext(2);
1599
+ const ctx_r0 = i0.ɵɵnextContext(2);
1598
1600
  i0.ɵɵadvance();
1599
- i0.ɵɵrepeater(ctx_r1.DDLPreviewWarnings);
1601
+ i0.ɵɵrepeater(ctx_r0.DDLPreviewWarnings);
1600
1602
  } }
1601
- function ConnectionsComponent_Conditional_8_Conditional_30_Conditional_5_Template(rf, ctx) { if (rf & 1) {
1602
- i0.ɵɵelement(0, "i", 146);
1603
+ function ConnectionsComponent_Conditional_15_Conditional_30_Conditional_5_Template(rf, ctx) { if (rf & 1) {
1604
+ i0.ɵɵelement(0, "i", 149);
1603
1605
  i0.ɵɵtext(1, " Copied ");
1604
1606
  } }
1605
- function ConnectionsComponent_Conditional_8_Conditional_30_Conditional_6_Template(rf, ctx) { if (rf & 1) {
1606
- i0.ɵɵelement(0, "i", 289);
1607
+ function ConnectionsComponent_Conditional_15_Conditional_30_Conditional_6_Template(rf, ctx) { if (rf & 1) {
1608
+ i0.ɵɵelement(0, "i", 292);
1607
1609
  i0.ɵɵtext(1, " Copy ");
1608
1610
  } }
1609
- function ConnectionsComponent_Conditional_8_Conditional_30_Template(rf, ctx) { if (rf & 1) {
1611
+ function ConnectionsComponent_Conditional_15_Conditional_30_Template(rf, ctx) { if (rf & 1) {
1610
1612
  const _r54 = i0.ɵɵgetCurrentView();
1611
- i0.ɵɵelementStart(0, "div", 280)(1, "div", 286)(2, "span");
1613
+ i0.ɵɵelementStart(0, "div", 283)(1, "div", 289)(2, "span");
1612
1614
  i0.ɵɵtext(3, "SQL Preview");
1613
1615
  i0.ɵɵelementEnd();
1614
- i0.ɵɵelementStart(4, "button", 287);
1615
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_8_Conditional_30_Template_button_click_4_listener() { i0.ɵɵrestoreView(_r54); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.CopyDDLToClipboard()); });
1616
- i0.ɵɵconditionalCreate(5, ConnectionsComponent_Conditional_8_Conditional_30_Conditional_5_Template, 2, 0)(6, ConnectionsComponent_Conditional_8_Conditional_30_Conditional_6_Template, 2, 0);
1616
+ i0.ɵɵelementStart(4, "button", 290);
1617
+ i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_15_Conditional_30_Template_button_click_4_listener() { i0.ɵɵrestoreView(_r54); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.CopyDDLToClipboard()); });
1618
+ i0.ɵɵconditionalCreate(5, ConnectionsComponent_Conditional_15_Conditional_30_Conditional_5_Template, 2, 0)(6, ConnectionsComponent_Conditional_15_Conditional_30_Conditional_6_Template, 2, 0);
1617
1619
  i0.ɵɵelementEnd()();
1618
- i0.ɵɵelementStart(7, "pre", 288);
1620
+ i0.ɵɵelementStart(7, "pre", 291);
1619
1621
  i0.ɵɵtext(8);
1620
1622
  i0.ɵɵelementEnd()();
1621
1623
  } if (rf & 2) {
1622
- const ctx_r1 = i0.ɵɵnextContext(2);
1624
+ const ctx_r0 = i0.ɵɵnextContext(2);
1623
1625
  i0.ɵɵadvance(5);
1624
- i0.ɵɵconditional(ctx_r1.DDLCopied ? 5 : 6);
1626
+ i0.ɵɵconditional(ctx_r0.DDLCopied ? 5 : 6);
1625
1627
  i0.ɵɵadvance(3);
1626
- i0.ɵɵtextInterpolate(ctx_r1.DDLPreview);
1628
+ i0.ɵɵtextInterpolate(ctx_r0.DDLPreview);
1627
1629
  } }
1628
- function ConnectionsComponent_Conditional_8_Conditional_31_Template(rf, ctx) { if (rf & 1) {
1629
- i0.ɵɵelementStart(0, "div", 281)(1, "h4");
1630
- i0.ɵɵelement(2, "i", 290);
1630
+ function ConnectionsComponent_Conditional_15_Conditional_31_Template(rf, ctx) { if (rf & 1) {
1631
+ i0.ɵɵelementStart(0, "div", 284)(1, "h4");
1632
+ i0.ɵɵelement(2, "i", 293);
1631
1633
  i0.ɵɵtext(3, " Next Steps");
1632
1634
  i0.ɵɵelementEnd();
1633
1635
  i0.ɵɵelementStart(4, "ol")(5, "li");
@@ -1643,80 +1645,80 @@ function ConnectionsComponent_Conditional_8_Conditional_31_Template(rf, ctx) { i
1643
1645
  i0.ɵɵtext(12, "Refresh the page \u2014 the new entity will appear in the entity picker");
1644
1646
  i0.ɵɵelementEnd()()();
1645
1647
  } }
1646
- function ConnectionsComponent_Conditional_8_Conditional_34_Template(rf, ctx) { if (rf & 1) {
1647
- i0.ɵɵelement(0, "i", 41);
1648
+ function ConnectionsComponent_Conditional_15_Conditional_34_Template(rf, ctx) { if (rf & 1) {
1649
+ i0.ɵɵelement(0, "i", 44);
1648
1650
  i0.ɵɵtext(1, " Generating... ");
1649
1651
  } }
1650
- function ConnectionsComponent_Conditional_8_Conditional_35_Template(rf, ctx) { if (rf & 1) {
1651
- i0.ɵɵelement(0, "i", 291);
1652
+ function ConnectionsComponent_Conditional_15_Conditional_35_Template(rf, ctx) { if (rf & 1) {
1653
+ i0.ɵɵelement(0, "i", 294);
1652
1654
  i0.ɵɵtext(1, " Generate SQL ");
1653
1655
  } }
1654
- function ConnectionsComponent_Conditional_8_Template(rf, ctx) { if (rf & 1) {
1656
+ function ConnectionsComponent_Conditional_15_Template(rf, ctx) { if (rf & 1) {
1655
1657
  const _r52 = i0.ɵɵgetCurrentView();
1656
- i0.ɵɵelementStart(0, "div", 263);
1657
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_8_Template_div_click_0_listener() { i0.ɵɵrestoreView(_r52); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.CloseNewEntityDialog()); });
1658
+ i0.ɵɵelementStart(0, "div", 266);
1659
+ i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_15_Template_div_click_0_listener() { i0.ɵɵrestoreView(_r52); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.CloseNewEntityDialog()); });
1658
1660
  i0.ɵɵelementEnd();
1659
- i0.ɵɵelementStart(1, "div", 264)(2, "div", 265)(3, "h3");
1661
+ i0.ɵɵelementStart(1, "div", 267)(2, "div", 268)(3, "h3");
1660
1662
  i0.ɵɵtext(4, "Create New Entity Table");
1661
1663
  i0.ɵɵelementEnd();
1662
- i0.ɵɵelementStart(5, "button", 266);
1663
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_8_Template_button_click_5_listener() { i0.ɵɵrestoreView(_r52); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.CloseNewEntityDialog()); });
1664
- i0.ɵɵelement(6, "i", 118);
1664
+ i0.ɵɵelementStart(5, "button", 269);
1665
+ i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_15_Template_button_click_5_listener() { i0.ɵɵrestoreView(_r52); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.CloseNewEntityDialog()); });
1666
+ i0.ɵɵelement(6, "i", 121);
1665
1667
  i0.ɵɵelementEnd()();
1666
- i0.ɵɵelementStart(7, "div", 267)(8, "p", 268);
1668
+ i0.ɵɵelementStart(7, "div", 270)(8, "p", 271);
1667
1669
  i0.ɵɵtext(9, " Generate a SQL migration to create a new database table for this integration's data. After running the migration and CodeGen, the new entity will appear in the entity picker. ");
1668
1670
  i0.ɵɵelementEnd();
1669
- i0.ɵɵelementStart(10, "div", 269)(11, "div", 270)(12, "div", 271)(13, "label", 272);
1671
+ i0.ɵɵelementStart(10, "div", 272)(11, "div", 273)(12, "div", 274)(13, "label", 275);
1670
1672
  i0.ɵɵtext(14, "Source Object");
1671
1673
  i0.ɵɵelementEnd();
1672
- i0.ɵɵelementStart(15, "div", 273);
1673
- i0.ɵɵconditionalCreate(16, ConnectionsComponent_Conditional_8_Conditional_16_Template, 1, 1)(17, ConnectionsComponent_Conditional_8_Conditional_17_Template, 2, 0, "span", 274);
1674
+ i0.ɵɵelementStart(15, "div", 276);
1675
+ i0.ɵɵconditionalCreate(16, ConnectionsComponent_Conditional_15_Conditional_16_Template, 1, 1)(17, ConnectionsComponent_Conditional_15_Conditional_17_Template, 2, 0, "span", 277);
1674
1676
  i0.ɵɵelementEnd()()();
1675
- i0.ɵɵelementStart(18, "div", 270)(19, "div", 271)(20, "label", 272);
1677
+ i0.ɵɵelementStart(18, "div", 273)(19, "div", 274)(20, "label", 275);
1676
1678
  i0.ɵɵtext(21, "Schema");
1677
1679
  i0.ɵɵelementEnd();
1678
- i0.ɵɵelementStart(22, "input", 275);
1679
- i0.ɵɵtwoWayListener("ngModelChange", function ConnectionsComponent_Conditional_8_Template_input_ngModelChange_22_listener($event) { i0.ɵɵrestoreView(_r52); const ctx_r1 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r1.NewEntitySchema, $event) || (ctx_r1.NewEntitySchema = $event); return i0.ɵɵresetView($event); });
1680
+ i0.ɵɵelementStart(22, "input", 278);
1681
+ i0.ɵɵtwoWayListener("ngModelChange", function ConnectionsComponent_Conditional_15_Template_input_ngModelChange_22_listener($event) { i0.ɵɵrestoreView(_r52); const ctx_r0 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r0.NewEntitySchema, $event) || (ctx_r0.NewEntitySchema = $event); return i0.ɵɵresetView($event); });
1680
1682
  i0.ɵɵelementEnd()();
1681
- i0.ɵɵelementStart(23, "span", 276);
1683
+ i0.ɵɵelementStart(23, "span", 279);
1682
1684
  i0.ɵɵtext(24, ".");
1683
1685
  i0.ɵɵelementEnd();
1684
- i0.ɵɵelementStart(25, "div", 277)(26, "label", 272);
1686
+ i0.ɵɵelementStart(25, "div", 280)(26, "label", 275);
1685
1687
  i0.ɵɵtext(27, "Table Name");
1686
1688
  i0.ɵɵelementEnd();
1687
- i0.ɵɵelementStart(28, "input", 278);
1688
- i0.ɵɵtwoWayListener("ngModelChange", function ConnectionsComponent_Conditional_8_Template_input_ngModelChange_28_listener($event) { i0.ɵɵrestoreView(_r52); const ctx_r1 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r1.NewEntityTable, $event) || (ctx_r1.NewEntityTable = $event); return i0.ɵɵresetView($event); });
1689
+ i0.ɵɵelementStart(28, "input", 281);
1690
+ i0.ɵɵtwoWayListener("ngModelChange", function ConnectionsComponent_Conditional_15_Template_input_ngModelChange_28_listener($event) { i0.ɵɵrestoreView(_r52); const ctx_r0 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r0.NewEntityTable, $event) || (ctx_r0.NewEntityTable = $event); return i0.ɵɵresetView($event); });
1689
1691
  i0.ɵɵelementEnd()()()();
1690
- i0.ɵɵconditionalCreate(29, ConnectionsComponent_Conditional_8_Conditional_29_Template, 3, 0, "div", 279);
1691
- i0.ɵɵconditionalCreate(30, ConnectionsComponent_Conditional_8_Conditional_30_Template, 9, 2, "div", 280);
1692
- i0.ɵɵconditionalCreate(31, ConnectionsComponent_Conditional_8_Conditional_31_Template, 13, 0, "div", 281);
1692
+ i0.ɵɵconditionalCreate(29, ConnectionsComponent_Conditional_15_Conditional_29_Template, 3, 0, "div", 282);
1693
+ i0.ɵɵconditionalCreate(30, ConnectionsComponent_Conditional_15_Conditional_30_Template, 9, 2, "div", 283);
1694
+ i0.ɵɵconditionalCreate(31, ConnectionsComponent_Conditional_15_Conditional_31_Template, 13, 0, "div", 284);
1693
1695
  i0.ɵɵelementEnd();
1694
- i0.ɵɵelementStart(32, "div", 282)(33, "button", 283);
1695
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_8_Template_button_click_33_listener() { i0.ɵɵrestoreView(_r52); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.PreviewDDL()); });
1696
- i0.ɵɵconditionalCreate(34, ConnectionsComponent_Conditional_8_Conditional_34_Template, 2, 0)(35, ConnectionsComponent_Conditional_8_Conditional_35_Template, 2, 0);
1696
+ i0.ɵɵelementStart(32, "div", 285)(33, "button", 286);
1697
+ i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_15_Template_button_click_33_listener() { i0.ɵɵrestoreView(_r52); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.PreviewDDL()); });
1698
+ i0.ɵɵconditionalCreate(34, ConnectionsComponent_Conditional_15_Conditional_34_Template, 2, 0)(35, ConnectionsComponent_Conditional_15_Conditional_35_Template, 2, 0);
1697
1699
  i0.ɵɵelementEnd();
1698
- i0.ɵɵelementStart(36, "button", 284);
1699
- i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_8_Template_button_click_36_listener() { i0.ɵɵrestoreView(_r52); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.CloseNewEntityDialog()); });
1700
+ i0.ɵɵelementStart(36, "button", 287);
1701
+ i0.ɵɵlistener("click", function ConnectionsComponent_Conditional_15_Template_button_click_36_listener() { i0.ɵɵrestoreView(_r52); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.CloseNewEntityDialog()); });
1700
1702
  i0.ɵɵtext(37, " Done ");
1701
1703
  i0.ɵɵelementEnd()()();
1702
1704
  } if (rf & 2) {
1703
- const ctx_r1 = i0.ɵɵnextContext();
1705
+ const ctx_r0 = i0.ɵɵnextContext();
1704
1706
  i0.ɵɵadvance(16);
1705
- i0.ɵɵconditional(ctx_r1.AddMapSourceObjectName ? 16 : 17);
1707
+ i0.ɵɵconditional(ctx_r0.AddMapSourceObjectName ? 16 : 17);
1706
1708
  i0.ɵɵadvance(6);
1707
- i0.ɵɵtwoWayProperty("ngModel", ctx_r1.NewEntitySchema);
1709
+ i0.ɵɵtwoWayProperty("ngModel", ctx_r0.NewEntitySchema);
1708
1710
  i0.ɵɵadvance(6);
1709
- i0.ɵɵtwoWayProperty("ngModel", ctx_r1.NewEntityTable);
1711
+ i0.ɵɵtwoWayProperty("ngModel", ctx_r0.NewEntityTable);
1710
1712
  i0.ɵɵadvance();
1711
- i0.ɵɵconditional(ctx_r1.DDLPreviewWarnings.length > 0 ? 29 : -1);
1713
+ i0.ɵɵconditional(ctx_r0.DDLPreviewWarnings.length > 0 ? 29 : -1);
1712
1714
  i0.ɵɵadvance();
1713
- i0.ɵɵconditional(ctx_r1.DDLPreview ? 30 : -1);
1715
+ i0.ɵɵconditional(ctx_r0.DDLPreview ? 30 : -1);
1714
1716
  i0.ɵɵadvance();
1715
- i0.ɵɵconditional(ctx_r1.DDLPreview ? 31 : -1);
1717
+ i0.ɵɵconditional(ctx_r0.DDLPreview ? 31 : -1);
1716
1718
  i0.ɵɵadvance(2);
1717
- i0.ɵɵproperty("disabled", !ctx_r1.CanGenerateSQL || ctx_r1.IsGeneratingDDL);
1719
+ i0.ɵɵproperty("disabled", !ctx_r0.CanGenerateSQL || ctx_r0.IsGeneratingDDL);
1718
1720
  i0.ɵɵadvance();
1719
- i0.ɵɵconditional(ctx_r1.IsGeneratingDDL ? 34 : 35);
1721
+ i0.ɵɵconditional(ctx_r0.IsGeneratingDDL ? 34 : 35);
1720
1722
  } }
1721
1723
  /** Brand color mapping for known integration names */
1722
1724
  const BRAND_COLOR_MAP = [
@@ -3086,39 +3088,56 @@ let ConnectionsComponent = class ConnectionsComponent extends BaseResourceCompon
3086
3088
  } if (rf & 2) {
3087
3089
  let _t;
3088
3090
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.entityTreeDropdown = _t.first);
3089
- } }, standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 9, vars: 14, consts: [["entityTreeDropdown", ""], [1, "connections-container"], [1, "detail-view"], [1, "wizard-inline"], [1, "edit-panel-backdrop", 3, "click"], [1, "edit-panel"], [3, "Visible", "PreselectedTypeId"], [1, "connections-header"], [1, "header-left"], [1, "header-title"], [1, "header-count"], ["mjButton", "", "variant", "primary", 1, "add-connection-btn", 3, "click"], [1, "fa-solid", "fa-plus"], [1, "loading-container"], [1, "empty-state"], [1, "card-grid"], ["text", "Loading integrations..."], [1, "fa-solid", "fa-plug", "empty-icon"], ["mjButton", "", "variant", "primary", 3, "click"], [1, "connection-card"], [1, "connection-card", "new-connection-card", 3, "click"], [1, "new-card-content"], [1, "new-card-icon"], [1, "new-card-label"], [1, "card-clickable", 3, "click"], [1, "card-header"], [1, "icon-circle"], [1, "icon-large"], [1, "card-body"], [1, "card-name"], [1, "card-company"], [1, "card-meta"], [1, "meta-label"], [1, "meta-separator"], [1, "meta-value"], [1, "card-sync-info"], [1, "fa-solid", "fa-arrows-rotate"], [1, "card-test-result", 3, "test-success", "test-failure"], [1, "delete-confirm-overlay"], [1, "card-footer"], ["mjButton", "", "variant", "outline", 3, "click", "disabled"], [1, "fa-solid", "fa-spinner", "fa-spin"], ["mjButton", "", "variant", "outline", 3, "click"], [1, "sync-menu-wrapper"], ["title", "Delete integration", 1, "card-delete-btn", 3, "click"], [1, "fa-solid", "fa-trash-can"], [1, "card-test-result"], [1, "fa-solid", "fa-circle-check"], [1, "fa-solid", "fa-circle-xmark"], [1, "delete-confirm-content"], [1, "fa-solid", "fa-triangle-exclamation", "delete-warn-icon"], [1, "delete-confirm-text"], [1, "delete-confirm-actions"], ["mjButton", "", "variant", "danger", 3, "click", "disabled"], ["mjButton", "", "variant", "primary", 3, "click", "disabled"], [1, "sync-dropdown"], [1, "fa-solid", "fa-chevron-down", "sync-caret"], [1, "sync-dropdown-group"], [1, "sync-dropdown-label"], [1, "sync-dropdown-item", 3, "click"], [1, "fa-solid", "fa-arrow-down-to-line"], [1, "fa-solid", "fa-rotate"], [1, "fa-solid", "fa-arrow-up-from-line"], [3, "EntityMap", "CompanyIntegrationID", "RunViewProvider"], [3, "Close", "EntityMap", "CompanyIntegrationID", "RunViewProvider"], [1, "detail-header"], ["title", "Back to Integrations", 1, "detail-back-btn", 3, "click"], [1, "fa-solid", "fa-arrow-left"], [1, "detail-header-info"], [1, "detail-header-text"], [1, "detail-title"], [1, "detail-subtitle"], [1, "detail-header-actions"], ["title", "Configure", 1, "detail-edit-btn", 3, "click"], [1, "fa-solid", "fa-pen-to-square"], [1, "schedule-section"], [1, "schedule-section-header"], [1, "schedule-section-title"], [1, "fa-solid", "fa-calendar-check"], [3, "ScheduledJobID"], [1, "schedule-empty"], [3, "Close", "Saved", "Deleted", "IsOpen", "ScheduledJobID", "JobTypeID", "DefaultConfiguration", "HideJobType"], [1, "detail-toolbar"], [1, "detail-toolbar-left"], [1, "detail-map-count"], [1, "detail-toolbar-right"], [1, "detail-search"], [1, "fa-solid", "fa-filter"], ["type", "text", "placeholder", "Filter entity maps...", 3, "input", "value"], ["title", "Select source objects and create entity tables", 1, "add-map-btn", 3, "click"], [1, "fa-solid", "fa-table"], [1, "add-map-btn", 3, "click"], [1, "fa-solid", "fa-wand-magic-sparkles"], [1, "sync-result-banner", 3, "sync-success", "sync-failure"], [1, "add-map-panel"], [1, "detail-empty"], [1, "sync-dropdown", "sync-dropdown-left"], [3, "EditRequested", "ScheduledJobID"], [1, "schedule-empty-text"], [1, "schedule-create-btn", 3, "click"], [1, "sync-result-banner"], [1, "auto-map-header"], [1, "add-map-row"], [1, "add-map-field"], [1, "add-map-label"], [1, "add-map-select", 3, "ngModelChange", "ngModel"], ["disabled", "", 3, "ngValue"], [3, "value"], [1, "add-map-direction-col"], [1, "add-map-direction-btns"], ["title", "Pull from source", 3, "click"], [1, "fa-solid", "fa-arrow-right"], ["title", "Bidirectional sync", 3, "click"], [1, "fa-solid", "fa-right-left"], ["title", "Push to source", 3, "click"], [1, "add-map-actions"], [1, "add-map-save-btn", 3, "click", "disabled"], [1, "add-map-cancel-btn", 3, "click"], [1, "fa-solid", "fa-xmark"], [1, "auto-map-result", 3, "auto-map-success", "auto-map-partial", "auto-map-failure"], [1, "auto-map-result"], [1, "auto-map-result-summary"], [1, "auto-map-errors"], [1, "fa-solid", "fa-circle-info"], [1, "auto-map-error"], [1, "fa-solid", "fa-triangle-exclamation"], ["text", "Loading source objects...", "size", "small"], [1, "auto-map-result", "auto-map-success"], [1, "auto-map-result", 3, "auto-map-success", "auto-map-failure"], [1, "create-tables-filters"], ["type", "text", "placeholder", "Search by name or label...", 1, "create-tables-search", "mj-input", 3, "ngModelChange", "ngModel"], [1, "create-tables-list"], [1, "create-tables-select-all"], [1, "create-tables-checkbox"], ["type", "checkbox", 3, "change", "checked"], ["type", "checkbox", 3, "ngModelChange", "ngModel"], [1, "create-tables-name-hint"], [1, "create-tables-badge", "create-tables-badge-custom"], [1, "create-tables-badge", "create-tables-badge-registered"], [1, "add-map-loading"], [1, "add-map-hint"], [1, "add-map-select", 3, "ngModel"], [1, "add-map-field", "add-map-entity-field"], [1, "entity-picker-row"], [3, "SelectionChange", "BranchConfig", "LeafConfig", "Value", "SelectableTypes", "SelectionMode", "Placeholder", "EnableSearch"], ["title", "Create new entity table", 1, "new-entity-btn", 3, "click"], [1, "fa-solid", "fa-check"], ["text", "Loading entity maps..."], [1, "fa-solid", "fa-cube"], [1, "add-map-btn", "add-map-btn-lg", 3, "click"], [1, "detail-table-head"], [1, "dt-col-toggle"], [1, "dt-col-source"], [1, "dt-col-direction"], [1, "dt-col-dest"], [1, "dt-col-meta"], [1, "detail-table-body"], [1, "detail-map-row", 3, "sync-disabled"], [1, "detail-table-empty"], [1, "detail-map-row", 3, "click"], [1, "dt-col-toggle", 3, "click"], [1, "toggle-switch", 3, "title"], [1, "toggle-slider"], [1, "dt-col-source", 3, "title"], [1, "dt-col-direction", 3, "click"], [1, "direction-toggle", 3, "click", "title"], [1, "dt-col-dest", 3, "title"], ["title", "Match strategy configured", 1, "detail-config-badge"], [1, "detail-config-badge", 3, "title"], [1, "map-edit-hint"], [1, "fa-solid", "fa-chevron-right"], [1, "fa-solid", "fa-link"], [1, "wizard-header"], [1, "wizard-back-btn", 3, "click"], [1, "wizard-title"], [1, "step-indicator"], [1, "wizard-body"], [1, "step-content"], [1, "step-content", "step-content-centered"], [1, "wizard-footer"], [1, "footer-left"], [1, "footer-right"], ["mjButton", "", "variant", "outline"], [1, "step-item"], [1, "step-circle"], [1, "step-label"], [1, "step-line", 3, "step-line-active"], [1, "step-line"], [1, "step-title"], [1, "search-bar"], [1, "fa-solid", "fa-search", "search-icon"], ["type", "text", "placeholder", "Search integrations...", 1, "search-input", 3, "ngModelChange", "ngModel"], [1, "no-integrations"], [1, "integration-picker-grid"], [1, "fa-solid", "fa-puzzle-piece"], [1, "no-integrations-hint"], [1, "fa-solid", "fa-search"], [1, "integration-picker-card", 3, "picker-selected"], [1, "integration-picker-card", 3, "click"], [1, "picker-icon-circle"], [1, "picker-name"], [1, "picker-description"], [1, "form-group"], ["for", "connectionName", 1, "form-label"], ["id", "connectionName", "type", "text", "placeholder", "e.g. Production HubSpot", 1, "form-input", 3, "ngModelChange", "ngModel"], ["for", "companySelect", 1, "form-label"], ["id", "companySelect", 1, "form-input", 3, "ngModel"], ["type", "text", "disabled", "", 1, "form-input", 3, "value"], [1, "form-hint"], ["for", "connectionDescription", 1, "form-label"], [1, "optional-label"], ["id", "connectionDescription", "placeholder", "Notes about this connection...", "rows", "3", 1, "form-input", "form-textarea", 3, "ngModelChange", "ngModel"], [1, "form-label"], [1, "credential-selected"], [1, "credential-actions"], [1, "credential-loading"], [1, "credential-list"], ["id", "companySelect", 1, "form-input", 3, "ngModelChange", "ngModel"], [1, "credential-info"], [1, "fa-solid", "fa-key"], [1, "credential-clear", 3, "click"], ["text", "Loading credentials...", "size", "small"], [1, "credential-list-item"], [1, "credential-list-item", 3, "click"], [1, "test-prompt"], [1, "test-running"], [1, "test-result", 3, "test-result-success", "test-result-failure"], ["mjButton", "", "variant", "primary", "size", "lg", 3, "click"], [1, "fa-solid", "fa-vial"], [1, "test-hint"], [1, "test-spinner"], [1, "fa-solid", "fa-spinner", "fa-spin", "fa-3x"], [1, "test-result"], [1, "test-result-icon"], [1, "test-result-message"], [1, "test-result-detail"], ["mjButton", "", "variant", "outline", 1, "test-retry-btn"], ["mjButton", "", "variant", "outline", 1, "test-retry-btn", 3, "click"], [1, "fa-solid", "fa-rotate-right"], [1, "edit-panel-header"], [1, "edit-panel-title"], [1, "edit-icon-circle"], [1, "edit-close-btn", 3, "click"], [1, "edit-panel-loading"], ["text", "Loading...", "size", "small"], [1, "edit-panel-body"], [1, "edit-form-group"], [1, "edit-form-label"], ["type", "text", "placeholder", "Connection name...", 1, "edit-form-input", 3, "ngModelChange", "ngModel"], [1, "edit-toggle-row"], [1, "toggle-switch"], [1, "edit-toggle-label"], [1, "edit-credential-selected"], [1, "edit-readonly-field"], [1, "edit-panel-footer"], [1, "edit-credential-info"], [1, "edit-credential-clear", 3, "click"], [1, "edit-credential-actions"], ["mjButton", "", "variant", "outline", "size", "sm", 3, "click"], [1, "edit-credential-list"], [1, "edit-credential-item"], [1, "edit-credential-item", 3, "click"], [3, "close", "Visible", "PreselectedTypeId"], [1, "new-entity-backdrop", 3, "click"], [1, "new-entity-dialog"], [1, "new-entity-dialog-header"], [1, "new-entity-dialog-close", 3, "click"], [1, "new-entity-dialog-body"], [1, "new-entity-dialog-desc"], [1, "new-entity-dialog-form"], [1, "new-entity-dialog-row"], [1, "new-entity-dialog-field"], [1, "new-entity-dialog-label"], [1, "new-entity-dialog-value"], [1, "new-entity-dialog-hint"], ["type", "text", "placeholder", "e.g. hubspot", 1, "new-entity-dialog-input", 3, "ngModelChange", "ngModel"], [1, "new-entity-dialog-dot"], [1, "new-entity-dialog-field", "new-entity-dialog-field-wide"], ["type", "text", "placeholder", "e.g. Contact", 1, "new-entity-dialog-input", 3, "ngModelChange", "ngModel"], [1, "ddl-warnings"], [1, "ddl-preview-block"], [1, "new-entity-next-steps"], [1, "new-entity-dialog-footer"], [1, "new-entity-preview-btn", 3, "click", "disabled"], [1, "new-entity-dialog-done-btn", 3, "click"], [1, "ddl-warning"], [1, "ddl-preview-header"], ["title", "Copy to clipboard", 1, "ddl-copy-btn", 3, "click"], [1, "ddl-preview-code"], [1, "fa-regular", "fa-copy"], [1, "fa-solid", "fa-list-check"], [1, "fa-solid", "fa-code"]], template: function ConnectionsComponent_Template(rf, ctx) { if (rf & 1) {
3090
- i0.ɵɵelementStart(0, "div", 1);
3091
- i0.ɵɵconditionalCreate(1, ConnectionsComponent_Conditional_1_Template, 12, 5);
3092
- i0.ɵɵconditionalCreate(2, ConnectionsComponent_Conditional_2_Template, 3, 1, "div", 2);
3093
- i0.ɵɵconditionalCreate(3, ConnectionsComponent_Conditional_3_Template, 21, 6, "div", 3);
3091
+ } }, standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 16, vars: 19, consts: [["entityTreeDropdown", ""], ["Title", "Integrations", "Icon", "fa-solid fa-plug", "Subtitle", "Connected systems and data sources"], ["meta", ""], ["actions", ""], [3, "Clicked", "Loading"], ["mjButton", "", "variant", "primary", "size", "sm"], [3, "Flex", "Padding"], [1, "connections-container"], [1, "detail-view"], [1, "wizard-inline"], [1, "edit-panel-backdrop", 3, "click"], [1, "edit-panel"], [3, "Visible", "PreselectedTypeId"], [3, "Count", "Label"], ["mjButton", "", "variant", "primary", "size", "sm", 3, "click"], [1, "fa-solid", "fa-plus"], [1, "loading-container"], [1, "empty-state"], [1, "card-grid"], ["text", "Loading integrations..."], [1, "fa-solid", "fa-plug", "empty-icon"], ["mjButton", "", "variant", "primary", 3, "click"], [1, "connection-card"], [1, "connection-card", "new-connection-card", 3, "click"], [1, "new-card-content"], [1, "new-card-icon"], [1, "new-card-label"], [1, "card-clickable", 3, "click"], [1, "card-header"], [1, "icon-circle"], [1, "icon-large"], [1, "card-body"], [1, "card-name"], [1, "card-company"], [1, "card-meta"], [1, "meta-label"], [1, "meta-separator"], [1, "meta-value"], [1, "card-sync-info"], [1, "fa-solid", "fa-arrows-rotate"], [1, "card-test-result", 3, "test-success", "test-failure"], [1, "delete-confirm-overlay"], [1, "card-footer"], ["mjButton", "", "variant", "outline", 3, "click", "disabled"], [1, "fa-solid", "fa-spinner", "fa-spin"], ["mjButton", "", "variant", "outline", 3, "click"], [1, "sync-menu-wrapper"], ["title", "Delete integration", 1, "card-delete-btn", 3, "click"], [1, "fa-solid", "fa-trash-can"], [1, "card-test-result"], [1, "fa-solid", "fa-circle-check"], [1, "fa-solid", "fa-circle-xmark"], [1, "delete-confirm-content"], [1, "fa-solid", "fa-triangle-exclamation", "delete-warn-icon"], [1, "delete-confirm-text"], [1, "delete-confirm-actions"], ["mjButton", "", "variant", "danger", 3, "click", "disabled"], ["mjButton", "", "variant", "primary", 3, "click", "disabled"], [1, "sync-dropdown"], [1, "fa-solid", "fa-chevron-down", "sync-caret"], [1, "sync-dropdown-group"], [1, "sync-dropdown-label"], [1, "sync-dropdown-item", 3, "click"], [1, "fa-solid", "fa-arrow-down-to-line"], [1, "fa-solid", "fa-rotate"], [1, "fa-solid", "fa-arrow-up-from-line"], [3, "EntityMap", "CompanyIntegrationID", "RunViewProvider"], [3, "Close", "EntityMap", "CompanyIntegrationID", "RunViewProvider"], [1, "detail-header"], ["title", "Back to Integrations", 1, "detail-back-btn", 3, "click"], [1, "fa-solid", "fa-arrow-left"], [1, "detail-header-info"], [1, "detail-header-text"], [1, "detail-title"], [1, "detail-subtitle"], [1, "detail-header-actions"], ["title", "Configure", 1, "detail-edit-btn", 3, "click"], [1, "fa-solid", "fa-pen-to-square"], [1, "schedule-section"], [1, "schedule-section-header"], [1, "schedule-section-title"], [1, "fa-solid", "fa-calendar-check"], [3, "ScheduledJobID"], [1, "schedule-empty"], [3, "Close", "Saved", "Deleted", "IsOpen", "ScheduledJobID", "JobTypeID", "DefaultConfiguration", "HideJobType"], [1, "detail-toolbar"], [1, "detail-toolbar-left"], [1, "detail-map-count"], [1, "detail-toolbar-right"], [1, "detail-search"], [1, "fa-solid", "fa-filter"], ["type", "text", "placeholder", "Filter entity maps...", 3, "input", "value"], ["title", "Select source objects and create entity tables", 1, "add-map-btn", 3, "click"], [1, "fa-solid", "fa-table"], [1, "add-map-btn", 3, "click"], [1, "fa-solid", "fa-wand-magic-sparkles"], [1, "sync-result-banner", 3, "sync-success", "sync-failure"], [1, "add-map-panel"], [1, "detail-empty"], [1, "sync-dropdown", "sync-dropdown-left"], [3, "EditRequested", "ScheduledJobID"], [1, "schedule-empty-text"], [1, "schedule-create-btn", 3, "click"], [1, "sync-result-banner"], [1, "auto-map-header"], [1, "add-map-row"], [1, "add-map-field"], [1, "add-map-label"], [1, "add-map-select", 3, "ngModelChange", "ngModel"], ["disabled", "", 3, "ngValue"], [3, "value"], [1, "add-map-direction-col"], [1, "add-map-direction-btns"], ["title", "Pull from source", 3, "click"], [1, "fa-solid", "fa-arrow-right"], ["title", "Bidirectional sync", 3, "click"], [1, "fa-solid", "fa-right-left"], ["title", "Push to source", 3, "click"], [1, "add-map-actions"], [1, "add-map-save-btn", 3, "click", "disabled"], [1, "add-map-cancel-btn", 3, "click"], [1, "fa-solid", "fa-xmark"], [1, "auto-map-result", 3, "auto-map-success", "auto-map-partial", "auto-map-failure"], [1, "auto-map-result"], [1, "auto-map-result-summary"], [1, "auto-map-errors"], [1, "fa-solid", "fa-circle-info"], [1, "auto-map-error"], [1, "fa-solid", "fa-triangle-exclamation"], ["text", "Loading source objects...", "size", "small"], [1, "auto-map-result", "auto-map-success"], [1, "auto-map-result", 3, "auto-map-success", "auto-map-failure"], [1, "create-tables-filters"], ["type", "text", "placeholder", "Search by name or label...", 1, "create-tables-search", "mj-input", 3, "ngModelChange", "ngModel"], [1, "create-tables-list"], [1, "create-tables-select-all"], [1, "create-tables-checkbox"], ["type", "checkbox", 3, "change", "checked"], ["type", "checkbox", 3, "ngModelChange", "ngModel"], [1, "create-tables-name-hint"], [1, "create-tables-badge", "create-tables-badge-custom"], [1, "create-tables-badge", "create-tables-badge-registered"], [1, "add-map-loading"], [1, "add-map-hint"], [1, "add-map-select", 3, "ngModel"], [1, "add-map-field", "add-map-entity-field"], [1, "entity-picker-row"], [3, "SelectionChange", "BranchConfig", "LeafConfig", "Value", "SelectableTypes", "SelectionMode", "Placeholder", "EnableSearch"], ["title", "Create new entity table", 1, "new-entity-btn", 3, "click"], [1, "fa-solid", "fa-check"], ["text", "Loading entity maps..."], [1, "fa-solid", "fa-cube"], [1, "add-map-btn", "add-map-btn-lg", 3, "click"], [1, "detail-table-head"], [1, "dt-col-toggle"], [1, "dt-col-source"], [1, "dt-col-direction"], [1, "dt-col-dest"], [1, "dt-col-meta"], [1, "detail-table-body"], [1, "detail-map-row", 3, "sync-disabled"], [1, "detail-table-empty"], [1, "detail-map-row", 3, "click"], [1, "dt-col-toggle", 3, "click"], [1, "toggle-switch", 3, "title"], [1, "toggle-slider"], [1, "dt-col-source", 3, "title"], [1, "dt-col-direction", 3, "click"], [1, "direction-toggle", 3, "click", "title"], [1, "dt-col-dest", 3, "title"], ["title", "Match strategy configured", 1, "detail-config-badge"], [1, "detail-config-badge", 3, "title"], [1, "map-edit-hint"], [1, "fa-solid", "fa-chevron-right"], [1, "fa-solid", "fa-link"], [1, "wizard-header"], [1, "wizard-back-btn", 3, "click"], [1, "wizard-title"], [1, "step-indicator"], [1, "wizard-body"], [1, "step-content"], [1, "step-content", "step-content-centered"], [1, "wizard-footer"], [1, "footer-left"], [1, "footer-right"], ["mjButton", "", "variant", "outline"], [1, "step-item"], [1, "step-circle"], [1, "step-label"], [1, "step-line", 3, "step-line-active"], [1, "step-line"], [1, "step-title"], [1, "search-bar"], [1, "fa-solid", "fa-search", "search-icon"], ["type", "text", "placeholder", "Search integrations...", 1, "search-input", 3, "ngModelChange", "ngModel"], [1, "no-integrations"], [1, "integration-picker-grid"], [1, "fa-solid", "fa-puzzle-piece"], [1, "no-integrations-hint"], [1, "fa-solid", "fa-search"], [1, "integration-picker-card", 3, "picker-selected"], [1, "integration-picker-card", 3, "click"], [1, "picker-icon-circle"], [1, "picker-name"], [1, "picker-description"], [1, "form-group"], ["for", "connectionName", 1, "form-label"], ["id", "connectionName", "type", "text", "placeholder", "e.g. Production HubSpot", 1, "form-input", 3, "ngModelChange", "ngModel"], ["for", "companySelect", 1, "form-label"], ["id", "companySelect", 1, "form-input", 3, "ngModel"], ["type", "text", "disabled", "", 1, "form-input", 3, "value"], [1, "form-hint"], ["for", "connectionDescription", 1, "form-label"], [1, "optional-label"], ["id", "connectionDescription", "placeholder", "Notes about this connection...", "rows", "3", 1, "form-input", "form-textarea", 3, "ngModelChange", "ngModel"], [1, "form-label"], [1, "credential-selected"], [1, "credential-actions"], [1, "credential-loading"], [1, "credential-list"], ["id", "companySelect", 1, "form-input", 3, "ngModelChange", "ngModel"], [1, "credential-info"], [1, "fa-solid", "fa-key"], [1, "credential-clear", 3, "click"], ["text", "Loading credentials...", "size", "small"], [1, "credential-list-item"], [1, "credential-list-item", 3, "click"], [1, "test-prompt"], [1, "test-running"], [1, "test-result", 3, "test-result-success", "test-result-failure"], ["mjButton", "", "variant", "primary", "size", "lg", 3, "click"], [1, "fa-solid", "fa-vial"], [1, "test-hint"], [1, "test-spinner"], [1, "fa-solid", "fa-spinner", "fa-spin", "fa-3x"], [1, "test-result"], [1, "test-result-icon"], [1, "test-result-message"], [1, "test-result-detail"], ["mjButton", "", "variant", "outline", 1, "test-retry-btn"], ["mjButton", "", "variant", "outline", 1, "test-retry-btn", 3, "click"], [1, "fa-solid", "fa-rotate-right"], [1, "edit-panel-header"], [1, "edit-panel-title"], [1, "edit-icon-circle"], [1, "edit-close-btn", 3, "click"], [1, "edit-panel-loading"], ["text", "Loading...", "size", "small"], [1, "edit-panel-body"], [1, "edit-form-group"], [1, "edit-form-label"], ["type", "text", "placeholder", "Connection name...", 1, "edit-form-input", 3, "ngModelChange", "ngModel"], [1, "edit-toggle-row"], [1, "toggle-switch"], [1, "edit-toggle-label"], [1, "edit-credential-selected"], [1, "edit-readonly-field"], [1, "edit-panel-footer"], [1, "edit-credential-info"], [1, "edit-credential-clear", 3, "click"], [1, "edit-credential-actions"], ["mjButton", "", "variant", "outline", "size", "sm", 3, "click"], [1, "edit-credential-list"], [1, "edit-credential-item"], [1, "edit-credential-item", 3, "click"], [3, "close", "Visible", "PreselectedTypeId"], [1, "new-entity-backdrop", 3, "click"], [1, "new-entity-dialog"], [1, "new-entity-dialog-header"], [1, "new-entity-dialog-close", 3, "click"], [1, "new-entity-dialog-body"], [1, "new-entity-dialog-desc"], [1, "new-entity-dialog-form"], [1, "new-entity-dialog-row"], [1, "new-entity-dialog-field"], [1, "new-entity-dialog-label"], [1, "new-entity-dialog-value"], [1, "new-entity-dialog-hint"], ["type", "text", "placeholder", "e.g. hubspot", 1, "new-entity-dialog-input", 3, "ngModelChange", "ngModel"], [1, "new-entity-dialog-dot"], [1, "new-entity-dialog-field", "new-entity-dialog-field-wide"], ["type", "text", "placeholder", "e.g. Contact", 1, "new-entity-dialog-input", 3, "ngModelChange", "ngModel"], [1, "ddl-warnings"], [1, "ddl-preview-block"], [1, "new-entity-next-steps"], [1, "new-entity-dialog-footer"], [1, "new-entity-preview-btn", 3, "click", "disabled"], [1, "new-entity-dialog-done-btn", 3, "click"], [1, "ddl-warning"], [1, "ddl-preview-header"], ["title", "Copy to clipboard", 1, "ddl-copy-btn", 3, "click"], [1, "ddl-preview-code"], [1, "fa-regular", "fa-copy"], [1, "fa-solid", "fa-list-check"], [1, "fa-solid", "fa-code"]], template: function ConnectionsComponent_Template(rf, ctx) { if (rf & 1) {
3092
+ i0.ɵɵelementStart(0, "mj-page-layout")(1, "mj-page-header", 1);
3093
+ i0.ɵɵconditionalCreate(2, ConnectionsComponent_Conditional_2_Template, 2, 2, "div", 2);
3094
+ i0.ɵɵelementStart(3, "div", 3)(4, "mj-refresh-button", 4);
3095
+ i0.ɵɵlistener("Clicked", function ConnectionsComponent_Template_mj_refresh_button_Clicked_4_listener() { return ctx.LoadData(); });
3096
+ i0.ɵɵelementEnd();
3097
+ i0.ɵɵconditionalCreate(5, ConnectionsComponent_Conditional_5_Template, 3, 0, "button", 5);
3098
+ i0.ɵɵelementEnd()();
3099
+ i0.ɵɵelementStart(6, "mj-page-body", 6)(7, "div", 7);
3100
+ i0.ɵɵconditionalCreate(8, ConnectionsComponent_Conditional_8_Template, 3, 3);
3101
+ i0.ɵɵconditionalCreate(9, ConnectionsComponent_Conditional_9_Template, 3, 1, "div", 8);
3102
+ i0.ɵɵconditionalCreate(10, ConnectionsComponent_Conditional_10_Template, 21, 6, "div", 9);
3094
3103
  i0.ɵɵelementEnd();
3095
- i0.ɵɵelementStart(4, "div", 4);
3096
- i0.ɵɵlistener("click", function ConnectionsComponent_Template_div_click_4_listener() { return ctx.CloseEditPanel(); });
3104
+ i0.ɵɵelementStart(11, "div", 10);
3105
+ i0.ɵɵlistener("click", function ConnectionsComponent_Template_div_click_11_listener() { return ctx.CloseEditPanel(); });
3097
3106
  i0.ɵɵelementEnd();
3098
- i0.ɵɵelementStart(5, "div", 5);
3099
- i0.ɵɵconditionalCreate(6, ConnectionsComponent_Conditional_6_Template, 10, 5);
3107
+ i0.ɵɵelementStart(12, "div", 11);
3108
+ i0.ɵɵconditionalCreate(13, ConnectionsComponent_Conditional_13_Template, 10, 5);
3100
3109
  i0.ɵɵelementEnd();
3101
- i0.ɵɵconditionalCreate(7, ConnectionsComponent_Conditional_7_Template, 1, 2, "mj-credential-dialog", 6);
3102
- i0.ɵɵconditionalCreate(8, ConnectionsComponent_Conditional_8_Template, 38, 8);
3110
+ i0.ɵɵconditionalCreate(14, ConnectionsComponent_Conditional_14_Template, 1, 2, "mj-credential-dialog", 12);
3111
+ i0.ɵɵconditionalCreate(15, ConnectionsComponent_Conditional_15_Template, 38, 8);
3112
+ i0.ɵɵelementEnd()();
3103
3113
  } if (rf & 2) {
3114
+ i0.ɵɵadvance(2);
3115
+ i0.ɵɵconditional(!ctx.WizardOpen && !ctx.SelectedSummary && ctx.Connections.length > 0 ? 2 : -1);
3116
+ i0.ɵɵadvance(2);
3117
+ i0.ɵɵproperty("Loading", ctx.IsLoading);
3118
+ i0.ɵɵadvance();
3119
+ i0.ɵɵconditional(!ctx.WizardOpen && !ctx.SelectedSummary ? 5 : -1);
3120
+ i0.ɵɵadvance();
3121
+ i0.ɵɵproperty("Flex", true)("Padding", false);
3122
+ i0.ɵɵadvance();
3104
3123
  i0.ɵɵclassProp("detail-active", !!ctx.SelectedSummary)("editor-active", !!ctx.EditorEntityMap);
3105
3124
  i0.ɵɵadvance();
3106
- i0.ɵɵconditional(!ctx.WizardOpen && !ctx.SelectedSummary ? 1 : -1);
3125
+ i0.ɵɵconditional(!ctx.WizardOpen && !ctx.SelectedSummary ? 8 : -1);
3107
3126
  i0.ɵɵadvance();
3108
- i0.ɵɵconditional(!ctx.WizardOpen && ctx.SelectedSummary ? 2 : -1);
3127
+ i0.ɵɵconditional(!ctx.WizardOpen && ctx.SelectedSummary ? 9 : -1);
3109
3128
  i0.ɵɵadvance();
3110
- i0.ɵɵconditional(ctx.WizardOpen ? 3 : -1);
3129
+ i0.ɵɵconditional(ctx.WizardOpen ? 10 : -1);
3111
3130
  i0.ɵɵadvance();
3112
3131
  i0.ɵɵclassProp("open", ctx.EditPanelOpen);
3113
3132
  i0.ɵɵadvance();
3114
3133
  i0.ɵɵclassProp("open", ctx.EditPanelOpen);
3115
3134
  i0.ɵɵadvance();
3116
- i0.ɵɵconditional(ctx.EditingSummary ? 6 : -1);
3135
+ i0.ɵɵconditional(ctx.EditingSummary ? 13 : -1);
3117
3136
  i0.ɵɵadvance();
3118
- i0.ɵɵconditional(ctx.ShowCredentialDialog ? 7 : -1);
3137
+ i0.ɵɵconditional(ctx.ShowCredentialDialog ? 14 : -1);
3119
3138
  i0.ɵɵadvance();
3120
- i0.ɵɵconditional(ctx.ShowCreateEntity ? 8 : -1);
3121
- } }, dependencies: [i1.NgSelectOption, i1.ɵNgSelectMultipleOption, i1.DefaultValueAccessor, i1.CheckboxControlValueAccessor, i1.SelectControlValueAccessor, i1.NgControlStatus, i1.NgModel, i2.MJButtonDirective, i3.LoadingComponent, i4.CredentialDialogComponent, i5.TreeDropdownComponent, i6.ScheduledJobSummaryComponent, i6.ScheduledJobSlidePanelComponent, i7.VisualFieldEditorComponent], styles: ["\n\n\n\n\n[_nghost-%COMP%] {\n display: flex;\n flex-direction: column;\n height: 100%;\n min-height: 0;\n overflow: hidden;\n}\n\n.connections-container[_ngcontent-%COMP%] {\n padding: 24px;\n max-width: 1400px;\n width: 100%;\n margin: 0 auto;\n flex: 1;\n display: flex;\n flex-direction: column;\n min-height: 0;\n overflow-y: auto;\n box-sizing: border-box;\n}\n\n\n\n\n.connections-container.detail-active[_ngcontent-%COMP%], \n.connections-container.editor-active[_ngcontent-%COMP%] {\n overflow: hidden;\n}\n\n.connections-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin-bottom: 24px;\n}\n\n.header-left[_ngcontent-%COMP%] {\n display: flex;\n align-items: baseline;\n gap: 12px;\n}\n\n.header-title[_ngcontent-%COMP%] {\n font-size: 24px;\n font-weight: 700;\n margin: 0;\n color: var(--mj-text-primary);\n}\n\n.header-count[_ngcontent-%COMP%] {\n font-size: 14px;\n color: var(--mj-text-disabled);\n}\n\n.add-connection-btn[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n margin-right: 6px;\n}\n\n\n\n\n\n\n.loading-container[_ngcontent-%COMP%] {\n display: flex;\n justify-content: center;\n align-items: center;\n min-height: 300px;\n}\n\n.empty-state[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n min-height: 400px;\n text-align: center;\n color: var(--mj-text-muted);\n}\n\n.empty-icon[_ngcontent-%COMP%] {\n font-size: 48px;\n color: var(--mj-text-disabled);\n margin-bottom: 16px;\n}\n\n.empty-state[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n font-size: 20px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n margin: 0 0 8px;\n}\n\n.empty-state[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n font-size: 14px;\n margin: 0 0 24px;\n}\n\n\n\n\n\n\n.card-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));\n gap: 20px;\n}\n\n\n\n\n\n\n.connection-card[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 12px;\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.06);\n transition: box-shadow 0.2s ease, transform 0.2s ease;\n display: flex;\n flex-direction: column;\n position: relative;\n overflow: hidden;\n}\n\n.connection-card[_ngcontent-%COMP%]:hover {\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);\n transform: translateY(-2px);\n}\n\n\n\n.card-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 16px 16px 0;\n}\n\n.icon-circle[_ngcontent-%COMP%] {\n width: 48px;\n height: 48px;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--mj-text-inverse);\n flex-shrink: 0;\n}\n\n.icon-large[_ngcontent-%COMP%] {\n font-size: 22px;\n}\n\n\n\n.status-badge[_ngcontent-%COMP%] {\n font-size: 12px;\n font-weight: 600;\n padding: 4px 10px;\n border-radius: 20px;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.status-badge-connected[_ngcontent-%COMP%] {\n background: var(--mj-status-success-bg);\n color: var(--mj-status-success);\n}\n\n.status-badge-error[_ngcontent-%COMP%] {\n background: var(--mj-status-error-bg);\n color: var(--mj-status-error);\n}\n\n.status-badge-inactive[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-hover);\n color: var(--mj-text-muted);\n}\n\n.status-badge-syncing[_ngcontent-%COMP%] {\n background: var(--mj-status-info-bg);\n color: var(--mj-brand-primary);\n}\n\n\n\n.card-body[_ngcontent-%COMP%] {\n padding: 12px 16px;\n flex: 1;\n}\n\n.card-name[_ngcontent-%COMP%] {\n font-size: 18px;\n font-weight: 700;\n color: var(--mj-text-primary);\n margin-bottom: 2px;\n}\n\n.card-company[_ngcontent-%COMP%] {\n font-size: 14px;\n color: var(--mj-text-disabled);\n margin-bottom: 10px;\n}\n\n.card-meta[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--mj-text-muted);\n margin-bottom: 6px;\n}\n\n.meta-separator[_ngcontent-%COMP%] {\n margin: 0 6px;\n}\n\n.meta-label[_ngcontent-%COMP%] {\n font-weight: 500;\n}\n\n.card-sync-info[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--mj-text-muted);\n margin-bottom: 8px;\n}\n\n.card-sync-info[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n margin-right: 4px;\n color: var(--mj-text-disabled);\n}\n\n\n\n.card-test-result[_ngcontent-%COMP%] {\n font-size: 12px;\n padding: 6px 10px;\n border-radius: 6px;\n display: flex;\n align-items: center;\n gap: 6px;\n margin-top: 8px;\n}\n\n.card-test-result.test-success[_ngcontent-%COMP%] {\n background: var(--mj-status-success-bg);\n color: var(--mj-status-success);\n}\n\n.card-test-result.test-failure[_ngcontent-%COMP%] {\n background: var(--mj-status-error-bg);\n color: var(--mj-status-error);\n}\n\n.card-test-result[_ngcontent-%COMP%] span[_ngcontent-%COMP%] {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n\n\n.card-footer[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 12px 16px;\n border-top: 1px solid var(--mj-border-subtle);\n}\n\n.card-footer[_ngcontent-%COMP%] button[_ngcontent-%COMP%] {\n font-size: 13px;\n}\n\n\n\n.sync-menu-wrapper[_ngcontent-%COMP%] {\n position: relative;\n display: inline-flex;\n}\n\n.sync-caret[_ngcontent-%COMP%] {\n font-size: 10px;\n margin-left: 4px;\n opacity: 0.8;\n}\n\n.sync-dropdown[_ngcontent-%COMP%] {\n position: absolute;\n top: calc(100% + 4px);\n left: 0;\n z-index: 1000;\n background: var(--mj-bg-surface-elevated);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n box-shadow: 0 8px 24px rgba(0,0,0,0.12);\n min-width: 220px;\n overflow: hidden;\n}\n\n.sync-dropdown-left[_ngcontent-%COMP%] {\n left: auto;\n right: 0;\n}\n\n.sync-dropdown-group[_ngcontent-%COMP%] {\n padding: 8px 0;\n border-bottom: 1px solid var(--mj-border-subtle);\n}\n\n.sync-dropdown-group[_ngcontent-%COMP%]:last-child {\n border-bottom: none;\n}\n\n.sync-dropdown-label[_ngcontent-%COMP%] {\n display: block;\n font-size: 10px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.05em;\n color: var(--mj-text-muted);\n padding: 0 12px 4px;\n}\n\n.sync-dropdown-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n width: 100%;\n padding: 7px 12px;\n background: none;\n border: none;\n cursor: pointer;\n font-size: 13px;\n color: var(--mj-text-primary);\n text-align: left;\n transition: background 0.12s;\n}\n\n.sync-dropdown-item[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-hover);\n}\n\n.sync-dropdown-item[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n width: 16px;\n text-align: center;\n color: var(--mj-text-secondary);\n flex-shrink: 0;\n}\n\n\n\n.card-delete-btn[_ngcontent-%COMP%] {\n margin-left: auto;\n background: none;\n border: 1px solid transparent;\n cursor: pointer;\n padding: 4px 8px;\n border-radius: 6px;\n color: var(--mj-text-disabled);\n font-size: 14px;\n transition: all 0.15s;\n}\n\n.card-delete-btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-status-error-bg);\n border-color: var(--mj-status-error-border);\n color: var(--mj-status-error);\n}\n\n.menu-trigger[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-hover);\n color: var(--mj-text-secondary);\n}\n\n.card-menu-dropdown[_ngcontent-%COMP%] {\n position: absolute;\n right: 0;\n top: 100%;\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.12);\n min-width: 160px;\n z-index: 50;\n padding: 4px;\n}\n\n.menu-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n width: 100%;\n padding: 8px 12px;\n border: none;\n background: none;\n cursor: pointer;\n font-size: 13px;\n color: var(--mj-text-secondary);\n border-radius: 6px;\n transition: background 0.15s;\n text-align: left;\n}\n\n.menu-item[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-hover);\n}\n\n.menu-item[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n width: 16px;\n text-align: center;\n color: var(--mj-text-muted);\n}\n\n.menu-item-danger[_ngcontent-%COMP%] {\n color: var(--mj-status-error);\n}\n\n.menu-item-danger[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-status-error);\n}\n\n.menu-item-danger[_ngcontent-%COMP%]:hover {\n background: var(--mj-status-error-bg);\n}\n\n\n\n\n\n\n.new-connection-card[_ngcontent-%COMP%] {\n border: 2px dashed var(--mj-border-strong);\n background: var(--mj-bg-page);\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n min-height: 200px;\n transition: background 0.2s, border-color 0.2s;\n}\n\n.new-connection-card[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-hover);\n border-color: var(--mj-brand-primary);\n box-shadow: none;\n transform: none;\n}\n\n.new-card-content[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 12px;\n}\n\n.new-card-icon[_ngcontent-%COMP%] {\n width: 56px;\n height: 56px;\n border-radius: 50%;\n background: var(--mj-bg-surface-active);\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 24px;\n color: var(--mj-text-muted);\n transition: background 0.2s, color 0.2s;\n}\n\n.new-connection-card[_ngcontent-%COMP%]:hover .new-card-icon[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n}\n\n.new-card-label[_ngcontent-%COMP%] {\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-muted);\n}\n\n.new-connection-card[_ngcontent-%COMP%]:hover .new-card-label[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n}\n\n\n\n\n\n\n.wizard-inline[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n height: 100%;\n max-width: 720px;\n margin: 0 auto;\n}\n\n\n\n.wizard-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 16px;\n padding: 0 0 20px;\n}\n\n.wizard-back-btn[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n background: none;\n border: none;\n cursor: pointer;\n font-size: 13px;\n font-weight: 500;\n color: var(--mj-text-muted);\n padding: 6px 10px;\n border-radius: 6px;\n transition: background 0.15s, color 0.15s;\n}\n\n.wizard-back-btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-hover);\n color: var(--mj-text-primary);\n}\n\n.wizard-title[_ngcontent-%COMP%] {\n font-size: 20px;\n font-weight: 700;\n color: var(--mj-text-primary);\n margin: 0;\n}\n\n\n\n\n\n\n.step-indicator[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 20px 32px;\n gap: 0;\n}\n\n.step-item[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 6px;\n position: relative;\n}\n\n.step-circle[_ngcontent-%COMP%] {\n width: 32px;\n height: 32px;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 13px;\n font-weight: 600;\n background: var(--mj-bg-surface-active);\n color: var(--mj-text-disabled);\n border: 2px solid var(--mj-border-default);\n transition: all 0.2s;\n}\n\n.step-active[_ngcontent-%COMP%] .step-circle[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n border-color: var(--mj-brand-primary);\n}\n\n.step-completed[_ngcontent-%COMP%] .step-circle[_ngcontent-%COMP%] {\n background: var(--mj-status-success);\n color: var(--mj-text-inverse);\n border-color: var(--mj-status-success);\n}\n\n.step-label[_ngcontent-%COMP%] {\n font-size: 11px;\n font-weight: 500;\n color: var(--mj-text-disabled);\n white-space: nowrap;\n}\n\n.step-active[_ngcontent-%COMP%] .step-label[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n font-weight: 600;\n}\n\n.step-completed[_ngcontent-%COMP%] .step-label[_ngcontent-%COMP%] {\n color: var(--mj-status-success);\n}\n\n.step-line[_ngcontent-%COMP%] {\n width: 48px;\n height: 2px;\n background: var(--mj-border-default);\n margin: 0 8px;\n margin-bottom: 20px;\n transition: background 0.2s;\n}\n\n.step-line-active[_ngcontent-%COMP%] {\n background: var(--mj-status-success);\n}\n\n\n\n\n\n\n.wizard-body[_ngcontent-%COMP%] {\n flex: 1;\n overflow-y: auto;\n padding: 0 24px 24px;\n}\n\n.step-content[_ngcontent-%COMP%] {\n min-height: 300px;\n}\n\n.step-content-centered[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n text-align: center;\n}\n\n.step-title[_ngcontent-%COMP%] {\n font-size: 18px;\n font-weight: 600;\n color: var(--mj-text-primary);\n margin: 0 0 20px;\n}\n\n.step-content-centered[_ngcontent-%COMP%] .step-title[_ngcontent-%COMP%] {\n margin-bottom: 32px;\n}\n\n\n\n.search-bar[_ngcontent-%COMP%] {\n position: relative;\n margin-bottom: 20px;\n}\n\n.search-icon[_ngcontent-%COMP%] {\n position: absolute;\n left: 14px;\n top: 50%;\n transform: translateY(-50%);\n color: var(--mj-text-disabled);\n font-size: 14px;\n}\n\n.search-input[_ngcontent-%COMP%] {\n width: 100%;\n padding: 10px 14px 10px 40px;\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n font-size: 14px;\n color: var(--mj-text-primary);\n background: var(--mj-bg-surface);\n transition: border-color 0.2s, box-shadow 0.2s;\n box-sizing: border-box;\n}\n\n.search-input[_ngcontent-%COMP%]:focus {\n outline: none;\n border-color: var(--mj-brand-primary);\n box-shadow: 0 0 0 3px rgba(37, 99, 235, 0.1);\n}\n\n.search-input[_ngcontent-%COMP%]::placeholder {\n color: var(--mj-text-disabled);\n}\n\n\n\n.no-integrations[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 48px 24px;\n color: var(--mj-text-disabled);\n text-align: center;\n}\n\n.no-integrations[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 36px;\n margin-bottom: 12px;\n}\n\n.no-integrations[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n font-size: 16px;\n font-weight: 500;\n color: var(--mj-text-muted);\n margin: 0 0 4px;\n}\n\n.no-integrations-hint[_ngcontent-%COMP%] {\n font-size: 13px;\n}\n\n\n\n.integration-picker-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(3, 1fr);\n gap: 12px;\n}\n\n.integration-picker-card[_ngcontent-%COMP%] {\n border: 2px solid var(--mj-border-default);\n border-radius: 10px;\n padding: 16px;\n cursor: pointer;\n text-align: center;\n transition: border-color 0.2s, background 0.15s;\n}\n\n.integration-picker-card[_ngcontent-%COMP%]:hover {\n border-color: var(--mj-brand-primary);\n background: var(--mj-bg-page);\n}\n\n.integration-picker-card.picker-selected[_ngcontent-%COMP%] {\n border-color: var(--mj-brand-primary);\n background: var(--mj-status-info-bg);\n}\n\n.picker-icon-circle[_ngcontent-%COMP%] {\n width: 40px;\n height: 40px;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--mj-text-inverse);\n margin: 0 auto 10px;\n font-size: 18px;\n}\n\n.picker-name[_ngcontent-%COMP%] {\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-primary);\n margin-bottom: 4px;\n}\n\n.picker-description[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-disabled);\n line-height: 1.3;\n overflow: hidden;\n text-overflow: ellipsis;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n}\n\n\n\n\n\n\n.form-group[_ngcontent-%COMP%] {\n margin-bottom: 20px;\n}\n\n.form-label[_ngcontent-%COMP%] {\n display: block;\n font-size: 13px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n margin-bottom: 6px;\n}\n\n.optional-label[_ngcontent-%COMP%] {\n font-weight: 400;\n color: var(--mj-text-disabled);\n}\n\n.form-input[_ngcontent-%COMP%] {\n width: 100%;\n padding: 10px 14px;\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n font-size: 14px;\n color: var(--mj-text-primary);\n background: var(--mj-bg-surface);\n transition: border-color 0.2s, box-shadow 0.2s;\n box-sizing: border-box;\n}\n\n.form-input[_ngcontent-%COMP%]:focus {\n outline: none;\n border-color: var(--mj-brand-primary);\n box-shadow: 0 0 0 3px rgba(37, 99, 235, 0.1);\n}\n\n.form-input[_ngcontent-%COMP%]::placeholder {\n color: var(--mj-text-disabled);\n}\n\n.form-input[_ngcontent-%COMP%]:disabled {\n background: var(--mj-bg-page);\n color: var(--mj-text-muted);\n}\n\n.form-textarea[_ngcontent-%COMP%] {\n resize: vertical;\n min-height: 72px;\n}\n\n.form-hint[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--mj-text-disabled);\n padding: 8px 0;\n}\n\n\n\n.credential-selected[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 10px 14px;\n background: var(--mj-status-success-bg);\n border: 1px solid var(--mj-status-success-border);\n border-radius: 8px;\n}\n\n.credential-info[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n color: var(--mj-status-success-text);\n font-size: 14px;\n font-weight: 500;\n}\n\n.credential-info[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-status-success);\n}\n\n.credential-clear[_ngcontent-%COMP%] {\n background: none;\n border: none;\n cursor: pointer;\n color: var(--mj-text-disabled);\n font-size: 14px;\n padding: 4px;\n border-radius: 4px;\n transition: color 0.15s;\n}\n\n.credential-clear[_ngcontent-%COMP%]:hover {\n color: var(--mj-status-error);\n}\n\n.credential-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n}\n\n.credential-actions[_ngcontent-%COMP%] button[_ngcontent-%COMP%] {\n font-size: 13px;\n}\n\n.credential-loading[_ngcontent-%COMP%] {\n padding: 16px 0;\n}\n\n.credential-list[_ngcontent-%COMP%] {\n margin-top: 12px;\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n overflow: hidden;\n}\n\n.credential-list-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 10px 14px;\n cursor: pointer;\n font-size: 14px;\n color: var(--mj-text-secondary);\n border-bottom: 1px solid var(--mj-border-subtle);\n transition: background 0.15s;\n}\n\n.credential-list-item[_ngcontent-%COMP%]:last-child {\n border-bottom: none;\n}\n\n.credential-list-item[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-page);\n}\n\n.credential-list-item[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-text-disabled);\n}\n\n\n\n\n\n\n.test-prompt[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 16px;\n}\n\n.test-hint[_ngcontent-%COMP%] {\n font-size: 14px;\n color: var(--mj-text-disabled);\n margin: 0;\n}\n\n.test-running[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 16px;\n color: var(--mj-brand-primary);\n}\n\n.test-spinner[_ngcontent-%COMP%] {\n width: 64px;\n height: 64px;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.test-running[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n font-size: 15px;\n font-weight: 500;\n margin: 0;\n}\n\n\n\n.test-result[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 12px;\n padding: 24px;\n border-radius: 12px;\n max-width: 400px;\n}\n\n.test-result-success[_ngcontent-%COMP%] {\n background: var(--mj-status-success-bg);\n}\n\n.test-result-failure[_ngcontent-%COMP%] {\n background: var(--mj-status-error-bg);\n}\n\n.test-result-icon[_ngcontent-%COMP%] {\n font-size: 48px;\n animation: _ngcontent-%COMP%_scaleIn 0.3s ease-out;\n}\n\n.test-result-success[_ngcontent-%COMP%] .test-result-icon[_ngcontent-%COMP%] {\n color: var(--mj-status-success);\n}\n\n.test-result-failure[_ngcontent-%COMP%] .test-result-icon[_ngcontent-%COMP%] {\n color: var(--mj-status-error);\n}\n\n@keyframes _ngcontent-%COMP%_scaleIn {\n from {\n transform: scale(0.5);\n opacity: 0;\n }\n to {\n transform: scale(1);\n opacity: 1;\n }\n}\n\n.test-result-message[_ngcontent-%COMP%] {\n font-size: 15px;\n font-weight: 500;\n color: var(--mj-text-secondary);\n text-align: center;\n}\n\n.test-result-detail[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--mj-text-muted);\n}\n\n.test-retry-btn[_ngcontent-%COMP%] {\n margin-top: 4px;\n}\n\n\n\n.toggle-switch[_ngcontent-%COMP%] {\n position: relative;\n display: inline-block;\n width: 44px;\n height: 24px;\n flex-shrink: 0;\n}\n\n.toggle-switch[_ngcontent-%COMP%] input[_ngcontent-%COMP%] {\n opacity: 0;\n width: 0;\n height: 0;\n}\n\n.toggle-slider[_ngcontent-%COMP%] {\n position: absolute;\n cursor: pointer;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: var(--mj-border-strong);\n border-radius: 24px;\n transition: background 0.2s;\n}\n\n.toggle-slider[_ngcontent-%COMP%]::before {\n content: '';\n position: absolute;\n height: 18px;\n width: 18px;\n left: 3px;\n bottom: 3px;\n background: var(--mj-bg-surface);\n border-radius: 50%;\n transition: transform 0.2s;\n}\n\n.toggle-switch[_ngcontent-%COMP%] input[_ngcontent-%COMP%]:checked + .toggle-slider[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary);\n}\n\n.toggle-switch[_ngcontent-%COMP%] input[_ngcontent-%COMP%]:checked + .toggle-slider[_ngcontent-%COMP%]::before {\n transform: translateX(20px);\n}\n\n\n\n\n\n\n.wizard-footer[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 16px 24px;\n border-top: 1px solid var(--mj-border-subtle);\n}\n\n.footer-left[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n}\n\n.footer-right[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n\n\n\n\n\n@media (max-width: 768px) {\n .connections-container[_ngcontent-%COMP%] {\n padding: 16px;\n }\n\n .card-grid[_ngcontent-%COMP%] {\n grid-template-columns: 1fr;\n }\n\n .integration-picker-grid[_ngcontent-%COMP%] {\n grid-template-columns: repeat(2, 1fr);\n }\n\n .step-indicator[_ngcontent-%COMP%] {\n padding: 16px;\n overflow-x: auto;\n }\n\n .step-line[_ngcontent-%COMP%] {\n width: 24px;\n }\n\n .credential-actions[_ngcontent-%COMP%] {\n flex-direction: column;\n }\n}\n\n@media (max-width: 480px) {\n .integration-picker-grid[_ngcontent-%COMP%] {\n grid-template-columns: 1fr;\n }\n\n .card-footer[_ngcontent-%COMP%] {\n flex-wrap: wrap;\n }\n}\n\n\n\n\n\n\n.delete-confirm-overlay[_ngcontent-%COMP%] {\n position: absolute;\n inset: 0;\n background: rgba(255, 255, 255, 0.95);\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 5;\n border-radius: 12px;\n animation: _ngcontent-%COMP%_fadeIn 150ms ease;\n}\n\n@keyframes _ngcontent-%COMP%_fadeIn {\n from { opacity: 0; }\n to { opacity: 1; }\n}\n\n.delete-confirm-content[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 10px;\n padding: 20px;\n text-align: center;\n}\n\n.delete-warn-icon[_ngcontent-%COMP%] {\n font-size: 28px;\n color: var(--mj-status-error);\n}\n\n.delete-confirm-text[_ngcontent-%COMP%] {\n font-size: 13px;\n font-weight: 500;\n color: var(--mj-text-secondary);\n max-width: 220px;\n}\n\n.delete-confirm-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n margin-top: 4px;\n}\n\n\n\n\n\n\n.edit-panel-backdrop[_ngcontent-%COMP%] {\n position: fixed;\n inset: 0;\n background: rgba(0, 0, 0, 0.1);\n z-index: 99;\n opacity: 0;\n pointer-events: none;\n transition: opacity 300ms ease;\n}\n\n.edit-panel-backdrop.open[_ngcontent-%COMP%] {\n opacity: 1;\n pointer-events: auto;\n}\n\n.edit-panel[_ngcontent-%COMP%] {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n width: 400px;\n max-width: 100%;\n background: var(--mj-bg-surface);\n border-left: 1px solid var(--mj-border-default);\n box-shadow: -8px 0 24px rgba(0, 0, 0, 0.08);\n z-index: 100;\n transform: translateX(100%);\n transition: transform 300ms cubic-bezier(0.4, 0, 0.2, 1);\n display: flex;\n flex-direction: column;\n overflow: hidden;\n}\n\n.edit-panel.open[_ngcontent-%COMP%] {\n transform: translateX(0);\n}\n\n.edit-panel-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 16px 20px;\n border-bottom: 1px solid var(--mj-border-default);\n flex-shrink: 0;\n}\n\n.edit-panel-title[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n font-size: 15px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.edit-icon-circle[_ngcontent-%COMP%] {\n width: 32px;\n height: 32px;\n border-radius: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--mj-text-inverse);\n font-size: 14px;\n}\n\n.edit-close-btn[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 28px;\n height: 28px;\n border: none;\n border-radius: 6px;\n background: transparent;\n color: var(--mj-text-disabled);\n cursor: pointer;\n font-size: 14px;\n transition: all 150ms ease;\n}\n\n.edit-close-btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-hover);\n color: var(--mj-text-secondary);\n}\n\n.edit-panel-loading[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 48px 20px;\n}\n\n.edit-panel-body[_ngcontent-%COMP%] {\n flex: 1;\n overflow-y: auto;\n padding: 20px;\n display: flex;\n flex-direction: column;\n gap: 20px;\n}\n\n.edit-form-group[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 6px;\n}\n\n.edit-form-label[_ngcontent-%COMP%] {\n font-size: 12px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n text-transform: uppercase;\n letter-spacing: 0.3px;\n}\n\n.edit-form-input[_ngcontent-%COMP%] {\n height: 36px;\n padding: 0 12px;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n font-size: 14px;\n color: var(--mj-text-primary);\n background: var(--mj-bg-surface);\n outline: none;\n transition: border-color 150ms ease;\n}\n\n.edit-form-input[_ngcontent-%COMP%]:focus {\n border-color: var(--mj-brand-primary);\n}\n\n.edit-readonly-field[_ngcontent-%COMP%] {\n padding: 8px 12px;\n background: var(--mj-bg-page);\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n font-size: 13px;\n color: var(--mj-text-muted);\n}\n\n.edit-toggle-row[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n}\n\n.edit-toggle-label[_ngcontent-%COMP%] {\n font-size: 13px;\n font-weight: 500;\n color: var(--mj-text-disabled);\n}\n\n.edit-toggle-label.active[_ngcontent-%COMP%] {\n color: var(--mj-status-success);\n}\n\n.edit-credential-selected[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 10px 12px;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n background: var(--mj-bg-page);\n}\n\n.edit-credential-info[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 13px;\n color: var(--mj-text-secondary);\n}\n\n.edit-credential-info[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n}\n\n.edit-credential-clear[_ngcontent-%COMP%] {\n width: 24px;\n height: 24px;\n border: none;\n border-radius: 4px;\n background: transparent;\n color: var(--mj-text-disabled);\n cursor: pointer;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n font-size: 12px;\n transition: all 150ms ease;\n}\n\n.edit-credential-clear[_ngcontent-%COMP%]:hover {\n background: var(--mj-status-error-bg);\n color: var(--mj-status-error);\n}\n\n.edit-credential-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n}\n\n.edit-credential-list[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 2px;\n margin-top: 6px;\n max-height: 180px;\n overflow-y: auto;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n}\n\n.edit-credential-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 12px;\n font-size: 13px;\n color: var(--mj-text-secondary);\n cursor: pointer;\n transition: background 150ms ease;\n}\n\n.edit-credential-item[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-hover);\n}\n\n.edit-credential-item[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-text-disabled);\n font-size: 12px;\n}\n\n.edit-panel-footer[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n padding: 16px 20px;\n border-top: 1px solid var(--mj-border-default);\n flex-shrink: 0;\n}\n\n\n\n\n\n\n.card-clickable[_ngcontent-%COMP%] {\n cursor: pointer;\n}\n\n\n\n\n\n\n.detail-view[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n flex: 1;\n min-height: 0;\n overflow: hidden;\n}\n\n.detail-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 16px;\n padding-bottom: 20px;\n border-bottom: 1px solid var(--mj-border-subtle);\n margin-bottom: 16px;\n flex-wrap: wrap;\n}\n\n.detail-header-info[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n flex: 1;\n min-width: 0;\n}\n\n.detail-header-text[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 2px;\n min-width: 0;\n}\n\n.detail-title[_ngcontent-%COMP%] {\n font-size: 20px;\n font-weight: 700;\n color: var(--mj-text-primary);\n margin: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.detail-subtitle[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--mj-text-muted);\n display: flex;\n align-items: center;\n gap: 4px;\n flex-wrap: wrap;\n}\n\n.detail-header-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n flex-shrink: 0;\n}\n\n\n\n.schedule-section[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 12px;\n padding: 16px 20px;\n margin-bottom: 16px;\n}\n\n.schedule-section-header[_ngcontent-%COMP%] {\n margin-bottom: 12px;\n}\n\n.schedule-section-title[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 0.8rem;\n font-weight: 700;\n color: var(--mj-text-secondary);\n text-transform: uppercase;\n letter-spacing: 0.04em;\n}\n\n.schedule-section-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n}\n\n.schedule-empty[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 8px 0;\n}\n\n.schedule-empty-text[_ngcontent-%COMP%] {\n font-size: 0.85rem;\n color: var(--mj-text-disabled);\n}\n\n.schedule-create-btn[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 8px 16px;\n background: linear-gradient(135deg, var(--mj-brand-primary) 0%, var(--mj-brand-primary-active) 100%);\n color: white;\n border: none;\n border-radius: 8px;\n cursor: pointer;\n font-size: 0.8rem;\n font-weight: 600;\n transition: all 0.2s ease;\n}\n\n.schedule-create-btn[_ngcontent-%COMP%]:hover {\n transform: translateY(-1px);\n box-shadow: 0 4px 12px color-mix(in srgb, var(--mj-brand-primary) 40%, transparent);\n}\n\n\n\n.detail-toolbar[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin-bottom: 12px;\n}\n\n.detail-toolbar-left[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.detail-map-count[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--mj-text-muted);\n font-weight: 500;\n}\n\n.detail-search[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 6px 12px;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n background: var(--mj-bg-surface);\n}\n\n.detail-search[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-text-disabled);\n font-size: 12px;\n}\n\n.detail-search[_ngcontent-%COMP%] input[_ngcontent-%COMP%] {\n border: none;\n outline: none;\n background: transparent;\n font-size: 13px;\n color: var(--mj-text-primary);\n width: 200px;\n}\n\n.detail-search[_ngcontent-%COMP%] input[_ngcontent-%COMP%]::placeholder {\n color: var(--mj-text-disabled);\n}\n\n\n\n.add-map-btn[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 6px 14px;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n background: var(--mj-bg-surface-card);\n color: var(--mj-brand-primary-hover);\n font-size: 13px;\n font-weight: 500;\n cursor: pointer;\n transition: all 150ms ease;\n white-space: nowrap;\n}\n\n.add-map-btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-hover);\n border-color: var(--mj-border-strong);\n}\n\n.add-map-btn.active[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary);\n color: var(--mj-bg-surface);\n border-color: var(--mj-brand-primary);\n}\n\n.apply-all-btn[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n border-color: var(--mj-brand-primary);\n}\n\n.apply-all-btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-brand-primary-hover);\n border-color: var(--mj-brand-primary-hover);\n}\n\n.apply-all-btn[_ngcontent-%COMP%]:disabled {\n opacity: 0.6;\n cursor: not-allowed;\n}\n\n.add-map-btn-lg[_ngcontent-%COMP%] {\n margin-top: 16px;\n padding: 10px 20px;\n font-size: 14px;\n}\n\n\n\n.add-map-panel[_ngcontent-%COMP%] {\n padding: 16px;\n margin-bottom: 12px;\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n animation: _ngcontent-%COMP%_fadeIn 200ms ease;\n}\n\n.add-map-row[_ngcontent-%COMP%] {\n display: flex;\n align-items: flex-end;\n gap: 12px;\n}\n\n.add-map-field[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n}\n\n.add-map-label[_ngcontent-%COMP%] {\n display: block;\n font-size: 11px;\n font-weight: 600;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.3px;\n margin-bottom: 6px;\n}\n\n.add-map-select[_ngcontent-%COMP%] {\n width: 100%;\n height: 34px;\n padding: 0 10px;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n font-size: 13px;\n color: var(--mj-text-primary);\n background: var(--mj-bg-surface);\n outline: none;\n cursor: pointer;\n}\n\n.add-map-select[_ngcontent-%COMP%]:focus {\n border-color: var(--mj-brand-primary);\n}\n\n.add-map-direction-col[_ngcontent-%COMP%] {\n flex-shrink: 0;\n}\n\n.add-map-direction-btns[_ngcontent-%COMP%] {\n display: flex;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n overflow: hidden;\n}\n\n.add-map-direction-btns[_ngcontent-%COMP%] button[_ngcontent-%COMP%] {\n padding: 7px 12px;\n border: none;\n background: var(--mj-bg-surface);\n color: var(--mj-text-muted);\n font-size: 13px;\n cursor: pointer;\n transition: all 150ms ease;\n border-right: 1px solid var(--mj-border-default);\n}\n\n.add-map-direction-btns[_ngcontent-%COMP%] button[_ngcontent-%COMP%]:last-child {\n border-right: none;\n}\n\n.add-map-direction-btns[_ngcontent-%COMP%] button[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-hover);\n}\n\n.add-map-direction-btns[_ngcontent-%COMP%] button.active[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary);\n color: var(--mj-bg-surface);\n}\n\n.add-map-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 6px;\n flex-shrink: 0;\n}\n\n.add-map-save-btn[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 7px 16px;\n border: none;\n border-radius: 6px;\n background: var(--mj-brand-primary);\n color: var(--mj-bg-surface);\n font-size: 13px;\n font-weight: 500;\n cursor: pointer;\n transition: all 150ms ease;\n white-space: nowrap;\n}\n\n.add-map-save-btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-brand-primary-hover);\n}\n\n.add-map-save-btn[_ngcontent-%COMP%]:disabled {\n opacity: 0.5;\n cursor: default;\n}\n\n.add-map-cancel-btn[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 34px;\n height: 34px;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n background: var(--mj-bg-surface);\n color: var(--mj-text-muted);\n cursor: pointer;\n font-size: 13px;\n transition: all 150ms ease;\n}\n\n.add-map-cancel-btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-hover);\n color: var(--mj-text-primary);\n}\n\n.add-map-loading[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-disabled);\n padding: 8px 0;\n}\n\n.add-map-loading[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n margin-right: 4px;\n}\n\n.add-map-hint[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-disabled);\n padding: 8px 0;\n font-style: italic;\n}\n\n\n\n.add-map-entity-field[_ngcontent-%COMP%] {\n flex: 2;\n min-width: 280px;\n}\n\n\n\n.entity-picker-row[_ngcontent-%COMP%] {\n display: flex;\n align-items: flex-start;\n gap: 8px;\n}\n\n.entity-picker-row[_ngcontent-%COMP%] mj-tree-dropdown[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n}\n\n.new-entity-btn[_ngcontent-%COMP%] {\n flex-shrink: 0;\n display: inline-flex;\n align-items: center;\n gap: 4px;\n padding: 7px 12px;\n font-size: 12px;\n font-weight: 600;\n color: var(--mj-brand-primary);\n background: var(--mj-brand-primary-subtle);\n border: 1px solid color-mix(in srgb, var(--mj-brand-primary) 20%, transparent);\n border-radius: 6px;\n cursor: pointer;\n white-space: nowrap;\n transition: all 0.15s ease;\n}\n\n.new-entity-btn[_ngcontent-%COMP%]:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 15%, var(--mj-bg-surface));\n border-color: color-mix(in srgb, var(--mj-brand-primary) 30%, transparent);\n}\n\n\n\n\n\n\n.sync-result-banner[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 10px 14px;\n border-radius: 6px;\n font-size: 13px;\n font-weight: 500;\n margin-bottom: 12px;\n animation: _ngcontent-%COMP%_fadeIn 200ms ease;\n}\n\n.sync-result-banner.sync-success[_ngcontent-%COMP%] {\n background: var(--mj-status-success-bg);\n border: 1px solid var(--mj-status-success-border);\n color: var(--mj-status-success-text);\n}\n\n.sync-result-banner.sync-failure[_ngcontent-%COMP%] {\n background: var(--mj-status-error-bg);\n border: 1px solid var(--mj-status-error-border);\n color: var(--mj-status-error-text);\n}\n\n\n\n\n\n\n.auto-map-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n margin-bottom: 12px;\n font-size: 13px;\n color: var(--mj-text-secondary);\n}\n\n.auto-map-header[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n}\n\n.auto-map-result[_ngcontent-%COMP%] {\n margin-top: 12px;\n padding: 10px 14px;\n border-radius: 6px;\n font-size: 13px;\n}\n\n.auto-map-result.auto-map-success[_ngcontent-%COMP%] {\n background: var(--mj-status-success-bg);\n border: 1px solid var(--mj-status-success-border);\n color: var(--mj-status-success-text);\n}\n\n.auto-map-result.auto-map-partial[_ngcontent-%COMP%] {\n background: var(--mj-status-warning-bg);\n border: 1px solid var(--mj-status-warning-border);\n color: var(--mj-status-warning-text);\n}\n\n.auto-map-result.auto-map-failure[_ngcontent-%COMP%] {\n background: var(--mj-status-error-bg);\n border: 1px solid var(--mj-status-error-border);\n color: var(--mj-status-error-text);\n}\n\n.auto-map-result-summary[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n font-weight: 500;\n}\n\n.auto-map-errors[_ngcontent-%COMP%] {\n margin-top: 6px;\n font-size: 12px;\n}\n\n.auto-map-error[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 2px 0;\n}\n\n\n\n\n\n\n.new-entity-backdrop[_ngcontent-%COMP%] {\n position: fixed;\n inset: 0;\n background: rgba(0, 0, 0, 0.4);\n z-index: 1000;\n animation: _ngcontent-%COMP%_fadeIn 0.15s ease;\n}\n\n.new-entity-dialog[_ngcontent-%COMP%] {\n position: fixed;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n width: 640px;\n max-width: 90vw;\n max-height: 85vh;\n background: var(--mj-bg-surface);\n border-radius: var(--mj-radius-lg);\n box-shadow: 0 20px 60px rgba(0, 0, 0, 0.2);\n z-index: 1001;\n display: flex;\n flex-direction: column;\n animation: _ngcontent-%COMP%_fadeIn 0.2s ease;\n}\n\n.new-entity-dialog-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 16px 20px;\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.new-entity-dialog-header[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n margin: 0;\n font-size: var(--mj-text-base);\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.new-entity-dialog-close[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n height: 32px;\n padding: 0;\n font-size: var(--mj-text-sm);\n color: var(--mj-text-secondary);\n background: transparent;\n border: none;\n border-radius: 6px;\n cursor: pointer;\n transition: all 0.15s ease;\n}\n\n.new-entity-dialog-close[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-card);\n color: var(--mj-text-primary);\n}\n\n.new-entity-dialog-body[_ngcontent-%COMP%] {\n flex: 1;\n overflow-y: auto;\n padding: 20px;\n display: flex;\n flex-direction: column;\n gap: 16px;\n}\n\n.new-entity-dialog-desc[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 13px;\n color: var(--mj-text-secondary);\n line-height: 1.5;\n}\n\n.new-entity-dialog-form[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 12px;\n}\n\n.new-entity-dialog-row[_ngcontent-%COMP%] {\n display: flex;\n align-items: flex-end;\n gap: 8px;\n}\n\n.new-entity-dialog-field[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 4px;\n min-width: 120px;\n}\n\n.new-entity-dialog-field-wide[_ngcontent-%COMP%] {\n flex: 1;\n}\n\n.new-entity-dialog-label[_ngcontent-%COMP%] {\n font-size: var(--mj-text-xs);\n font-weight: 600;\n color: var(--mj-text-secondary);\n}\n\n.new-entity-dialog-input[_ngcontent-%COMP%] {\n padding: 8px 12px;\n font-size: var(--mj-text-sm);\n border: 1px solid var(--mj-border-strong);\n border-radius: var(--mj-radius-md);\n background: var(--mj-bg-surface);\n color: var(--mj-text-primary);\n transition: border-color 0.15s ease;\n}\n\n.new-entity-dialog-input[_ngcontent-%COMP%]:focus {\n outline: none;\n border-color: var(--mj-brand-primary);\n box-shadow: 0 0 0 2px rgba(99, 102, 241, 0.1);\n}\n\n.new-entity-dialog-dot[_ngcontent-%COMP%] {\n font-size: 20px;\n font-weight: 700;\n color: var(--mj-text-secondary);\n padding-bottom: 6px;\n user-select: none;\n}\n\n.new-entity-dialog-value[_ngcontent-%COMP%] {\n font-size: 14px;\n font-weight: 500;\n color: var(--mj-text-primary);\n padding: 8px 0 4px;\n}\n\n.new-entity-dialog-hint[_ngcontent-%COMP%] {\n font-style: italic;\n color: var(--mj-text-disabled);\n font-weight: 400;\n}\n\n.new-entity-dialog-footer[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: flex-end;\n gap: 8px;\n padding: 12px 20px;\n border-top: 1px solid var(--mj-border-default);\n}\n\n.new-entity-preview-btn[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 5px;\n padding: 8px 16px;\n font-size: 13px;\n font-weight: 600;\n color: var(--mj-text-inverse);\n background: var(--mj-brand-primary);\n border: none;\n border-radius: 6px;\n cursor: pointer;\n white-space: nowrap;\n transition: background 0.15s ease;\n}\n\n.new-entity-preview-btn[_ngcontent-%COMP%]:hover:not(:disabled) {\n background: var(--mj-brand-primary-hover);\n}\n\n.new-entity-preview-btn[_ngcontent-%COMP%]:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.new-entity-dialog-done-btn[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n padding: 8px 16px;\n font-size: 13px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n background: transparent;\n border: 1px solid var(--mj-border-strong);\n border-radius: var(--mj-radius-md);\n cursor: pointer;\n transition: all 0.15s ease;\n}\n\n.new-entity-dialog-done-btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-card);\n border-color: var(--mj-text-disabled);\n}\n\n\n\n.new-entity-next-steps[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary-subtle);\n border: 1px solid color-mix(in srgb, var(--mj-brand-primary) 20%, transparent);\n border-radius: var(--mj-radius-md);\n padding: 14px 16px;\n}\n\n.new-entity-next-steps[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n margin: 0 0 8px;\n font-size: 13px;\n font-weight: 600;\n color: var(--mj-brand-primary-hover);\n}\n\n.new-entity-next-steps[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n margin-right: 6px;\n}\n\n.new-entity-next-steps[_ngcontent-%COMP%] ol[_ngcontent-%COMP%] {\n margin: 0;\n padding-left: 20px;\n font-size: 13px;\n color: var(--mj-brand-primary-hover);\n line-height: 1.7;\n}\n\n\n\n.ddl-copy-btn[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n padding: 3px 8px;\n font-size: 11px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n background: transparent;\n border: 1px solid var(--mj-border-strong);\n border-radius: var(--mj-radius-sm);\n cursor: pointer;\n transition: all 0.15s ease;\n}\n\n.ddl-copy-btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-card);\n border-color: var(--mj-text-disabled);\n}\n\n\n\n.ddl-warnings[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.ddl-warning[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-status-warning);\n background: var(--mj-status-warning-subtle);\n padding: 6px 10px;\n border-radius: var(--mj-radius-sm);\n border-left: 3px solid var(--mj-status-warning);\n}\n\n.ddl-warning[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n margin-right: 4px;\n}\n\n.ddl-preview-block[_ngcontent-%COMP%] {\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md);\n overflow: hidden;\n max-height: 300px;\n display: flex;\n flex-direction: column;\n}\n\n.ddl-preview-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 8px 12px;\n background: var(--mj-bg-surface-card);\n border-bottom: 1px solid var(--mj-border-default);\n font-size: var(--mj-text-xs);\n font-weight: 600;\n color: var(--mj-text-secondary);\n}\n\n.ddl-preview-code[_ngcontent-%COMP%] {\n margin: 0;\n padding: 12px 16px;\n font-size: 12px;\n font-family: 'SF Mono', 'Fira Code', 'Cascadia Code', monospace;\n line-height: 1.6;\n color: var(--mj-text-primary);\n background: var(--mj-bg-surface);\n overflow: auto;\n white-space: pre-wrap;\n word-break: break-word;\n flex: 1;\n}\n\n@keyframes _ngcontent-%COMP%_fadeIn {\n from { opacity: 0; }\n to { opacity: 1; }\n}\n\n\n\n.detail-empty[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 64px 24px;\n text-align: center;\n color: var(--mj-text-disabled);\n}\n\n.detail-empty[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 36px;\n margin-bottom: 12px;\n color: var(--mj-text-disabled);\n}\n\n.detail-empty[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n font-size: 18px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n margin: 0 0 6px;\n}\n\n.detail-empty[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n font-size: 13px;\n margin: 0;\n max-width: 400px;\n}\n\n\n\n.detail-table-head[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n padding: 8px 16px;\n background: var(--mj-bg-page);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px 8px 0 0;\n font-size: 11px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.04em;\n color: var(--mj-text-secondary);\n}\n\n.detail-table-body[_ngcontent-%COMP%] {\n border: 1px solid var(--mj-border-default);\n border-top: none;\n border-radius: 0 0 8px 8px;\n overflow-y: auto;\n flex: 1;\n min-height: 0;\n}\n\n.detail-map-row[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n padding: 10px 16px;\n border-bottom: 1px solid var(--mj-border-subtle);\n transition: background 0.15s;\n font-size: 13px;\n}\n\n.detail-map-row[_ngcontent-%COMP%]:last-child {\n border-bottom: none;\n}\n\n.detail-map-row[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-page);\n cursor: pointer;\n}\n\n.detail-map-row.sync-disabled[_ngcontent-%COMP%] {\n opacity: 0.5;\n}\n\n\n\n.dt-col-toggle[_ngcontent-%COMP%] {\n width: 60px;\n flex-shrink: 0;\n}\n\n.dt-col-source[_ngcontent-%COMP%] {\n flex: 2;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n font-weight: 500;\n color: var(--mj-text-primary);\n}\n\n.dt-col-direction[_ngcontent-%COMP%] {\n width: 80px;\n flex-shrink: 0;\n text-align: center;\n}\n\n.dt-col-dest[_ngcontent-%COMP%] {\n flex: 2;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n color: var(--mj-text-primary);\n}\n\n.dt-col-meta[_ngcontent-%COMP%] {\n width: 80px;\n flex-shrink: 0;\n display: flex;\n align-items: center;\n gap: 6px;\n justify-content: flex-end;\n}\n\n\n\n.direction-badge[_ngcontent-%COMP%] {\n font-size: 11px;\n font-weight: 600;\n padding: 2px 8px;\n border-radius: 4px;\n white-space: nowrap;\n}\n\n\n\nbutton.direction-toggle[_ngcontent-%COMP%] {\n border: 1px solid transparent;\n cursor: pointer;\n transition: border-color 0.15s, box-shadow 0.15s;\n}\nbutton.direction-toggle[_ngcontent-%COMP%]:hover {\n border-color: var(--mj-border-strong);\n box-shadow: 0 0 0 2px color-mix(in srgb, var(--mj-brand-primary) 12%, transparent);\n}\n\n.direction-badge.pull[_ngcontent-%COMP%] {\n background: var(--mj-status-info-bg);\n color: var(--mj-brand-primary);\n}\n\n.direction-badge.push[_ngcontent-%COMP%] {\n background: var(--mj-status-success-bg);\n color: var(--mj-status-success);\n}\n\n.direction-badge.bidirectional[_ngcontent-%COMP%] {\n background: var(--mj-status-warning-subtle);\n color: var(--mj-status-warning);\n}\n\n\n\n.create-tables-list[_ngcontent-%COMP%] {\n max-height: 300px;\n overflow-y: auto;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n margin-top: 8px;\n background: var(--mj-bg-surface);\n}\n.create-tables-select-all[_ngcontent-%COMP%] {\n padding: 8px 12px;\n border-bottom: 1px solid var(--mj-border-default);\n background: var(--mj-bg-surface-card);\n font-weight: 600;\n}\n.create-tables-checkbox[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 6px 12px;\n cursor: pointer;\n font-size: 13px;\n color: var(--mj-text-primary);\n}\n.create-tables-checkbox[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-hover);\n}\n.create-tables-checkbox[_ngcontent-%COMP%] input[type=\"checkbox\"][_ngcontent-%COMP%] {\n width: 16px;\n height: 16px;\n cursor: pointer;\n}\n.create-tables-name-hint[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n font-size: 11px;\n margin-left: 8px;\n}\n.create-tables-filters[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 8px 0;\n flex-wrap: wrap;\n}\n.create-tables-search[_ngcontent-%COMP%] {\n flex: 1 1 240px;\n min-width: 200px;\n}\n.create-tables-toggle[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n font-size: 12px;\n color: var(--mj-text-secondary);\n cursor: pointer;\n}\n.create-tables-toggle[_ngcontent-%COMP%] input[type=\"checkbox\"][_ngcontent-%COMP%] {\n margin: 0;\n}\n.create-tables-badge[_ngcontent-%COMP%] {\n display: inline-block;\n margin-left: 6px;\n padding: 1px 6px;\n font-size: 10px;\n font-weight: 600;\n border-radius: 10px;\n text-transform: uppercase;\n letter-spacing: 0.3px;\n line-height: 1.4;\n}\n.create-tables-badge-custom[_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.create-tables-badge-registered[_ngcontent-%COMP%] {\n background: var(--mj-status-success-bg);\n color: var(--mj-status-success-text);\n}\n.add-map-input[_ngcontent-%COMP%] {\n width: 100%;\n padding: 6px 10px;\n border: 1px solid var(--mj-border-default);\n border-radius: 4px;\n font-size: 13px;\n background: var(--mj-bg-surface);\n color: var(--mj-text-primary);\n}\n.add-map-input[_ngcontent-%COMP%]:focus {\n outline: none;\n border-color: var(--mj-brand-primary);\n box-shadow: 0 0 0 2px color-mix(in srgb, var(--mj-brand-primary) 15%, transparent);\n}\n\n\n\n.detail-config-badge[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 24px;\n height: 24px;\n border-radius: 4px;\n background: var(--mj-bg-surface-active);\n color: var(--mj-text-disabled);\n font-size: 11px;\n}\n\n\n\n.detail-back-btn[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 36px;\n height: 36px;\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n background: var(--mj-bg-surface);\n color: var(--mj-text-secondary);\n cursor: pointer;\n font-size: 16px;\n transition: background 0.15s, color 0.15s, border-color 0.15s;\n flex-shrink: 0;\n}\n\n.detail-back-btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-hover);\n color: var(--mj-text-primary);\n border-color: var(--mj-border-strong);\n}\n\n\n\n.detail-edit-btn[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 36px;\n height: 36px;\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n background: var(--mj-bg-surface);\n color: var(--mj-text-secondary);\n cursor: pointer;\n font-size: 14px;\n transition: background 0.15s, color 0.15s, border-color 0.15s;\n flex-shrink: 0;\n}\n\n.detail-edit-btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-hover);\n color: var(--mj-text-primary);\n border-color: var(--mj-border-strong);\n}\n\n\n\n.map-edit-hint[_ngcontent-%COMP%] {\n color: var(--mj-text-disabled);\n font-size: 11px;\n transition: color 0.15s;\n}\n\n.detail-map-row[_ngcontent-%COMP%]:hover .map-edit-hint[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n}\n\n\n\n.ve-header-title-inline[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n font-size: 16px;\n font-weight: 600;\n}\n\n.ve-source-label[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n}\n\n.ve-direction-icon[_ngcontent-%COMP%] {\n color: var(--mj-text-disabled);\n font-size: 14px;\n}\n\n.ve-dest-label[_ngcontent-%COMP%] {\n color: var(--mj-status-success);\n}\n\n.ve-stat-inline[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--mj-text-muted);\n}\n\n.ve-stat-inline[_ngcontent-%COMP%] strong[_ngcontent-%COMP%] {\n color: var(--mj-text-primary);\n font-weight: 600;\n}\n\n.detail-table-empty[_ngcontent-%COMP%] {\n padding: 24px;\n text-align: center;\n color: var(--mj-text-disabled);\n font-size: 13px;\n}\n\n\n\n\n\n\n.discovered-objects-section[_ngcontent-%COMP%] {\n margin: 12px 0;\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n background: var(--mj-bg-surface);\n overflow: hidden;\n}\n\n.discovered-objects-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 10px 14px;\n background: var(--mj-bg-surface-card);\n border-bottom: 1px solid var(--mj-border-subtle);\n}\n\n.discovered-objects-title[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 13px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.discovered-objects-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n}\n\n.discovered-count[_ngcontent-%COMP%] {\n font-weight: 400;\n color: var(--mj-text-muted);\n font-size: 12px;\n}\n\n.discovered-objects-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n}\n\n.discovered-action-btn[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n background: none;\n border: 1px solid var(--mj-border-default);\n border-radius: 4px;\n padding: 3px 10px;\n font-size: 12px;\n color: var(--mj-text-secondary);\n cursor: pointer;\n transition: background 0.15s, color 0.15s;\n}\n\n.discovered-action-btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-hover);\n color: var(--mj-text-primary);\n}\n\n.discovered-action-btn[_ngcontent-%COMP%]:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.discovered-loading[_ngcontent-%COMP%], \n.discovered-empty[_ngcontent-%COMP%] {\n padding: 16px;\n text-align: center;\n font-size: 13px;\n color: var(--mj-text-muted);\n}\n\n.discovered-loading[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n margin-right: 6px;\n}\n\n.discovered-objects-list[_ngcontent-%COMP%] {\n max-height: 280px;\n overflow-y: auto;\n}\n\n.discovered-object-row[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 7px 14px;\n cursor: pointer;\n transition: background 0.1s;\n border-bottom: 1px solid var(--mj-border-subtle);\n font-size: 13px;\n}\n\n.discovered-object-row[_ngcontent-%COMP%]:last-child {\n border-bottom: none;\n}\n\n.discovered-object-row[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-hover);\n}\n\n.discovered-object-row.selected[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 6%, var(--mj-bg-surface));\n}\n\n.discovered-object-row[_ngcontent-%COMP%] input[type=\"checkbox\"][_ngcontent-%COMP%] {\n flex-shrink: 0;\n width: 16px;\n height: 16px;\n accent-color: var(--mj-brand-primary);\n cursor: pointer;\n}\n\n.discovered-object-name[_ngcontent-%COMP%] {\n flex: 1;\n color: var(--mj-text-primary);\n font-weight: 500;\n}\n\n.discovered-object-api-name[_ngcontent-%COMP%] {\n flex: 1;\n color: var(--mj-text-muted);\n font-size: 12px;\n font-family: monospace;\n}\n\n.discovered-object-badges[_ngcontent-%COMP%] {\n display: flex;\n gap: 4px;\n}\n\n.discovered-badge[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 20px;\n height: 20px;\n border-radius: 4px;\n font-size: 10px;\n}\n\n.discovered-badge.incremental[_ngcontent-%COMP%] {\n color: var(--mj-status-success);\n background: var(--mj-status-success-bg);\n}\n\n.discovered-badge.writable[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n}"] });
3139
+ i0.ɵɵconditional(ctx.ShowCreateEntity ? 15 : -1);
3140
+ } }, dependencies: [i1.NgSelectOption, i1.ɵNgSelectMultipleOption, i1.DefaultValueAccessor, i1.CheckboxControlValueAccessor, i1.SelectControlValueAccessor, i1.NgControlStatus, i1.NgModel, i2.MJButtonDirective, i2.MJPageLayoutComponent, i2.MJPageHeaderComponent, i2.MJPageBodyComponent, i2.MJStatBadgeComponent, i2.MJRefreshButtonComponent, i3.LoadingComponent, i4.CredentialDialogComponent, i5.TreeDropdownComponent, i6.ScheduledJobSummaryComponent, i6.ScheduledJobSlidePanelComponent, i7.VisualFieldEditorComponent], styles: ["\n\n\n\n\n[_nghost-%COMP%] {\n display: flex;\n flex-direction: column;\n height: 100%;\n min-height: 0;\n overflow: hidden;\n}\n\n\n\n\n.connections-container[_ngcontent-%COMP%] {\n padding: 24px;\n max-width: 1400px;\n width: 100%;\n margin: 0 auto;\n flex: 1;\n display: flex;\n flex-direction: column;\n min-height: 0;\n overflow-y: auto;\n box-sizing: border-box;\n}\n\n\n\n\n.connections-container.detail-active[_ngcontent-%COMP%], \n.connections-container.editor-active[_ngcontent-%COMP%] {\n overflow: hidden;\n}\n\n\n\n\n\n\n.loading-container[_ngcontent-%COMP%] {\n display: flex;\n justify-content: center;\n align-items: center;\n min-height: 300px;\n}\n\n.empty-state[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n min-height: 400px;\n text-align: center;\n color: var(--mj-text-muted);\n}\n\n.empty-icon[_ngcontent-%COMP%] {\n font-size: 48px;\n color: var(--mj-text-disabled);\n margin-bottom: 16px;\n}\n\n.empty-state[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n font-size: 20px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n margin: 0 0 8px;\n}\n\n.empty-state[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n font-size: 14px;\n margin: 0 0 24px;\n}\n\n\n\n\n\n\n.card-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));\n gap: 20px;\n}\n\n\n\n\n\n\n.connection-card[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 12px;\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.06);\n transition: box-shadow 0.2s ease, transform 0.2s ease;\n display: flex;\n flex-direction: column;\n position: relative;\n overflow: hidden;\n}\n\n.connection-card[_ngcontent-%COMP%]:hover {\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);\n transform: translateY(-2px);\n}\n\n\n\n.card-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 16px 16px 0;\n}\n\n.icon-circle[_ngcontent-%COMP%] {\n width: 48px;\n height: 48px;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--mj-text-inverse);\n flex-shrink: 0;\n}\n\n.icon-large[_ngcontent-%COMP%] {\n font-size: 22px;\n}\n\n\n\n.status-badge[_ngcontent-%COMP%] {\n font-size: 12px;\n font-weight: 600;\n padding: 4px 10px;\n border-radius: 20px;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.status-badge-connected[_ngcontent-%COMP%] {\n background: var(--mj-status-success-bg);\n color: var(--mj-status-success);\n}\n\n.status-badge-error[_ngcontent-%COMP%] {\n background: var(--mj-status-error-bg);\n color: var(--mj-status-error);\n}\n\n.status-badge-inactive[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-hover);\n color: var(--mj-text-muted);\n}\n\n.status-badge-syncing[_ngcontent-%COMP%] {\n background: var(--mj-status-info-bg);\n color: var(--mj-brand-primary);\n}\n\n\n\n.card-body[_ngcontent-%COMP%] {\n padding: 12px 16px;\n flex: 1;\n}\n\n.card-name[_ngcontent-%COMP%] {\n font-size: 18px;\n font-weight: 700;\n color: var(--mj-text-primary);\n margin-bottom: 2px;\n}\n\n.card-company[_ngcontent-%COMP%] {\n font-size: 14px;\n color: var(--mj-text-disabled);\n margin-bottom: 10px;\n}\n\n.card-meta[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--mj-text-muted);\n margin-bottom: 6px;\n}\n\n.meta-separator[_ngcontent-%COMP%] {\n margin: 0 6px;\n}\n\n.meta-label[_ngcontent-%COMP%] {\n font-weight: 500;\n}\n\n.card-sync-info[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--mj-text-muted);\n margin-bottom: 8px;\n}\n\n.card-sync-info[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n margin-right: 4px;\n color: var(--mj-text-disabled);\n}\n\n\n\n.card-test-result[_ngcontent-%COMP%] {\n font-size: 12px;\n padding: 6px 10px;\n border-radius: 6px;\n display: flex;\n align-items: center;\n gap: 6px;\n margin-top: 8px;\n}\n\n.card-test-result.test-success[_ngcontent-%COMP%] {\n background: var(--mj-status-success-bg);\n color: var(--mj-status-success);\n}\n\n.card-test-result.test-failure[_ngcontent-%COMP%] {\n background: var(--mj-status-error-bg);\n color: var(--mj-status-error);\n}\n\n.card-test-result[_ngcontent-%COMP%] span[_ngcontent-%COMP%] {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n\n\n.card-footer[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 12px 16px;\n border-top: 1px solid var(--mj-border-subtle);\n}\n\n.card-footer[_ngcontent-%COMP%] button[_ngcontent-%COMP%] {\n font-size: 13px;\n}\n\n\n\n.sync-menu-wrapper[_ngcontent-%COMP%] {\n position: relative;\n display: inline-flex;\n}\n\n.sync-caret[_ngcontent-%COMP%] {\n font-size: 10px;\n margin-left: 4px;\n opacity: 0.8;\n}\n\n.sync-dropdown[_ngcontent-%COMP%] {\n position: absolute;\n top: calc(100% + 4px);\n left: 0;\n z-index: 1000;\n background: var(--mj-bg-surface-elevated);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n box-shadow: 0 8px 24px rgba(0,0,0,0.12);\n min-width: 220px;\n overflow: hidden;\n}\n\n.sync-dropdown-left[_ngcontent-%COMP%] {\n left: auto;\n right: 0;\n}\n\n.sync-dropdown-group[_ngcontent-%COMP%] {\n padding: 8px 0;\n border-bottom: 1px solid var(--mj-border-subtle);\n}\n\n.sync-dropdown-group[_ngcontent-%COMP%]:last-child {\n border-bottom: none;\n}\n\n.sync-dropdown-label[_ngcontent-%COMP%] {\n display: block;\n font-size: 10px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.05em;\n color: var(--mj-text-muted);\n padding: 0 12px 4px;\n}\n\n.sync-dropdown-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n width: 100%;\n padding: 7px 12px;\n background: none;\n border: none;\n cursor: pointer;\n font-size: 13px;\n color: var(--mj-text-primary);\n text-align: left;\n transition: background 0.12s;\n}\n\n.sync-dropdown-item[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-hover);\n}\n\n.sync-dropdown-item[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n width: 16px;\n text-align: center;\n color: var(--mj-text-secondary);\n flex-shrink: 0;\n}\n\n\n\n.card-delete-btn[_ngcontent-%COMP%] {\n margin-left: auto;\n background: none;\n border: 1px solid transparent;\n cursor: pointer;\n padding: 4px 8px;\n border-radius: 6px;\n color: var(--mj-text-disabled);\n font-size: 14px;\n transition: all 0.15s;\n}\n\n.card-delete-btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-status-error-bg);\n border-color: var(--mj-status-error-border);\n color: var(--mj-status-error);\n}\n\n.menu-trigger[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-hover);\n color: var(--mj-text-secondary);\n}\n\n.card-menu-dropdown[_ngcontent-%COMP%] {\n position: absolute;\n right: 0;\n top: 100%;\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.12);\n min-width: 160px;\n z-index: 50;\n padding: 4px;\n}\n\n.menu-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n width: 100%;\n padding: 8px 12px;\n border: none;\n background: none;\n cursor: pointer;\n font-size: 13px;\n color: var(--mj-text-secondary);\n border-radius: 6px;\n transition: background 0.15s;\n text-align: left;\n}\n\n.menu-item[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-hover);\n}\n\n.menu-item[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n width: 16px;\n text-align: center;\n color: var(--mj-text-muted);\n}\n\n.menu-item-danger[_ngcontent-%COMP%] {\n color: var(--mj-status-error);\n}\n\n.menu-item-danger[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-status-error);\n}\n\n.menu-item-danger[_ngcontent-%COMP%]:hover {\n background: var(--mj-status-error-bg);\n}\n\n\n\n\n\n\n.new-connection-card[_ngcontent-%COMP%] {\n border: 2px dashed var(--mj-border-strong);\n background: var(--mj-bg-page);\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n min-height: 200px;\n transition: background 0.2s, border-color 0.2s;\n}\n\n.new-connection-card[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-hover);\n border-color: var(--mj-brand-primary);\n box-shadow: none;\n transform: none;\n}\n\n.new-card-content[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 12px;\n}\n\n.new-card-icon[_ngcontent-%COMP%] {\n width: 56px;\n height: 56px;\n border-radius: 50%;\n background: var(--mj-bg-surface-active);\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 24px;\n color: var(--mj-text-muted);\n transition: background 0.2s, color 0.2s;\n}\n\n.new-connection-card[_ngcontent-%COMP%]:hover .new-card-icon[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n}\n\n.new-card-label[_ngcontent-%COMP%] {\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-muted);\n}\n\n.new-connection-card[_ngcontent-%COMP%]:hover .new-card-label[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n}\n\n\n\n\n\n\n.wizard-inline[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n height: 100%;\n max-width: 720px;\n margin: 0 auto;\n}\n\n\n\n.wizard-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 16px;\n padding: 0 0 20px;\n}\n\n.wizard-back-btn[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n background: none;\n border: none;\n cursor: pointer;\n font-size: 13px;\n font-weight: 500;\n color: var(--mj-text-muted);\n padding: 6px 10px;\n border-radius: 6px;\n transition: background 0.15s, color 0.15s;\n}\n\n.wizard-back-btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-hover);\n color: var(--mj-text-primary);\n}\n\n.wizard-title[_ngcontent-%COMP%] {\n font-size: 20px;\n font-weight: 700;\n color: var(--mj-text-primary);\n margin: 0;\n}\n\n\n\n\n\n\n.step-indicator[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 20px 32px;\n gap: 0;\n}\n\n.step-item[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 6px;\n position: relative;\n}\n\n.step-circle[_ngcontent-%COMP%] {\n width: 32px;\n height: 32px;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 13px;\n font-weight: 600;\n background: var(--mj-bg-surface-active);\n color: var(--mj-text-disabled);\n border: 2px solid var(--mj-border-default);\n transition: all 0.2s;\n}\n\n.step-active[_ngcontent-%COMP%] .step-circle[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n border-color: var(--mj-brand-primary);\n}\n\n.step-completed[_ngcontent-%COMP%] .step-circle[_ngcontent-%COMP%] {\n background: var(--mj-status-success);\n color: var(--mj-text-inverse);\n border-color: var(--mj-status-success);\n}\n\n.step-label[_ngcontent-%COMP%] {\n font-size: 11px;\n font-weight: 500;\n color: var(--mj-text-disabled);\n white-space: nowrap;\n}\n\n.step-active[_ngcontent-%COMP%] .step-label[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n font-weight: 600;\n}\n\n.step-completed[_ngcontent-%COMP%] .step-label[_ngcontent-%COMP%] {\n color: var(--mj-status-success);\n}\n\n.step-line[_ngcontent-%COMP%] {\n width: 48px;\n height: 2px;\n background: var(--mj-border-default);\n margin: 0 8px;\n margin-bottom: 20px;\n transition: background 0.2s;\n}\n\n.step-line-active[_ngcontent-%COMP%] {\n background: var(--mj-status-success);\n}\n\n\n\n\n\n\n.wizard-body[_ngcontent-%COMP%] {\n flex: 1;\n overflow-y: auto;\n padding: 0 24px 24px;\n}\n\n.step-content[_ngcontent-%COMP%] {\n min-height: 300px;\n}\n\n.step-content-centered[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n text-align: center;\n}\n\n.step-title[_ngcontent-%COMP%] {\n font-size: 18px;\n font-weight: 600;\n color: var(--mj-text-primary);\n margin: 0 0 20px;\n}\n\n.step-content-centered[_ngcontent-%COMP%] .step-title[_ngcontent-%COMP%] {\n margin-bottom: 32px;\n}\n\n\n\n.search-bar[_ngcontent-%COMP%] {\n position: relative;\n margin-bottom: 20px;\n}\n\n.search-icon[_ngcontent-%COMP%] {\n position: absolute;\n left: 14px;\n top: 50%;\n transform: translateY(-50%);\n color: var(--mj-text-disabled);\n font-size: 14px;\n}\n\n.search-input[_ngcontent-%COMP%] {\n width: 100%;\n padding: 10px 14px 10px 40px;\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n font-size: 14px;\n color: var(--mj-text-primary);\n background: var(--mj-bg-surface);\n transition: border-color 0.2s, box-shadow 0.2s;\n box-sizing: border-box;\n}\n\n.search-input[_ngcontent-%COMP%]:focus {\n outline: none;\n border-color: var(--mj-brand-primary);\n box-shadow: 0 0 0 3px rgba(37, 99, 235, 0.1);\n}\n\n.search-input[_ngcontent-%COMP%]::placeholder {\n color: var(--mj-text-disabled);\n}\n\n\n\n.no-integrations[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 48px 24px;\n color: var(--mj-text-disabled);\n text-align: center;\n}\n\n.no-integrations[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 36px;\n margin-bottom: 12px;\n}\n\n.no-integrations[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n font-size: 16px;\n font-weight: 500;\n color: var(--mj-text-muted);\n margin: 0 0 4px;\n}\n\n.no-integrations-hint[_ngcontent-%COMP%] {\n font-size: 13px;\n}\n\n\n\n.integration-picker-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(3, 1fr);\n gap: 12px;\n}\n\n.integration-picker-card[_ngcontent-%COMP%] {\n border: 2px solid var(--mj-border-default);\n border-radius: 10px;\n padding: 16px;\n cursor: pointer;\n text-align: center;\n transition: border-color 0.2s, background 0.15s;\n}\n\n.integration-picker-card[_ngcontent-%COMP%]:hover {\n border-color: var(--mj-brand-primary);\n background: var(--mj-bg-page);\n}\n\n.integration-picker-card.picker-selected[_ngcontent-%COMP%] {\n border-color: var(--mj-brand-primary);\n background: var(--mj-status-info-bg);\n}\n\n.picker-icon-circle[_ngcontent-%COMP%] {\n width: 40px;\n height: 40px;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--mj-text-inverse);\n margin: 0 auto 10px;\n font-size: 18px;\n}\n\n.picker-name[_ngcontent-%COMP%] {\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-primary);\n margin-bottom: 4px;\n}\n\n.picker-description[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-disabled);\n line-height: 1.3;\n overflow: hidden;\n text-overflow: ellipsis;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n}\n\n\n\n\n\n\n.form-group[_ngcontent-%COMP%] {\n margin-bottom: 20px;\n}\n\n.form-label[_ngcontent-%COMP%] {\n display: block;\n font-size: 13px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n margin-bottom: 6px;\n}\n\n.optional-label[_ngcontent-%COMP%] {\n font-weight: 400;\n color: var(--mj-text-disabled);\n}\n\n.form-input[_ngcontent-%COMP%] {\n width: 100%;\n padding: 10px 14px;\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n font-size: 14px;\n color: var(--mj-text-primary);\n background: var(--mj-bg-surface);\n transition: border-color 0.2s, box-shadow 0.2s;\n box-sizing: border-box;\n}\n\n.form-input[_ngcontent-%COMP%]:focus {\n outline: none;\n border-color: var(--mj-brand-primary);\n box-shadow: 0 0 0 3px rgba(37, 99, 235, 0.1);\n}\n\n.form-input[_ngcontent-%COMP%]::placeholder {\n color: var(--mj-text-disabled);\n}\n\n.form-input[_ngcontent-%COMP%]:disabled {\n background: var(--mj-bg-page);\n color: var(--mj-text-muted);\n}\n\n.form-textarea[_ngcontent-%COMP%] {\n resize: vertical;\n min-height: 72px;\n}\n\n.form-hint[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--mj-text-disabled);\n padding: 8px 0;\n}\n\n\n\n.credential-selected[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 10px 14px;\n background: var(--mj-status-success-bg);\n border: 1px solid var(--mj-status-success-border);\n border-radius: 8px;\n}\n\n.credential-info[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n color: var(--mj-status-success-text);\n font-size: 14px;\n font-weight: 500;\n}\n\n.credential-info[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-status-success);\n}\n\n.credential-clear[_ngcontent-%COMP%] {\n background: none;\n border: none;\n cursor: pointer;\n color: var(--mj-text-disabled);\n font-size: 14px;\n padding: 4px;\n border-radius: 4px;\n transition: color 0.15s;\n}\n\n.credential-clear[_ngcontent-%COMP%]:hover {\n color: var(--mj-status-error);\n}\n\n.credential-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n}\n\n.credential-actions[_ngcontent-%COMP%] button[_ngcontent-%COMP%] {\n font-size: 13px;\n}\n\n.credential-loading[_ngcontent-%COMP%] {\n padding: 16px 0;\n}\n\n.credential-list[_ngcontent-%COMP%] {\n margin-top: 12px;\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n overflow: hidden;\n}\n\n.credential-list-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 10px 14px;\n cursor: pointer;\n font-size: 14px;\n color: var(--mj-text-secondary);\n border-bottom: 1px solid var(--mj-border-subtle);\n transition: background 0.15s;\n}\n\n.credential-list-item[_ngcontent-%COMP%]:last-child {\n border-bottom: none;\n}\n\n.credential-list-item[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-page);\n}\n\n.credential-list-item[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-text-disabled);\n}\n\n\n\n\n\n\n.test-prompt[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 16px;\n}\n\n.test-hint[_ngcontent-%COMP%] {\n font-size: 14px;\n color: var(--mj-text-disabled);\n margin: 0;\n}\n\n.test-running[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 16px;\n color: var(--mj-brand-primary);\n}\n\n.test-spinner[_ngcontent-%COMP%] {\n width: 64px;\n height: 64px;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.test-running[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n font-size: 15px;\n font-weight: 500;\n margin: 0;\n}\n\n\n\n.test-result[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 12px;\n padding: 24px;\n border-radius: 12px;\n max-width: 400px;\n}\n\n.test-result-success[_ngcontent-%COMP%] {\n background: var(--mj-status-success-bg);\n}\n\n.test-result-failure[_ngcontent-%COMP%] {\n background: var(--mj-status-error-bg);\n}\n\n.test-result-icon[_ngcontent-%COMP%] {\n font-size: 48px;\n animation: _ngcontent-%COMP%_scaleIn 0.3s ease-out;\n}\n\n.test-result-success[_ngcontent-%COMP%] .test-result-icon[_ngcontent-%COMP%] {\n color: var(--mj-status-success);\n}\n\n.test-result-failure[_ngcontent-%COMP%] .test-result-icon[_ngcontent-%COMP%] {\n color: var(--mj-status-error);\n}\n\n@keyframes _ngcontent-%COMP%_scaleIn {\n from {\n transform: scale(0.5);\n opacity: 0;\n }\n to {\n transform: scale(1);\n opacity: 1;\n }\n}\n\n.test-result-message[_ngcontent-%COMP%] {\n font-size: 15px;\n font-weight: 500;\n color: var(--mj-text-secondary);\n text-align: center;\n}\n\n.test-result-detail[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--mj-text-muted);\n}\n\n.test-retry-btn[_ngcontent-%COMP%] {\n margin-top: 4px;\n}\n\n\n\n.toggle-switch[_ngcontent-%COMP%] {\n position: relative;\n display: inline-block;\n width: 44px;\n height: 24px;\n flex-shrink: 0;\n}\n\n.toggle-switch[_ngcontent-%COMP%] input[_ngcontent-%COMP%] {\n opacity: 0;\n width: 0;\n height: 0;\n}\n\n.toggle-slider[_ngcontent-%COMP%] {\n position: absolute;\n cursor: pointer;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: var(--mj-border-strong);\n border-radius: 24px;\n transition: background 0.2s;\n}\n\n.toggle-slider[_ngcontent-%COMP%]::before {\n content: '';\n position: absolute;\n height: 18px;\n width: 18px;\n left: 3px;\n bottom: 3px;\n background: var(--mj-bg-surface);\n border-radius: 50%;\n transition: transform 0.2s;\n}\n\n.toggle-switch[_ngcontent-%COMP%] input[_ngcontent-%COMP%]:checked + .toggle-slider[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary);\n}\n\n.toggle-switch[_ngcontent-%COMP%] input[_ngcontent-%COMP%]:checked + .toggle-slider[_ngcontent-%COMP%]::before {\n transform: translateX(20px);\n}\n\n\n\n\n\n\n.wizard-footer[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 16px 24px;\n border-top: 1px solid var(--mj-border-subtle);\n}\n\n.footer-left[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n}\n\n.footer-right[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n\n\n\n\n\n@media (max-width: 768px) {\n .connections-container[_ngcontent-%COMP%] {\n padding: 16px;\n }\n\n .card-grid[_ngcontent-%COMP%] {\n grid-template-columns: 1fr;\n }\n\n .integration-picker-grid[_ngcontent-%COMP%] {\n grid-template-columns: repeat(2, 1fr);\n }\n\n .step-indicator[_ngcontent-%COMP%] {\n padding: 16px;\n overflow-x: auto;\n }\n\n .step-line[_ngcontent-%COMP%] {\n width: 24px;\n }\n\n .credential-actions[_ngcontent-%COMP%] {\n flex-direction: column;\n }\n}\n\n@media (max-width: 480px) {\n .integration-picker-grid[_ngcontent-%COMP%] {\n grid-template-columns: 1fr;\n }\n\n .card-footer[_ngcontent-%COMP%] {\n flex-wrap: wrap;\n }\n}\n\n\n\n\n\n\n.delete-confirm-overlay[_ngcontent-%COMP%] {\n position: absolute;\n inset: 0;\n background: rgba(255, 255, 255, 0.95);\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 5;\n border-radius: 12px;\n animation: _ngcontent-%COMP%_fadeIn 150ms ease;\n}\n\n@keyframes _ngcontent-%COMP%_fadeIn {\n from { opacity: 0; }\n to { opacity: 1; }\n}\n\n.delete-confirm-content[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 10px;\n padding: 20px;\n text-align: center;\n}\n\n.delete-warn-icon[_ngcontent-%COMP%] {\n font-size: 28px;\n color: var(--mj-status-error);\n}\n\n.delete-confirm-text[_ngcontent-%COMP%] {\n font-size: 13px;\n font-weight: 500;\n color: var(--mj-text-secondary);\n max-width: 220px;\n}\n\n.delete-confirm-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n margin-top: 4px;\n}\n\n\n\n\n\n\n.edit-panel-backdrop[_ngcontent-%COMP%] {\n position: fixed;\n inset: 0;\n background: rgba(0, 0, 0, 0.1);\n z-index: 99;\n opacity: 0;\n pointer-events: none;\n transition: opacity 300ms ease;\n}\n\n.edit-panel-backdrop.open[_ngcontent-%COMP%] {\n opacity: 1;\n pointer-events: auto;\n}\n\n.edit-panel[_ngcontent-%COMP%] {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n width: 400px;\n max-width: 100%;\n background: var(--mj-bg-surface);\n border-left: 1px solid var(--mj-border-default);\n box-shadow: -8px 0 24px rgba(0, 0, 0, 0.08);\n z-index: 100;\n transform: translateX(100%);\n transition: transform 300ms cubic-bezier(0.4, 0, 0.2, 1);\n display: flex;\n flex-direction: column;\n overflow: hidden;\n}\n\n.edit-panel.open[_ngcontent-%COMP%] {\n transform: translateX(0);\n}\n\n.edit-panel-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 16px 20px;\n border-bottom: 1px solid var(--mj-border-default);\n flex-shrink: 0;\n}\n\n.edit-panel-title[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n font-size: 15px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.edit-icon-circle[_ngcontent-%COMP%] {\n width: 32px;\n height: 32px;\n border-radius: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--mj-text-inverse);\n font-size: 14px;\n}\n\n.edit-close-btn[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 28px;\n height: 28px;\n border: none;\n border-radius: 6px;\n background: transparent;\n color: var(--mj-text-disabled);\n cursor: pointer;\n font-size: 14px;\n transition: all 150ms ease;\n}\n\n.edit-close-btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-hover);\n color: var(--mj-text-secondary);\n}\n\n.edit-panel-loading[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 48px 20px;\n}\n\n.edit-panel-body[_ngcontent-%COMP%] {\n flex: 1;\n overflow-y: auto;\n padding: 20px;\n display: flex;\n flex-direction: column;\n gap: 20px;\n}\n\n.edit-form-group[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 6px;\n}\n\n.edit-form-label[_ngcontent-%COMP%] {\n font-size: 12px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n text-transform: uppercase;\n letter-spacing: 0.3px;\n}\n\n.edit-form-input[_ngcontent-%COMP%] {\n height: 36px;\n padding: 0 12px;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n font-size: 14px;\n color: var(--mj-text-primary);\n background: var(--mj-bg-surface);\n outline: none;\n transition: border-color 150ms ease;\n}\n\n.edit-form-input[_ngcontent-%COMP%]:focus {\n border-color: var(--mj-brand-primary);\n}\n\n.edit-readonly-field[_ngcontent-%COMP%] {\n padding: 8px 12px;\n background: var(--mj-bg-page);\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n font-size: 13px;\n color: var(--mj-text-muted);\n}\n\n.edit-toggle-row[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n}\n\n.edit-toggle-label[_ngcontent-%COMP%] {\n font-size: 13px;\n font-weight: 500;\n color: var(--mj-text-disabled);\n}\n\n.edit-toggle-label.active[_ngcontent-%COMP%] {\n color: var(--mj-status-success);\n}\n\n.edit-credential-selected[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 10px 12px;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n background: var(--mj-bg-page);\n}\n\n.edit-credential-info[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 13px;\n color: var(--mj-text-secondary);\n}\n\n.edit-credential-info[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n}\n\n.edit-credential-clear[_ngcontent-%COMP%] {\n width: 24px;\n height: 24px;\n border: none;\n border-radius: 4px;\n background: transparent;\n color: var(--mj-text-disabled);\n cursor: pointer;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n font-size: 12px;\n transition: all 150ms ease;\n}\n\n.edit-credential-clear[_ngcontent-%COMP%]:hover {\n background: var(--mj-status-error-bg);\n color: var(--mj-status-error);\n}\n\n.edit-credential-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n}\n\n.edit-credential-list[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 2px;\n margin-top: 6px;\n max-height: 180px;\n overflow-y: auto;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n}\n\n.edit-credential-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 12px;\n font-size: 13px;\n color: var(--mj-text-secondary);\n cursor: pointer;\n transition: background 150ms ease;\n}\n\n.edit-credential-item[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-hover);\n}\n\n.edit-credential-item[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-text-disabled);\n font-size: 12px;\n}\n\n.edit-panel-footer[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n padding: 16px 20px;\n border-top: 1px solid var(--mj-border-default);\n flex-shrink: 0;\n}\n\n\n\n\n\n\n.card-clickable[_ngcontent-%COMP%] {\n cursor: pointer;\n}\n\n\n\n\n\n\n.detail-view[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n flex: 1;\n min-height: 0;\n overflow: hidden;\n}\n\n.detail-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 16px;\n padding-bottom: 20px;\n border-bottom: 1px solid var(--mj-border-subtle);\n margin-bottom: 16px;\n flex-wrap: wrap;\n}\n\n.detail-header-info[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n flex: 1;\n min-width: 0;\n}\n\n.detail-header-text[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 2px;\n min-width: 0;\n}\n\n.detail-title[_ngcontent-%COMP%] {\n font-size: 20px;\n font-weight: 700;\n color: var(--mj-text-primary);\n margin: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.detail-subtitle[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--mj-text-muted);\n display: flex;\n align-items: center;\n gap: 4px;\n flex-wrap: wrap;\n}\n\n.detail-header-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n flex-shrink: 0;\n}\n\n\n\n.schedule-section[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 12px;\n padding: 16px 20px;\n margin-bottom: 16px;\n}\n\n.schedule-section-header[_ngcontent-%COMP%] {\n margin-bottom: 12px;\n}\n\n.schedule-section-title[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 0.8rem;\n font-weight: 700;\n color: var(--mj-text-secondary);\n text-transform: uppercase;\n letter-spacing: 0.04em;\n}\n\n.schedule-section-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n}\n\n.schedule-empty[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 8px 0;\n}\n\n.schedule-empty-text[_ngcontent-%COMP%] {\n font-size: 0.85rem;\n color: var(--mj-text-disabled);\n}\n\n.schedule-create-btn[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 8px 16px;\n background: linear-gradient(135deg, var(--mj-brand-primary) 0%, var(--mj-brand-primary-active) 100%);\n color: white;\n border: none;\n border-radius: 8px;\n cursor: pointer;\n font-size: 0.8rem;\n font-weight: 600;\n transition: all 0.2s ease;\n}\n\n.schedule-create-btn[_ngcontent-%COMP%]:hover {\n transform: translateY(-1px);\n box-shadow: 0 4px 12px color-mix(in srgb, var(--mj-brand-primary) 40%, transparent);\n}\n\n\n\n.detail-toolbar[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin-bottom: 12px;\n}\n\n.detail-toolbar-left[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.detail-map-count[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--mj-text-muted);\n font-weight: 500;\n}\n\n.detail-search[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 6px 12px;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n background: var(--mj-bg-surface);\n}\n\n.detail-search[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-text-disabled);\n font-size: 12px;\n}\n\n.detail-search[_ngcontent-%COMP%] input[_ngcontent-%COMP%] {\n border: none;\n outline: none;\n background: transparent;\n font-size: 13px;\n color: var(--mj-text-primary);\n width: 200px;\n}\n\n.detail-search[_ngcontent-%COMP%] input[_ngcontent-%COMP%]::placeholder {\n color: var(--mj-text-disabled);\n}\n\n\n\n.add-map-btn[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 6px 14px;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n background: var(--mj-bg-surface-card);\n color: var(--mj-brand-primary-hover);\n font-size: 13px;\n font-weight: 500;\n cursor: pointer;\n transition: all 150ms ease;\n white-space: nowrap;\n}\n\n.add-map-btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-hover);\n border-color: var(--mj-border-strong);\n}\n\n.add-map-btn.active[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary);\n color: var(--mj-bg-surface);\n border-color: var(--mj-brand-primary);\n}\n\n.apply-all-btn[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n border-color: var(--mj-brand-primary);\n}\n\n.apply-all-btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-brand-primary-hover);\n border-color: var(--mj-brand-primary-hover);\n}\n\n.apply-all-btn[_ngcontent-%COMP%]:disabled {\n opacity: 0.6;\n cursor: not-allowed;\n}\n\n.add-map-btn-lg[_ngcontent-%COMP%] {\n margin-top: 16px;\n padding: 10px 20px;\n font-size: 14px;\n}\n\n\n\n.add-map-panel[_ngcontent-%COMP%] {\n padding: 16px;\n margin-bottom: 12px;\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n animation: _ngcontent-%COMP%_fadeIn 200ms ease;\n}\n\n.add-map-row[_ngcontent-%COMP%] {\n display: flex;\n align-items: flex-end;\n gap: 12px;\n}\n\n.add-map-field[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n}\n\n.add-map-label[_ngcontent-%COMP%] {\n display: block;\n font-size: 11px;\n font-weight: 600;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.3px;\n margin-bottom: 6px;\n}\n\n.add-map-select[_ngcontent-%COMP%] {\n width: 100%;\n height: 34px;\n padding: 0 10px;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n font-size: 13px;\n color: var(--mj-text-primary);\n background: var(--mj-bg-surface);\n outline: none;\n cursor: pointer;\n}\n\n.add-map-select[_ngcontent-%COMP%]:focus {\n border-color: var(--mj-brand-primary);\n}\n\n.add-map-direction-col[_ngcontent-%COMP%] {\n flex-shrink: 0;\n}\n\n.add-map-direction-btns[_ngcontent-%COMP%] {\n display: flex;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n overflow: hidden;\n}\n\n.add-map-direction-btns[_ngcontent-%COMP%] button[_ngcontent-%COMP%] {\n padding: 7px 12px;\n border: none;\n background: var(--mj-bg-surface);\n color: var(--mj-text-muted);\n font-size: 13px;\n cursor: pointer;\n transition: all 150ms ease;\n border-right: 1px solid var(--mj-border-default);\n}\n\n.add-map-direction-btns[_ngcontent-%COMP%] button[_ngcontent-%COMP%]:last-child {\n border-right: none;\n}\n\n.add-map-direction-btns[_ngcontent-%COMP%] button[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-hover);\n}\n\n.add-map-direction-btns[_ngcontent-%COMP%] button.active[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary);\n color: var(--mj-bg-surface);\n}\n\n.add-map-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 6px;\n flex-shrink: 0;\n}\n\n.add-map-save-btn[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 7px 16px;\n border: none;\n border-radius: 6px;\n background: var(--mj-brand-primary);\n color: var(--mj-bg-surface);\n font-size: 13px;\n font-weight: 500;\n cursor: pointer;\n transition: all 150ms ease;\n white-space: nowrap;\n}\n\n.add-map-save-btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-brand-primary-hover);\n}\n\n.add-map-save-btn[_ngcontent-%COMP%]:disabled {\n opacity: 0.5;\n cursor: default;\n}\n\n.add-map-cancel-btn[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 34px;\n height: 34px;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n background: var(--mj-bg-surface);\n color: var(--mj-text-muted);\n cursor: pointer;\n font-size: 13px;\n transition: all 150ms ease;\n}\n\n.add-map-cancel-btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-hover);\n color: var(--mj-text-primary);\n}\n\n.add-map-loading[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-disabled);\n padding: 8px 0;\n}\n\n.add-map-loading[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n margin-right: 4px;\n}\n\n.add-map-hint[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-disabled);\n padding: 8px 0;\n font-style: italic;\n}\n\n\n\n.add-map-entity-field[_ngcontent-%COMP%] {\n flex: 2;\n min-width: 280px;\n}\n\n\n\n.entity-picker-row[_ngcontent-%COMP%] {\n display: flex;\n align-items: flex-start;\n gap: 8px;\n}\n\n.entity-picker-row[_ngcontent-%COMP%] mj-tree-dropdown[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n}\n\n.new-entity-btn[_ngcontent-%COMP%] {\n flex-shrink: 0;\n display: inline-flex;\n align-items: center;\n gap: 4px;\n padding: 7px 12px;\n font-size: 12px;\n font-weight: 600;\n color: var(--mj-brand-primary);\n background: var(--mj-brand-primary-subtle);\n border: 1px solid color-mix(in srgb, var(--mj-brand-primary) 20%, transparent);\n border-radius: 6px;\n cursor: pointer;\n white-space: nowrap;\n transition: all 0.15s ease;\n}\n\n.new-entity-btn[_ngcontent-%COMP%]:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 15%, var(--mj-bg-surface));\n border-color: color-mix(in srgb, var(--mj-brand-primary) 30%, transparent);\n}\n\n\n\n\n\n\n.sync-result-banner[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 10px 14px;\n border-radius: 6px;\n font-size: 13px;\n font-weight: 500;\n margin-bottom: 12px;\n animation: _ngcontent-%COMP%_fadeIn 200ms ease;\n}\n\n.sync-result-banner.sync-success[_ngcontent-%COMP%] {\n background: var(--mj-status-success-bg);\n border: 1px solid var(--mj-status-success-border);\n color: var(--mj-status-success-text);\n}\n\n.sync-result-banner.sync-failure[_ngcontent-%COMP%] {\n background: var(--mj-status-error-bg);\n border: 1px solid var(--mj-status-error-border);\n color: var(--mj-status-error-text);\n}\n\n\n\n\n\n\n.auto-map-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n margin-bottom: 12px;\n font-size: 13px;\n color: var(--mj-text-secondary);\n}\n\n.auto-map-header[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n}\n\n.auto-map-result[_ngcontent-%COMP%] {\n margin-top: 12px;\n padding: 10px 14px;\n border-radius: 6px;\n font-size: 13px;\n}\n\n.auto-map-result.auto-map-success[_ngcontent-%COMP%] {\n background: var(--mj-status-success-bg);\n border: 1px solid var(--mj-status-success-border);\n color: var(--mj-status-success-text);\n}\n\n.auto-map-result.auto-map-partial[_ngcontent-%COMP%] {\n background: var(--mj-status-warning-bg);\n border: 1px solid var(--mj-status-warning-border);\n color: var(--mj-status-warning-text);\n}\n\n.auto-map-result.auto-map-failure[_ngcontent-%COMP%] {\n background: var(--mj-status-error-bg);\n border: 1px solid var(--mj-status-error-border);\n color: var(--mj-status-error-text);\n}\n\n.auto-map-result-summary[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n font-weight: 500;\n}\n\n.auto-map-errors[_ngcontent-%COMP%] {\n margin-top: 6px;\n font-size: 12px;\n}\n\n.auto-map-error[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 2px 0;\n}\n\n\n\n\n\n\n.new-entity-backdrop[_ngcontent-%COMP%] {\n position: fixed;\n inset: 0;\n background: rgba(0, 0, 0, 0.4);\n z-index: 1000;\n animation: _ngcontent-%COMP%_fadeIn 0.15s ease;\n}\n\n.new-entity-dialog[_ngcontent-%COMP%] {\n position: fixed;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n width: 640px;\n max-width: 90vw;\n max-height: 85vh;\n background: var(--mj-bg-surface);\n border-radius: var(--mj-radius-lg);\n box-shadow: 0 20px 60px rgba(0, 0, 0, 0.2);\n z-index: 1001;\n display: flex;\n flex-direction: column;\n animation: _ngcontent-%COMP%_fadeIn 0.2s ease;\n}\n\n.new-entity-dialog-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 16px 20px;\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.new-entity-dialog-header[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n margin: 0;\n font-size: var(--mj-text-base);\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.new-entity-dialog-close[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n height: 32px;\n padding: 0;\n font-size: var(--mj-text-sm);\n color: var(--mj-text-secondary);\n background: transparent;\n border: none;\n border-radius: 6px;\n cursor: pointer;\n transition: all 0.15s ease;\n}\n\n.new-entity-dialog-close[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-card);\n color: var(--mj-text-primary);\n}\n\n.new-entity-dialog-body[_ngcontent-%COMP%] {\n flex: 1;\n overflow-y: auto;\n padding: 20px;\n display: flex;\n flex-direction: column;\n gap: 16px;\n}\n\n.new-entity-dialog-desc[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 13px;\n color: var(--mj-text-secondary);\n line-height: 1.5;\n}\n\n.new-entity-dialog-form[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 12px;\n}\n\n.new-entity-dialog-row[_ngcontent-%COMP%] {\n display: flex;\n align-items: flex-end;\n gap: 8px;\n}\n\n.new-entity-dialog-field[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 4px;\n min-width: 120px;\n}\n\n.new-entity-dialog-field-wide[_ngcontent-%COMP%] {\n flex: 1;\n}\n\n.new-entity-dialog-label[_ngcontent-%COMP%] {\n font-size: var(--mj-text-xs);\n font-weight: 600;\n color: var(--mj-text-secondary);\n}\n\n.new-entity-dialog-input[_ngcontent-%COMP%] {\n padding: 8px 12px;\n font-size: var(--mj-text-sm);\n border: 1px solid var(--mj-border-strong);\n border-radius: var(--mj-radius-md);\n background: var(--mj-bg-surface);\n color: var(--mj-text-primary);\n transition: border-color 0.15s ease;\n}\n\n.new-entity-dialog-input[_ngcontent-%COMP%]:focus {\n outline: none;\n border-color: var(--mj-brand-primary);\n box-shadow: 0 0 0 2px rgba(99, 102, 241, 0.1);\n}\n\n.new-entity-dialog-dot[_ngcontent-%COMP%] {\n font-size: 20px;\n font-weight: 700;\n color: var(--mj-text-secondary);\n padding-bottom: 6px;\n user-select: none;\n}\n\n.new-entity-dialog-value[_ngcontent-%COMP%] {\n font-size: 14px;\n font-weight: 500;\n color: var(--mj-text-primary);\n padding: 8px 0 4px;\n}\n\n.new-entity-dialog-hint[_ngcontent-%COMP%] {\n font-style: italic;\n color: var(--mj-text-disabled);\n font-weight: 400;\n}\n\n.new-entity-dialog-footer[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: flex-end;\n gap: 8px;\n padding: 12px 20px;\n border-top: 1px solid var(--mj-border-default);\n}\n\n.new-entity-preview-btn[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 5px;\n padding: 8px 16px;\n font-size: 13px;\n font-weight: 600;\n color: var(--mj-text-inverse);\n background: var(--mj-brand-primary);\n border: none;\n border-radius: 6px;\n cursor: pointer;\n white-space: nowrap;\n transition: background 0.15s ease;\n}\n\n.new-entity-preview-btn[_ngcontent-%COMP%]:hover:not(:disabled) {\n background: var(--mj-brand-primary-hover);\n}\n\n.new-entity-preview-btn[_ngcontent-%COMP%]:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.new-entity-dialog-done-btn[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n padding: 8px 16px;\n font-size: 13px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n background: transparent;\n border: 1px solid var(--mj-border-strong);\n border-radius: var(--mj-radius-md);\n cursor: pointer;\n transition: all 0.15s ease;\n}\n\n.new-entity-dialog-done-btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-card);\n border-color: var(--mj-text-disabled);\n}\n\n\n\n.new-entity-next-steps[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary-subtle);\n border: 1px solid color-mix(in srgb, var(--mj-brand-primary) 20%, transparent);\n border-radius: var(--mj-radius-md);\n padding: 14px 16px;\n}\n\n.new-entity-next-steps[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n margin: 0 0 8px;\n font-size: 13px;\n font-weight: 600;\n color: var(--mj-brand-primary-hover);\n}\n\n.new-entity-next-steps[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n margin-right: 6px;\n}\n\n.new-entity-next-steps[_ngcontent-%COMP%] ol[_ngcontent-%COMP%] {\n margin: 0;\n padding-left: 20px;\n font-size: 13px;\n color: var(--mj-brand-primary-hover);\n line-height: 1.7;\n}\n\n\n\n.ddl-copy-btn[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n padding: 3px 8px;\n font-size: 11px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n background: transparent;\n border: 1px solid var(--mj-border-strong);\n border-radius: var(--mj-radius-sm);\n cursor: pointer;\n transition: all 0.15s ease;\n}\n\n.ddl-copy-btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-card);\n border-color: var(--mj-text-disabled);\n}\n\n\n\n.ddl-warnings[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.ddl-warning[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-status-warning);\n background: var(--mj-status-warning-subtle);\n padding: 6px 10px;\n border-radius: var(--mj-radius-sm);\n border-left: 3px solid var(--mj-status-warning);\n}\n\n.ddl-warning[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n margin-right: 4px;\n}\n\n.ddl-preview-block[_ngcontent-%COMP%] {\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md);\n overflow: hidden;\n max-height: 300px;\n display: flex;\n flex-direction: column;\n}\n\n.ddl-preview-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 8px 12px;\n background: var(--mj-bg-surface-card);\n border-bottom: 1px solid var(--mj-border-default);\n font-size: var(--mj-text-xs);\n font-weight: 600;\n color: var(--mj-text-secondary);\n}\n\n.ddl-preview-code[_ngcontent-%COMP%] {\n margin: 0;\n padding: 12px 16px;\n font-size: 12px;\n font-family: 'SF Mono', 'Fira Code', 'Cascadia Code', monospace;\n line-height: 1.6;\n color: var(--mj-text-primary);\n background: var(--mj-bg-surface);\n overflow: auto;\n white-space: pre-wrap;\n word-break: break-word;\n flex: 1;\n}\n\n@keyframes _ngcontent-%COMP%_fadeIn {\n from { opacity: 0; }\n to { opacity: 1; }\n}\n\n\n\n.detail-empty[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 64px 24px;\n text-align: center;\n color: var(--mj-text-disabled);\n}\n\n.detail-empty[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 36px;\n margin-bottom: 12px;\n color: var(--mj-text-disabled);\n}\n\n.detail-empty[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n font-size: 18px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n margin: 0 0 6px;\n}\n\n.detail-empty[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n font-size: 13px;\n margin: 0;\n max-width: 400px;\n}\n\n\n\n.detail-table-head[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n padding: 8px 16px;\n background: var(--mj-bg-page);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px 8px 0 0;\n font-size: 11px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.04em;\n color: var(--mj-text-secondary);\n}\n\n.detail-table-body[_ngcontent-%COMP%] {\n border: 1px solid var(--mj-border-default);\n border-top: none;\n border-radius: 0 0 8px 8px;\n overflow-y: auto;\n flex: 1;\n min-height: 0;\n}\n\n.detail-map-row[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n padding: 10px 16px;\n border-bottom: 1px solid var(--mj-border-subtle);\n transition: background 0.15s;\n font-size: 13px;\n}\n\n.detail-map-row[_ngcontent-%COMP%]:last-child {\n border-bottom: none;\n}\n\n.detail-map-row[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-page);\n cursor: pointer;\n}\n\n.detail-map-row.sync-disabled[_ngcontent-%COMP%] {\n opacity: 0.5;\n}\n\n\n\n.dt-col-toggle[_ngcontent-%COMP%] {\n width: 60px;\n flex-shrink: 0;\n}\n\n.dt-col-source[_ngcontent-%COMP%] {\n flex: 2;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n font-weight: 500;\n color: var(--mj-text-primary);\n}\n\n.dt-col-direction[_ngcontent-%COMP%] {\n width: 80px;\n flex-shrink: 0;\n text-align: center;\n}\n\n.dt-col-dest[_ngcontent-%COMP%] {\n flex: 2;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n color: var(--mj-text-primary);\n}\n\n.dt-col-meta[_ngcontent-%COMP%] {\n width: 80px;\n flex-shrink: 0;\n display: flex;\n align-items: center;\n gap: 6px;\n justify-content: flex-end;\n}\n\n\n\n.direction-badge[_ngcontent-%COMP%] {\n font-size: 11px;\n font-weight: 600;\n padding: 2px 8px;\n border-radius: 4px;\n white-space: nowrap;\n}\n\n\n\nbutton.direction-toggle[_ngcontent-%COMP%] {\n border: 1px solid transparent;\n cursor: pointer;\n transition: border-color 0.15s, box-shadow 0.15s;\n}\nbutton.direction-toggle[_ngcontent-%COMP%]:hover {\n border-color: var(--mj-border-strong);\n box-shadow: 0 0 0 2px color-mix(in srgb, var(--mj-brand-primary) 12%, transparent);\n}\n\n.direction-badge.pull[_ngcontent-%COMP%] {\n background: var(--mj-status-info-bg);\n color: var(--mj-brand-primary);\n}\n\n.direction-badge.push[_ngcontent-%COMP%] {\n background: var(--mj-status-success-bg);\n color: var(--mj-status-success);\n}\n\n.direction-badge.bidirectional[_ngcontent-%COMP%] {\n background: var(--mj-status-warning-subtle);\n color: var(--mj-status-warning);\n}\n\n\n\n.create-tables-list[_ngcontent-%COMP%] {\n max-height: 300px;\n overflow-y: auto;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n margin-top: 8px;\n background: var(--mj-bg-surface);\n}\n.create-tables-select-all[_ngcontent-%COMP%] {\n padding: 8px 12px;\n border-bottom: 1px solid var(--mj-border-default);\n background: var(--mj-bg-surface-card);\n font-weight: 600;\n}\n.create-tables-checkbox[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 6px 12px;\n cursor: pointer;\n font-size: 13px;\n color: var(--mj-text-primary);\n}\n.create-tables-checkbox[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-hover);\n}\n.create-tables-checkbox[_ngcontent-%COMP%] input[type=\"checkbox\"][_ngcontent-%COMP%] {\n width: 16px;\n height: 16px;\n cursor: pointer;\n}\n.create-tables-name-hint[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n font-size: 11px;\n margin-left: 8px;\n}\n.create-tables-filters[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 8px 0;\n flex-wrap: wrap;\n}\n.create-tables-search[_ngcontent-%COMP%] {\n flex: 1 1 240px;\n min-width: 200px;\n}\n.create-tables-toggle[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n font-size: 12px;\n color: var(--mj-text-secondary);\n cursor: pointer;\n}\n.create-tables-toggle[_ngcontent-%COMP%] input[type=\"checkbox\"][_ngcontent-%COMP%] {\n margin: 0;\n}\n.create-tables-badge[_ngcontent-%COMP%] {\n display: inline-block;\n margin-left: 6px;\n padding: 1px 6px;\n font-size: 10px;\n font-weight: 600;\n border-radius: 10px;\n text-transform: uppercase;\n letter-spacing: 0.3px;\n line-height: 1.4;\n}\n.create-tables-badge-custom[_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.create-tables-badge-registered[_ngcontent-%COMP%] {\n background: var(--mj-status-success-bg);\n color: var(--mj-status-success-text);\n}\n.add-map-input[_ngcontent-%COMP%] {\n width: 100%;\n padding: 6px 10px;\n border: 1px solid var(--mj-border-default);\n border-radius: 4px;\n font-size: 13px;\n background: var(--mj-bg-surface);\n color: var(--mj-text-primary);\n}\n.add-map-input[_ngcontent-%COMP%]:focus {\n outline: none;\n border-color: var(--mj-brand-primary);\n box-shadow: 0 0 0 2px color-mix(in srgb, var(--mj-brand-primary) 15%, transparent);\n}\n\n\n\n.detail-config-badge[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 24px;\n height: 24px;\n border-radius: 4px;\n background: var(--mj-bg-surface-active);\n color: var(--mj-text-disabled);\n font-size: 11px;\n}\n\n\n\n.detail-back-btn[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 36px;\n height: 36px;\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n background: var(--mj-bg-surface);\n color: var(--mj-text-secondary);\n cursor: pointer;\n font-size: 16px;\n transition: background 0.15s, color 0.15s, border-color 0.15s;\n flex-shrink: 0;\n}\n\n.detail-back-btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-hover);\n color: var(--mj-text-primary);\n border-color: var(--mj-border-strong);\n}\n\n\n\n.detail-edit-btn[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 36px;\n height: 36px;\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n background: var(--mj-bg-surface);\n color: var(--mj-text-secondary);\n cursor: pointer;\n font-size: 14px;\n transition: background 0.15s, color 0.15s, border-color 0.15s;\n flex-shrink: 0;\n}\n\n.detail-edit-btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-hover);\n color: var(--mj-text-primary);\n border-color: var(--mj-border-strong);\n}\n\n\n\n.map-edit-hint[_ngcontent-%COMP%] {\n color: var(--mj-text-disabled);\n font-size: 11px;\n transition: color 0.15s;\n}\n\n.detail-map-row[_ngcontent-%COMP%]:hover .map-edit-hint[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n}\n\n\n\n.ve-header-title-inline[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n font-size: 16px;\n font-weight: 600;\n}\n\n.ve-source-label[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n}\n\n.ve-direction-icon[_ngcontent-%COMP%] {\n color: var(--mj-text-disabled);\n font-size: 14px;\n}\n\n.ve-dest-label[_ngcontent-%COMP%] {\n color: var(--mj-status-success);\n}\n\n.ve-stat-inline[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--mj-text-muted);\n}\n\n.ve-stat-inline[_ngcontent-%COMP%] strong[_ngcontent-%COMP%] {\n color: var(--mj-text-primary);\n font-weight: 600;\n}\n\n.detail-table-empty[_ngcontent-%COMP%] {\n padding: 24px;\n text-align: center;\n color: var(--mj-text-disabled);\n font-size: 13px;\n}\n\n\n\n\n\n\n.discovered-objects-section[_ngcontent-%COMP%] {\n margin: 12px 0;\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n background: var(--mj-bg-surface);\n overflow: hidden;\n}\n\n.discovered-objects-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 10px 14px;\n background: var(--mj-bg-surface-card);\n border-bottom: 1px solid var(--mj-border-subtle);\n}\n\n.discovered-objects-title[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 13px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.discovered-objects-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n}\n\n.discovered-count[_ngcontent-%COMP%] {\n font-weight: 400;\n color: var(--mj-text-muted);\n font-size: 12px;\n}\n\n.discovered-objects-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n}\n\n.discovered-action-btn[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n background: none;\n border: 1px solid var(--mj-border-default);\n border-radius: 4px;\n padding: 3px 10px;\n font-size: 12px;\n color: var(--mj-text-secondary);\n cursor: pointer;\n transition: background 0.15s, color 0.15s;\n}\n\n.discovered-action-btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-hover);\n color: var(--mj-text-primary);\n}\n\n.discovered-action-btn[_ngcontent-%COMP%]:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.discovered-loading[_ngcontent-%COMP%], \n.discovered-empty[_ngcontent-%COMP%] {\n padding: 16px;\n text-align: center;\n font-size: 13px;\n color: var(--mj-text-muted);\n}\n\n.discovered-loading[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n margin-right: 6px;\n}\n\n.discovered-objects-list[_ngcontent-%COMP%] {\n max-height: 280px;\n overflow-y: auto;\n}\n\n.discovered-object-row[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 7px 14px;\n cursor: pointer;\n transition: background 0.1s;\n border-bottom: 1px solid var(--mj-border-subtle);\n font-size: 13px;\n}\n\n.discovered-object-row[_ngcontent-%COMP%]:last-child {\n border-bottom: none;\n}\n\n.discovered-object-row[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-hover);\n}\n\n.discovered-object-row.selected[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 6%, var(--mj-bg-surface));\n}\n\n.discovered-object-row[_ngcontent-%COMP%] input[type=\"checkbox\"][_ngcontent-%COMP%] {\n flex-shrink: 0;\n width: 16px;\n height: 16px;\n accent-color: var(--mj-brand-primary);\n cursor: pointer;\n}\n\n.discovered-object-name[_ngcontent-%COMP%] {\n flex: 1;\n color: var(--mj-text-primary);\n font-weight: 500;\n}\n\n.discovered-object-api-name[_ngcontent-%COMP%] {\n flex: 1;\n color: var(--mj-text-muted);\n font-size: 12px;\n font-family: monospace;\n}\n\n.discovered-object-badges[_ngcontent-%COMP%] {\n display: flex;\n gap: 4px;\n}\n\n.discovered-badge[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 20px;\n height: 20px;\n border-radius: 4px;\n font-size: 10px;\n}\n\n.discovered-badge.incremental[_ngcontent-%COMP%] {\n color: var(--mj-status-success);\n background: var(--mj-status-success-bg);\n}\n\n.discovered-badge.writable[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n}"] });
3122
3141
  };
3123
3142
  ConnectionsComponent = ConnectionsComponent_1 = __decorate([
3124
3143
  RegisterClass(BaseResourceComponent, 'IntegrationConnections')
@@ -3126,7 +3145,7 @@ ConnectionsComponent = ConnectionsComponent_1 = __decorate([
3126
3145
  export { ConnectionsComponent };
3127
3146
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ConnectionsComponent, [{
3128
3147
  type: Component,
3129
- args: [{ standalone: false, selector: 'app-integration-connections', template: "<!-- Main container -->\n<div class=\"connections-container\" [class.detail-active]=\"!!SelectedSummary\"\n [class.editor-active]=\"!!EditorEntityMap\">\n\n <!-- ======================================================================\n CARD GRID VIEW (shown when no wizard and no detail selected)\n ====================================================================== -->\n @if (!WizardOpen && !SelectedSummary) {\n <!-- Header -->\n <div class=\"connections-header\">\n <div class=\"header-left\">\n <h2 class=\"header-title\">Integrations</h2>\n <span class=\"header-count\">{{ Connections.length }} integration{{ Connections.length !== 1 ? 's' : '' }}</span>\n </div>\n <button mjButton variant=\"primary\" (click)=\"OpenWizard()\" class=\"add-connection-btn\">\n <i class=\"fa-solid fa-plus\"></i>\n Add Integration\n </button>\n </div>\n\n <!-- Loading state -->\n @if (IsLoading) {\n <div class=\"loading-container\">\n <mj-loading text=\"Loading integrations...\"></mj-loading>\n </div>\n }\n\n <!-- Empty state -->\n @if (!IsLoading && Connections.length === 0) {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-plug empty-icon\"></i>\n <h3>No integrations yet</h3>\n <p>Connect your first external system to start syncing data.</p>\n <button mjButton variant=\"primary\" (click)=\"OpenWizard()\">\n <i class=\"fa-solid fa-plus\"></i>\n Add Your First Integration\n </button>\n </div>\n }\n\n <!-- Card grid -->\n @if (!IsLoading && Connections.length > 0) {\n <div class=\"card-grid\">\n @for (summary of Connections; track summary.Integration.ID) {\n <div class=\"connection-card\">\n <!-- Card header + body: clickable to open detail view -->\n <div class=\"card-clickable\" (click)=\"SelectIntegrationCard(summary)\">\n <div class=\"card-header\">\n <div class=\"icon-circle\" [style.background-color]=\"GetIconBrandColor(summary.Integration.Integration)\">\n <i [class]=\"GetIntegrationIcon(summary.Integration.Integration, summary.Icon)\" class=\"icon-large\"></i>\n </div>\n <span [class]=\"GetStatusBadgeClass(summary)\">{{ GetStatusBadge(summary) }}</span>\n </div>\n\n <!-- Card body -->\n <div class=\"card-body\">\n <div class=\"card-name\">{{ summary.Integration.Name }}</div>\n <div class=\"card-company\">{{ summary.Integration.Company }}</div>\n <div class=\"card-meta\">\n <span class=\"meta-label\">{{ GetSourceTypeLabel(summary) }}</span>\n <span class=\"meta-separator\">&middot;</span>\n <span class=\"meta-value\">{{ GetCredentialHint(summary) }}</span>\n </div>\n <div class=\"card-sync-info\">\n <i class=\"fa-solid fa-arrows-rotate\"></i>\n Syncing {{ GetEntityMapCount(summary.Integration.ID) }} entities\n </div>\n\n <!-- Inline test result -->\n @if (GetCardTestResult(summary.Integration.ID); as testResult) {\n <div class=\"card-test-result\" [class.test-success]=\"testResult.Success\" [class.test-failure]=\"!testResult.Success\">\n @if (testResult.Success) {\n <i class=\"fa-solid fa-circle-check\"></i>\n } @else {\n <i class=\"fa-solid fa-circle-xmark\"></i>\n }\n <span>{{ testResult.Message }}</span>\n </div>\n }\n </div>\n </div><!-- /card-clickable -->\n\n <!-- Delete confirmation overlay -->\n @if (IsDeleteConfirming(summary.Integration.ID)) {\n <div class=\"delete-confirm-overlay\">\n <div class=\"delete-confirm-content\">\n <i class=\"fa-solid fa-triangle-exclamation delete-warn-icon\"></i>\n <span class=\"delete-confirm-text\">Delete this integration and all its entity maps?</span>\n <div class=\"delete-confirm-actions\">\n <button mjButton\n variant=\"danger\"\n [disabled]=\"IsDeleting\"\n (click)=\"ConfirmDelete(summary.Integration.ID)\">\n @if (IsDeleting) {\n <i class=\"fa-solid fa-spinner fa-spin\"></i>\n Deleting...\n } @else {\n Delete\n }\n </button>\n <button mjButton variant=\"outline\" (click)=\"CancelDelete()\">\n Cancel\n </button>\n </div>\n </div>\n </div>\n }\n\n <!-- Card footer -->\n <div class=\"card-footer\">\n <button mjButton\n variant=\"outline\"\n [disabled]=\"!!TestingCardID\"\n (click)=\"TestExistingConnection(summary.Integration.ID)\">\n @if (IsTestingCard(summary.Integration.ID)) {\n <i class=\"fa-solid fa-spinner fa-spin\"></i>\n } @else {\n Test\n }\n </button>\n <button mjButton variant=\"outline\" (click)=\"OnMenuAction('edit', summary)\">\n Configure\n </button>\n @if (IsConnectionActive(summary)) {\n <div class=\"sync-menu-wrapper\">\n <button mjButton variant=\"primary\"\n [disabled]=\"!!SyncingIntegrationID\"\n (click)=\"ToggleSyncMenu(summary.Integration.ID, $event)\">\n @if (IsSyncing(summary.Integration.ID)) {\n <i class=\"fa-solid fa-spinner fa-spin\"></i> Syncing...\n } @else {\n <i class=\"fa-solid fa-arrows-rotate\"></i> Sync\n <i class=\"fa-solid fa-chevron-down sync-caret\"></i>\n }\n </button>\n @if (SyncMenuIntegrationID === summary.Integration.ID) {\n <div class=\"sync-dropdown\">\n <div class=\"sync-dropdown-group\">\n <span class=\"sync-dropdown-label\">Pull (External \u2192 MJ)</span>\n <button class=\"sync-dropdown-item\" (click)=\"RunSyncWithDirection(summary.Integration.ID, false, 'Pull', $event)\">\n <i class=\"fa-solid fa-arrow-down-to-line\"></i> Incremental Pull\n </button>\n <button class=\"sync-dropdown-item\" (click)=\"RunSyncWithDirection(summary.Integration.ID, true, 'Pull', $event)\">\n <i class=\"fa-solid fa-rotate\"></i> Full Pull\n </button>\n </div>\n <div class=\"sync-dropdown-group\">\n <span class=\"sync-dropdown-label\">Push (MJ \u2192 External)</span>\n <button class=\"sync-dropdown-item\" (click)=\"RunSyncWithDirection(summary.Integration.ID, false, 'Push', $event)\">\n <i class=\"fa-solid fa-arrow-up-from-line\"></i> Incremental Push\n </button>\n <button class=\"sync-dropdown-item\" (click)=\"RunSyncWithDirection(summary.Integration.ID, true, 'Push', $event)\">\n <i class=\"fa-solid fa-rotate\"></i> Full Push\n </button>\n </div>\n <div class=\"sync-dropdown-group\">\n <span class=\"sync-dropdown-label\">Bidirectional</span>\n <button class=\"sync-dropdown-item\" (click)=\"RunSyncWithDirection(summary.Integration.ID, false, 'Bidirectional', $event)\">\n <i class=\"fa-solid fa-arrows-rotate\"></i> Incremental Both\n </button>\n <button class=\"sync-dropdown-item\" (click)=\"RunSyncWithDirection(summary.Integration.ID, true, 'Bidirectional', $event)\">\n <i class=\"fa-solid fa-rotate\"></i> Full Both\n </button>\n </div>\n </div>\n }\n </div>\n }\n <button class=\"card-delete-btn\" (click)=\"OnMenuAction('delete', summary)\" title=\"Delete integration\">\n <i class=\"fa-solid fa-trash-can\"></i>\n </button>\n </div>\n </div>\n }\n\n <!-- New connection card -->\n <div class=\"connection-card new-connection-card\" (click)=\"OpenWizard()\">\n <div class=\"new-card-content\">\n <div class=\"new-card-icon\">\n <i class=\"fa-solid fa-plus\"></i>\n </div>\n <span class=\"new-card-label\">Add Integration</span>\n </div>\n </div>\n </div>\n }\n }\n\n <!-- ======================================================================\n DETAIL VIEW (entity maps for selected integration)\n ====================================================================== -->\n @if (!WizardOpen && SelectedSummary) {\n <div class=\"detail-view\">\n\n <!-- ================================================================\n ENTITY MAP EDITOR (field mapping detail for a selected map)\n ================================================================ -->\n @if (EditorEntityMap) {\n <app-visual-field-editor\n [EntityMap]=\"EditorEntityMap\"\n [CompanyIntegrationID]=\"SelectedSummary!.Integration.ID\"\n [RunViewProvider]=\"RunViewToUse\"\n (Close)=\"CloseEntityMapEditor()\">\n </app-visual-field-editor>\n\n <!-- ================================================================\n ENTITY MAPS LIST (shown when no editor map is selected)\n ================================================================ -->\n } @else {\n <!-- Detail header -->\n <div class=\"detail-header\">\n <button class=\"detail-back-btn\" (click)=\"CloseDetailView()\" title=\"Back to Integrations\">\n <i class=\"fa-solid fa-arrow-left\"></i>\n </button>\n <div class=\"detail-header-info\">\n <div class=\"icon-circle\" [style.background-color]=\"GetIconBrandColor(SelectedSummary.Integration.Integration)\">\n <i [class]=\"GetIntegrationIcon(SelectedSummary.Integration.Integration)\" class=\"icon-large\"></i>\n </div>\n <div class=\"detail-header-text\">\n <h2 class=\"detail-title\">{{ SelectedSummary.Integration.Name }}</h2>\n <span class=\"detail-subtitle\">\n {{ SelectedSummary.Integration.Company }}\n <span class=\"meta-separator\">&middot;</span>\n {{ GetSourceTypeLabel(SelectedSummary) }}\n <span class=\"meta-separator\">&middot;</span>\n <span [class]=\"GetStatusBadgeClass(SelectedSummary)\">{{ GetStatusBadge(SelectedSummary) }}</span>\n </span>\n </div>\n </div>\n <div class=\"detail-header-actions\">\n <button class=\"detail-edit-btn\" (click)=\"OpenEditPanel(SelectedSummary)\" title=\"Configure\">\n <i class=\"fa-solid fa-pen-to-square\"></i>\n </button>\n @if (IsConnectionActive(SelectedSummary)) {\n <div class=\"sync-menu-wrapper\">\n <button mjButton variant=\"primary\"\n [disabled]=\"!!SyncingIntegrationID\"\n (click)=\"ToggleSyncMenu(SelectedSummary.Integration.ID, $event)\">\n @if (IsSyncing(SelectedSummary.Integration.ID)) {\n <i class=\"fa-solid fa-spinner fa-spin\"></i> Syncing...\n } @else {\n <i class=\"fa-solid fa-arrows-rotate\"></i> Sync\n <i class=\"fa-solid fa-chevron-down sync-caret\"></i>\n }\n </button>\n @if (SyncMenuIntegrationID === SelectedSummary.Integration.ID) {\n <div class=\"sync-dropdown sync-dropdown-left\">\n <div class=\"sync-dropdown-group\">\n <span class=\"sync-dropdown-label\">Pull (External \u2192 MJ)</span>\n <button class=\"sync-dropdown-item\" (click)=\"RunSyncWithDirection(SelectedSummary.Integration.ID, false, 'Pull', $event)\">\n <i class=\"fa-solid fa-arrow-down-to-line\"></i> Incremental Pull\n </button>\n <button class=\"sync-dropdown-item\" (click)=\"RunSyncWithDirection(SelectedSummary.Integration.ID, true, 'Pull', $event)\">\n <i class=\"fa-solid fa-rotate\"></i> Full Pull\n </button>\n </div>\n <div class=\"sync-dropdown-group\">\n <span class=\"sync-dropdown-label\">Push (MJ \u2192 External)</span>\n <button class=\"sync-dropdown-item\" (click)=\"RunSyncWithDirection(SelectedSummary.Integration.ID, false, 'Push', $event)\">\n <i class=\"fa-solid fa-arrow-up-from-line\"></i> Incremental Push\n </button>\n <button class=\"sync-dropdown-item\" (click)=\"RunSyncWithDirection(SelectedSummary.Integration.ID, true, 'Push', $event)\">\n <i class=\"fa-solid fa-rotate\"></i> Full Push\n </button>\n </div>\n <div class=\"sync-dropdown-group\">\n <span class=\"sync-dropdown-label\">Bidirectional</span>\n <button class=\"sync-dropdown-item\" (click)=\"RunSyncWithDirection(SelectedSummary.Integration.ID, false, 'Bidirectional', $event)\">\n <i class=\"fa-solid fa-arrows-rotate\"></i> Incremental Both\n </button>\n <button class=\"sync-dropdown-item\" (click)=\"RunSyncWithDirection(SelectedSummary.Integration.ID, true, 'Bidirectional', $event)\">\n <i class=\"fa-solid fa-rotate\"></i> Full Both\n </button>\n </div>\n </div>\n }\n </div>\n }\n </div>\n </div>\n\n <!-- Schedule section -->\n <div class=\"schedule-section\">\n <div class=\"schedule-section-header\">\n <div class=\"schedule-section-title\">\n <i class=\"fa-solid fa-calendar-check\"></i>\n <span>Sync Schedule</span>\n </div>\n </div>\n @if (ScheduledJobID) {\n <mj-scheduled-job-summary\n [ScheduledJobID]=\"ScheduledJobID\"\n (EditRequested)=\"OpenSchedulePanel()\">\n </mj-scheduled-job-summary>\n } @else {\n <div class=\"schedule-empty\">\n <span class=\"schedule-empty-text\">No sync schedule configured</span>\n <button class=\"schedule-create-btn\" (click)=\"OpenSchedulePanel()\">\n <i class=\"fa-solid fa-plus\"></i>\n Schedule Sync\n </button>\n </div>\n }\n </div>\n\n <!-- Schedule slide panel -->\n <mj-scheduled-job-slide-panel\n [IsOpen]=\"ShowScheduleSlidePanel\"\n [ScheduledJobID]=\"ScheduledJobID\"\n [JobTypeID]=\"IntegrationSyncJobTypeID\"\n [DefaultConfiguration]=\"ScheduleDefaultConfiguration\"\n [HideJobType]=\"true\"\n (Close)=\"CloseSchedulePanel()\"\n (Saved)=\"OnScheduleSaved()\"\n (Deleted)=\"OnScheduleDeleted()\">\n </mj-scheduled-job-slide-panel>\n\n <!-- Entity maps toolbar -->\n <div class=\"detail-toolbar\">\n <div class=\"detail-toolbar-left\">\n <span class=\"detail-map-count\">\n {{ DetailEntityMaps.length }} entity map{{ DetailEntityMaps.length !== 1 ? 's' : '' }}\n <span class=\"meta-separator\">&middot;</span>\n {{ DetailActiveMapCount }} active\n </span>\n </div>\n <div class=\"detail-toolbar-right\">\n <div class=\"detail-search\">\n <i class=\"fa-solid fa-filter\"></i>\n <input type=\"text\"\n placeholder=\"Filter entity maps...\"\n [value]=\"DetailSearchTerm\"\n (input)=\"OnDetailSearch($event)\" />\n </div>\n <button class=\"add-map-btn\" (click)=\"ToggleCreateTablesPanel()\" [class.active]=\"ShowCreateTablesPanel\"\n title=\"Select source objects and create entity tables\">\n <i class=\"fa-solid fa-table\"></i> Create Tables\n </button>\n <button class=\"add-map-btn\" (click)=\"ToggleAutoMapPanel()\" [class.active]=\"ShowAutoMapPanel\">\n <i class=\"fa-solid fa-wand-magic-sparkles\"></i> Auto-Map Schema\n </button>\n <button class=\"add-map-btn\" (click)=\"ToggleAddMapPanel()\" [class.active]=\"ShowAddMapPanel\">\n <i class=\"fa-solid fa-plus\"></i> Add Map\n </button>\n </div>\n </div>\n\n <!-- Sync result banner -->\n @if (SyncResult) {\n <div class=\"sync-result-banner\" [class.sync-success]=\"SyncResult.Success\" [class.sync-failure]=\"!SyncResult.Success\">\n @if (SyncResult.Success) {\n <i class=\"fa-solid fa-circle-check\"></i>\n } @else {\n <i class=\"fa-solid fa-circle-xmark\"></i>\n }\n <span>{{ SyncResult.Message || (SyncResult.Success ? 'Sync completed successfully' : 'Sync failed') }}</span>\n </div>\n }\n\n <!-- Auto-Map Schema panel -->\n @if (ShowAutoMapPanel) {\n <div class=\"add-map-panel\">\n <div class=\"auto-map-header\">\n <i class=\"fa-solid fa-wand-magic-sparkles\"></i>\n <span>Auto-map all entities in a schema to this integration with 1:1 field mappings</span>\n </div>\n <div class=\"add-map-row\">\n <div class=\"add-map-field\">\n <label class=\"add-map-label\">Target Schema</label>\n <select class=\"add-map-select\" [(ngModel)]=\"AutoMapSelectedSchema\">\n <option [ngValue]=\"''\" disabled>Select schema...</option>\n @for (schema of AutoMapSchemas; track schema) {\n <option [value]=\"schema\">{{ schema }}</option>\n }\n </select>\n </div>\n\n <div class=\"add-map-direction-col\">\n <label class=\"add-map-label\">Direction</label>\n <div class=\"add-map-direction-btns\">\n <button [class.active]=\"AutoMapDirection === 'Pull'\" (click)=\"AutoMapDirection = 'Pull'\" title=\"Pull from source\">\n <i class=\"fa-solid fa-arrow-right\"></i>\n </button>\n <button [class.active]=\"AutoMapDirection === 'Bidirectional'\" (click)=\"AutoMapDirection = 'Bidirectional'\" title=\"Bidirectional sync\">\n <i class=\"fa-solid fa-right-left\"></i>\n </button>\n <button [class.active]=\"AutoMapDirection === 'Push'\" (click)=\"AutoMapDirection = 'Push'\" title=\"Push to source\">\n <i class=\"fa-solid fa-arrow-left\"></i>\n </button>\n </div>\n </div>\n\n <div class=\"add-map-actions\">\n <button class=\"add-map-save-btn\"\n [disabled]=\"!CanAutoMap\"\n (click)=\"RunAutoMap()\">\n @if (IsAutoMapping) {\n <i class=\"fa-solid fa-spinner fa-spin\"></i> Mapping...\n } @else {\n <i class=\"fa-solid fa-wand-magic-sparkles\"></i> Auto-Map\n }\n </button>\n <button class=\"add-map-cancel-btn\" (click)=\"CloseAutoMapPanel()\">\n <i class=\"fa-solid fa-xmark\"></i>\n </button>\n </div>\n </div>\n\n @if (AutoMapResult) {\n <div class=\"auto-map-result\" [class.auto-map-success]=\"AutoMapResult.Errors.length === 0\"\n [class.auto-map-partial]=\"AutoMapResult.Errors.length > 0 && AutoMapResult.EntityMapsCreated > 0\"\n [class.auto-map-failure]=\"AutoMapResult.EntityMapsCreated === 0 && AutoMapResult.Errors.length > 0\">\n @if (AutoMapResult.EntityMapsCreated > 0) {\n <div class=\"auto-map-result-summary\">\n <i class=\"fa-solid fa-circle-check\"></i>\n Created {{ AutoMapResult.EntityMapsCreated }} entity map{{ AutoMapResult.EntityMapsCreated !== 1 ? 's' : '' }}\n with {{ AutoMapResult.FieldMapsCreated }} field map{{ AutoMapResult.FieldMapsCreated !== 1 ? 's' : '' }}\n </div>\n } @else if (AutoMapResult.Errors.length === 0) {\n <div class=\"auto-map-result-summary\">\n <i class=\"fa-solid fa-circle-info\"></i>\n All entities in this schema are already mapped.\n </div>\n }\n @if (AutoMapResult.Errors.length > 0) {\n <div class=\"auto-map-errors\">\n @for (err of AutoMapResult.Errors; track err) {\n <div class=\"auto-map-error\"><i class=\"fa-solid fa-triangle-exclamation\"></i> {{ err }}</div>\n }\n </div>\n }\n </div>\n }\n </div>\n }\n\n <!-- Create Tables panel (select source objects \u2192 create entity tables) -->\n @if (ShowCreateTablesPanel) {\n <div class=\"add-map-panel\">\n <div class=\"auto-map-header\">\n <i class=\"fa-solid fa-table\"></i>\n <span>Select source objects to create as entity tables in your database</span>\n </div>\n\n <div class=\"add-map-row\">\n <div class=\"add-map-actions\">\n <button class=\"add-map-save-btn\"\n [disabled]=\"!CanCreateTables\"\n (click)=\"RunCreateTables()\">\n @if (IsCreatingTables) {\n <i class=\"fa-solid fa-spinner fa-spin\"></i> Creating...\n } @else {\n <i class=\"fa-solid fa-table\"></i> Create {{ CreateTablesSelectedCount }} Table{{ CreateTablesSelectedCount !== 1 ? 's' : '' }}\n }\n </button>\n <button class=\"add-map-cancel-btn\" (click)=\"CloseCreateTablesPanel()\">\n <i class=\"fa-solid fa-xmark\"></i>\n </button>\n </div>\n </div>\n\n @if (IsLoadingCreateTablesObjects) {\n <mj-loading text=\"Loading source objects...\" size=\"small\"></mj-loading>\n } @else if (CreateTablesObjects.length === 0) {\n <div class=\"auto-map-result auto-map-success\">\n <i class=\"fa-solid fa-circle-info\"></i>\n No source objects available from this connector.\n </div>\n } @else {\n <div class=\"create-tables-filters\">\n <input type=\"text\"\n class=\"create-tables-search mj-input\"\n placeholder=\"Search by name or label...\"\n [(ngModel)]=\"CreateTablesSearch\" />\n </div>\n <div class=\"create-tables-list\">\n <div class=\"create-tables-select-all\">\n <label class=\"create-tables-checkbox\">\n <input type=\"checkbox\"\n [checked]=\"FilteredCreateTablesObjects.length > 0 && CreateTablesSelectedCount === FilteredCreateTablesObjects.length\"\n (change)=\"ToggleAllCreateTablesObjects($any($event.target).checked)\" />\n <span>Select All ({{ FilteredCreateTablesObjects.length }} of {{ CreateTablesObjects.length }})</span>\n </label>\n </div>\n @for (obj of FilteredCreateTablesObjects; track obj.Name) {\n <label class=\"create-tables-checkbox\">\n <input type=\"checkbox\" [(ngModel)]=\"obj.Selected\" />\n <span>{{ obj.Label }}</span>\n @if (obj.Label !== obj.Name) {\n <span class=\"create-tables-name-hint\">{{ obj.Name }}</span>\n }\n @if (obj.IsCustom) {\n <span class=\"create-tables-badge create-tables-badge-custom\">Custom</span>\n }\n @if (obj.AlreadyPersisted) {\n <span class=\"create-tables-badge create-tables-badge-registered\">Registered</span>\n }\n </label>\n }\n </div>\n }\n\n @if (CreateTablesResult) {\n <div class=\"auto-map-result\"\n [class.auto-map-success]=\"CreateTablesResult.Success\"\n [class.auto-map-failure]=\"!CreateTablesResult.Success\">\n @if (CreateTablesResult.Success) {\n <i class=\"fa-solid fa-circle-check\"></i>\n } @else {\n <i class=\"fa-solid fa-circle-xmark\"></i>\n }\n <span>{{ CreateTablesResult.Message }}</span>\n </div>\n }\n </div>\n }\n\n <!-- Add Entity Map inline form -->\n @if (ShowAddMapPanel) {\n <div class=\"add-map-panel\">\n <div class=\"add-map-row\">\n <div class=\"add-map-field\">\n <label class=\"add-map-label\">Source Object</label>\n @if (IsLoadingSourceObjects) {\n <div class=\"add-map-loading\"><i class=\"fa-solid fa-spinner fa-spin\"></i> Loading...</div>\n } @else if (AvailableSourceObjects.length === 0) {\n <div class=\"add-map-hint\">No source objects found in metadata</div>\n } @else {\n <select class=\"add-map-select\" [(ngModel)]=\"AddMapSourceObjectName\">\n <option [ngValue]=\"''\" disabled>Select source object...</option>\n @for (obj of AvailableSourceObjects; track obj.Name) {\n <option [value]=\"obj.Name\">{{ obj.Label || obj.Name }}</option>\n }\n </select>\n }\n </div>\n\n <div class=\"add-map-direction-col\">\n <label class=\"add-map-label\">Direction</label>\n <div class=\"add-map-direction-btns\">\n <button [class.active]=\"AddMapDirection === 'Pull'\" (click)=\"AddMapDirection = 'Pull'\" title=\"Pull from source\">\n <i class=\"fa-solid fa-arrow-right\"></i>\n </button>\n <button [class.active]=\"AddMapDirection === 'Bidirectional'\" (click)=\"AddMapDirection = 'Bidirectional'\" title=\"Bidirectional sync\">\n <i class=\"fa-solid fa-right-left\"></i>\n </button>\n <button [class.active]=\"AddMapDirection === 'Push'\" (click)=\"AddMapDirection = 'Push'\" title=\"Push to source\">\n <i class=\"fa-solid fa-arrow-left\"></i>\n </button>\n </div>\n </div>\n\n <div class=\"add-map-field add-map-entity-field\">\n <label class=\"add-map-label\">MJ Entity</label>\n <div class=\"entity-picker-row\">\n <mj-tree-dropdown\n #entityTreeDropdown\n [BranchConfig]=\"EntityBranchConfig\"\n [LeafConfig]=\"EntityLeafConfig\"\n [Value]=\"AddMapEntityIDAsKey\"\n [SelectableTypes]=\"'leaf'\"\n [SelectionMode]=\"'single'\"\n [Placeholder]=\"'Search entities by schema...'\"\n [EnableSearch]=\"true\"\n (SelectionChange)=\"OnEntityTreeSelection($event)\">\n </mj-tree-dropdown>\n <button class=\"new-entity-btn\" (click)=\"OpenNewEntityDialog()\" title=\"Create new entity table\">\n <i class=\"fa-solid fa-plus\"></i> New\n </button>\n </div>\n </div>\n\n <div class=\"add-map-actions\">\n <button class=\"add-map-save-btn\"\n [disabled]=\"!CanSaveAddMap || IsSavingAddMap\"\n (click)=\"SaveAddMap()\">\n @if (IsSavingAddMap) {\n <i class=\"fa-solid fa-spinner fa-spin\"></i>\n } @else {\n <i class=\"fa-solid fa-check\"></i> Add\n }\n </button>\n <button class=\"add-map-cancel-btn\" (click)=\"CloseAddMapPanel()\">\n <i class=\"fa-solid fa-xmark\"></i>\n </button>\n </div>\n </div>\n </div>\n }\n\n <!-- Entity maps table -->\n @if (IsDetailLoading) {\n <div class=\"loading-container\">\n <mj-loading text=\"Loading entity maps...\"></mj-loading>\n </div>\n } @else if (DetailEntityMaps.length === 0 && !ShowAddMapPanel) {\n <div class=\"detail-empty\">\n <i class=\"fa-solid fa-cube\"></i>\n <h3>No entity maps configured</h3>\n <p>Entity maps define how external objects sync to MJ entities.</p>\n <button class=\"add-map-btn add-map-btn-lg\" (click)=\"ToggleAddMapPanel()\">\n <i class=\"fa-solid fa-plus\"></i> Add Your First Entity Map\n </button>\n </div>\n } @else if (DetailEntityMaps.length > 0) {\n <!-- Table header -->\n <div class=\"detail-table-head\">\n <span class=\"dt-col-toggle\">Sync</span>\n <span class=\"dt-col-source\">External Object</span>\n <span class=\"dt-col-direction\"></span>\n <span class=\"dt-col-dest\">MJ Entity</span>\n <span class=\"dt-col-meta\">Config</span>\n </div>\n\n <!-- Table body -->\n <div class=\"detail-table-body\">\n @for (em of DetailFilteredMaps; track em.ID) {\n <div class=\"detail-map-row\" [class.sync-disabled]=\"!em.SyncEnabled\" (click)=\"OnEntityMapClick(em)\">\n <span class=\"dt-col-toggle\" (click)=\"$event.stopPropagation()\">\n <label class=\"toggle-switch\" [title]=\"em.SyncEnabled ? 'Sync enabled' : 'Sync disabled'\">\n <input type=\"checkbox\"\n [checked]=\"em.SyncEnabled\"\n (change)=\"OnToggleMapEnabled(em, $event)\" />\n <span class=\"toggle-slider\"></span>\n </label>\n </span>\n <span class=\"dt-col-source\" [title]=\"em.ExternalObjectName\">\n {{ em.ExternalObjectLabel ?? em.ExternalObjectName }}\n </span>\n <span class=\"dt-col-direction\" (click)=\"$event.stopPropagation()\">\n <button class=\"direction-toggle\" [class]=\"DirectionBadgeClass(em.SyncDirection)\"\n (click)=\"CycleSyncDirection(em)\"\n [title]=\"'Click to change sync direction (currently: ' + em.SyncDirection + ')'\">\n {{ DirectionText(em.SyncDirection) }}\n </button>\n </span>\n <span class=\"dt-col-dest\" [title]=\"em.Entity\">\n {{ em.Entity }}\n </span>\n <span class=\"dt-col-meta\">\n @if (em.MatchStrategy) {\n <span class=\"detail-config-badge\" title=\"Match strategy configured\">\n <i class=\"fa-solid fa-link\"></i>\n </span>\n }\n <span class=\"detail-config-badge\" [title]=\"'Conflict: ' + em.ConflictResolution\">\n <i class=\"fa-solid fa-arrows-rotate\"></i>\n </span>\n <span class=\"map-edit-hint\">\n <i class=\"fa-solid fa-chevron-right\"></i>\n </span>\n </span>\n </div>\n } @empty {\n <div class=\"detail-table-empty\">\n No entity maps match your filter.\n </div>\n }\n </div>\n }\n }\n\n </div>\n }\n\n <!-- ======================================================================\n WIZARD (inline, replaces card grid when open)\n ====================================================================== -->\n @if (WizardOpen) {\n <div class=\"wizard-inline\">\n <!-- Wizard header -->\n <div class=\"wizard-header\">\n <button class=\"wizard-back-btn\" (click)=\"CloseWizard()\">\n <i class=\"fa-solid fa-arrow-left\"></i>\n Back to Integrations\n </button>\n <h2 class=\"wizard-title\">New Integration</h2>\n </div>\n\n <!-- Step indicator -->\n <div class=\"step-indicator\">\n @for (step of WizardSteps; track step.Number) {\n <div class=\"step-item\" [class.step-active]=\"IsStepActive(step.Number)\" [class.step-completed]=\"IsStepCompleted(step.Number)\">\n <div class=\"step-circle\">\n @if (IsStepCompleted(step.Number)) {\n <i class=\"fa-solid fa-check\"></i>\n } @else {\n {{ step.Number }}\n }\n </div>\n <span class=\"step-label\">{{ step.Label }}</span>\n </div>\n @if (step.Number < WizardSteps.length) {\n <div class=\"step-line\" [class.step-line-active]=\"IsStepCompleted(step.Number)\"></div>\n }\n }\n </div>\n\n <!-- Step content -->\n <div class=\"wizard-body\">\n\n <!-- Step 1: Choose Integration -->\n @if (WizardStep === 1) {\n <div class=\"step-content\">\n <h3 class=\"step-title\">What system do you want to connect?</h3>\n <div class=\"search-bar\">\n <i class=\"fa-solid fa-search search-icon\"></i>\n <input type=\"text\"\n class=\"search-input\"\n placeholder=\"Search integrations...\"\n [(ngModel)]=\"SearchQuery\" />\n </div>\n\n @if (FilteredIntegrations.length === 0 && AvailableIntegrations.length === 0) {\n <div class=\"no-integrations\">\n <i class=\"fa-solid fa-puzzle-piece\"></i>\n <p>No integrations configured</p>\n <span class=\"no-integrations-hint\">Configure integration definitions in the admin area first.</span>\n </div>\n } @else if (FilteredIntegrations.length === 0) {\n <div class=\"no-integrations\">\n <i class=\"fa-solid fa-search\"></i>\n <p>No matching integrations</p>\n </div>\n } @else {\n <div class=\"integration-picker-grid\">\n @for (def of FilteredIntegrations; track def.ID) {\n <div class=\"integration-picker-card\"\n [class.picker-selected]=\"IsSelectedIntegration(def)\"\n (click)=\"SelectIntegration(def)\">\n <div class=\"picker-icon-circle\" [style.background-color]=\"GetIconBrandColor(def.Name)\">\n <i [class]=\"GetIntegrationIcon(def.Name, def.Get('Icon'))\"></i>\n </div>\n <div class=\"picker-name\">{{ def.Name }}</div>\n @if (def.Description) {\n <div class=\"picker-description\">{{ def.Description }}</div>\n }\n </div>\n }\n </div>\n }\n </div>\n }\n\n <!-- Step 2: Configure Connection -->\n @if (WizardStep === 2) {\n <div class=\"step-content\">\n <h3 class=\"step-title\">Set up your connection</h3>\n <div class=\"form-group\">\n <label class=\"form-label\" for=\"connectionName\">Connection Name</label>\n <input id=\"connectionName\"\n type=\"text\"\n class=\"form-input\"\n placeholder=\"e.g. Production HubSpot\"\n [(ngModel)]=\"ConnectionName\" />\n </div>\n\n <div class=\"form-group\">\n <label class=\"form-label\" for=\"companySelect\">Company</label>\n @if (NeedsCompanyPicker) {\n <select id=\"companySelect\" class=\"form-input\" [(ngModel)]=\"SelectedCompanyID\">\n <option [ngValue]=\"null\" disabled>Select a company...</option>\n @for (company of Companies; track company.ID) {\n <option [value]=\"company.ID\">{{ company.Name }}</option>\n }\n </select>\n } @else if (Companies.length === 1) {\n <input type=\"text\" class=\"form-input\" [value]=\"Companies[0].Name\" disabled />\n } @else {\n <div class=\"form-hint\">No companies available. Create one in the admin area.</div>\n }\n </div>\n\n <div class=\"form-group\">\n <label class=\"form-label\" for=\"connectionDescription\">Description <span class=\"optional-label\">(optional)</span></label>\n <textarea id=\"connectionDescription\"\n class=\"form-input form-textarea\"\n placeholder=\"Notes about this connection...\"\n [(ngModel)]=\"ConnectionDescription\"\n rows=\"3\"></textarea>\n </div>\n\n <!-- Credential section -->\n <div class=\"form-group\">\n <label class=\"form-label\">Credential</label>\n @if (SelectedCredential) {\n <div class=\"credential-selected\">\n <div class=\"credential-info\">\n <i class=\"fa-solid fa-key\"></i>\n <span>{{ SelectedCredential.Name }}</span>\n </div>\n <button class=\"credential-clear\" (click)=\"ClearCredential()\">\n <i class=\"fa-solid fa-xmark\"></i>\n </button>\n </div>\n } @else {\n <div class=\"credential-actions\">\n <button mjButton variant=\"outline\" (click)=\"ShowExistingCredentials()\">\n <i class=\"fa-solid fa-key\"></i>\n Choose Existing Credential\n </button>\n <button mjButton variant=\"outline\" (click)=\"OpenCredentialDialog()\">\n <i class=\"fa-solid fa-plus\"></i>\n Create New Credential\n </button>\n </div>\n }\n\n @if (IsLoadingCredentials) {\n <div class=\"credential-loading\">\n <mj-loading text=\"Loading credentials...\" size=\"small\"></mj-loading>\n </div>\n }\n\n @if (!IsLoadingCredentials && ExistingCredentials.length > 0 && !SelectedCredential) {\n <div class=\"credential-list\">\n @for (cred of ExistingCredentials; track cred.ID) {\n <div class=\"credential-list-item\" (click)=\"SelectExistingCredential(cred)\">\n <i class=\"fa-solid fa-key\"></i>\n <span>{{ cred.Name }}</span>\n </div>\n }\n </div>\n }\n </div>\n </div>\n }\n\n <!-- Step 3: Test Connection -->\n @if (WizardStep === 3) {\n <div class=\"step-content step-content-centered\">\n <h3 class=\"step-title\">Let's verify everything works</h3>\n\n @if (!TestResult && !IsTesting) {\n <div class=\"test-prompt\">\n <button mjButton\n variant=\"primary\"\n size=\"lg\"\n (click)=\"TestNewConnection()\">\n <i class=\"fa-solid fa-vial\"></i>\n Test Connection\n </button>\n <p class=\"test-hint\">We'll verify we can reach your system and authenticate.</p>\n </div>\n }\n\n @if (IsTesting) {\n <div class=\"test-running\">\n <div class=\"test-spinner\">\n <i class=\"fa-solid fa-spinner fa-spin fa-3x\"></i>\n </div>\n <p>Testing connection...</p>\n </div>\n }\n\n @if (TestResult) {\n <div class=\"test-result\" [class.test-result-success]=\"TestResult.Success\" [class.test-result-failure]=\"!TestResult.Success\">\n <div class=\"test-result-icon\">\n @if (TestResult.Success) {\n <i class=\"fa-solid fa-circle-check\"></i>\n } @else {\n <i class=\"fa-solid fa-circle-xmark\"></i>\n }\n </div>\n <div class=\"test-result-message\">{{ TestResult.Message }}</div>\n @if (TestResult.Success && TestResult.ServerVersion) {\n <div class=\"test-result-detail\">\n Server version: {{ TestResult.ServerVersion }}\n </div>\n }\n @if (!TestResult.Success) {\n <button mjButton variant=\"outline\" (click)=\"TestNewConnection()\" class=\"test-retry-btn\">\n <i class=\"fa-solid fa-rotate-right\"></i>\n Retry\n </button>\n }\n </div>\n }\n </div>\n }\n\n </div>\n\n <!-- Wizard footer -->\n <div class=\"wizard-footer\">\n <div class=\"footer-left\"></div>\n <div class=\"footer-right\">\n @if (WizardStep > 1) {\n <button mjButton variant=\"outline\" (click)=\"PreviousStep()\">\n Back\n </button>\n }\n <button mjButton\n variant=\"primary\"\n [disabled]=\"IsNextDisabled || IsSaving\"\n (click)=\"FinishWizard()\">\n @if (IsSaving) {\n <i class=\"fa-solid fa-spinner fa-spin\"></i>\n Saving...\n } @else {\n {{ NextButtonLabel }}\n }\n </button>\n </div>\n </div>\n </div>\n }\n\n</div>\n\n<!-- Edit panel (slide-in) -->\n<div class=\"edit-panel-backdrop\"\n [class.open]=\"EditPanelOpen\"\n (click)=\"CloseEditPanel()\"></div>\n<div class=\"edit-panel\" [class.open]=\"EditPanelOpen\">\n @if (EditingSummary) {\n <!-- Header -->\n <div class=\"edit-panel-header\">\n <div class=\"edit-panel-title\">\n <div class=\"edit-icon-circle\"\n [style.background-color]=\"GetIconBrandColor(EditingSummary.Integration.Integration)\">\n <i [class]=\"GetIntegrationIcon(EditingSummary.Integration.Integration, EditingSummary.Icon)\"></i>\n </div>\n <span>Configure Integration</span>\n </div>\n <button class=\"edit-close-btn\" (click)=\"CloseEditPanel()\">\n <i class=\"fa-solid fa-xmark\"></i>\n </button>\n </div>\n\n @if (IsEditLoading) {\n <div class=\"edit-panel-loading\">\n <mj-loading text=\"Loading...\" size=\"small\"></mj-loading>\n </div>\n } @else {\n <!-- Edit form -->\n <div class=\"edit-panel-body\">\n <div class=\"edit-form-group\">\n <label class=\"edit-form-label\">Connection Name</label>\n <input type=\"text\"\n class=\"edit-form-input\"\n [(ngModel)]=\"EditName\"\n placeholder=\"Connection name...\" />\n </div>\n\n <div class=\"edit-form-group\">\n <label class=\"edit-form-label\">Status</label>\n <div class=\"edit-toggle-row\">\n <label class=\"toggle-switch\">\n <input type=\"checkbox\" [(ngModel)]=\"EditIsActive\" />\n <span class=\"toggle-slider\"></span>\n </label>\n <span class=\"edit-toggle-label\" [class.active]=\"EditIsActive\">\n {{ EditIsActive ? 'Active' : 'Inactive' }}\n </span>\n </div>\n </div>\n\n <div class=\"edit-form-group\">\n <label class=\"edit-form-label\">Credential</label>\n @if (EditCredential) {\n <div class=\"edit-credential-selected\">\n <div class=\"edit-credential-info\">\n <i class=\"fa-solid fa-key\"></i>\n <span>{{ EditCredential.Name }}</span>\n </div>\n <button class=\"edit-credential-clear\" (click)=\"ClearEditCredential()\">\n <i class=\"fa-solid fa-xmark\"></i>\n </button>\n </div>\n } @else {\n <div class=\"edit-credential-actions\">\n <button mjButton variant=\"outline\" size=\"sm\" (click)=\"OpenEditCredentialDialog()\">\n <i class=\"fa-solid fa-plus\"></i> New Credential\n </button>\n </div>\n @if (EditCredentials.length > 0) {\n <div class=\"edit-credential-list\">\n @for (cred of EditCredentials; track cred.ID) {\n <div class=\"edit-credential-item\" (click)=\"SelectEditCredential(cred)\">\n <i class=\"fa-solid fa-key\"></i>\n <span>{{ cred.Name }}</span>\n </div>\n }\n </div>\n }\n }\n </div>\n\n <div class=\"edit-form-group\">\n <label class=\"edit-form-label\">Integration</label>\n <div class=\"edit-readonly-field\">\n {{ EditingSummary.Integration.Integration }}\n </div>\n </div>\n\n <div class=\"edit-form-group\">\n <label class=\"edit-form-label\">Company</label>\n <div class=\"edit-readonly-field\">\n {{ EditingSummary.Integration.Company }}\n </div>\n </div>\n </div>\n\n <!-- Footer -->\n <div class=\"edit-panel-footer\">\n <button mjButton\n variant=\"primary\"\n [disabled]=\"IsEditSaving || !EditName.trim()\"\n (click)=\"SaveEditChanges()\">\n @if (IsEditSaving) {\n <i class=\"fa-solid fa-spinner fa-spin\"></i> Saving...\n } @else {\n Save Changes\n }\n </button>\n <button mjButton variant=\"outline\" (click)=\"CloseEditPanel()\">\n Cancel\n </button>\n </div>\n }\n }\n</div>\n\n<!-- Credential dialog (shared between wizard and edit panel) -->\n@if (ShowCredentialDialog) {\n <mj-credential-dialog\n [Visible]=\"true\"\n [PreselectedTypeId]=\"PreselectedCredentialTypeId\"\n (close)=\"EditPanelOpen ? OnEditCredentialDialogClose($event) : OnCredentialDialogClose($event)\">\n </mj-credential-dialog>\n}\n\n<!-- New Entity dialog -->\n@if (ShowCreateEntity) {\n <div class=\"new-entity-backdrop\" (click)=\"CloseNewEntityDialog()\"></div>\n <div class=\"new-entity-dialog\">\n <div class=\"new-entity-dialog-header\">\n <h3>Create New Entity Table</h3>\n <button class=\"new-entity-dialog-close\" (click)=\"CloseNewEntityDialog()\">\n <i class=\"fa-solid fa-xmark\"></i>\n </button>\n </div>\n <div class=\"new-entity-dialog-body\">\n <p class=\"new-entity-dialog-desc\">\n Generate a SQL migration to create a new database table for this integration's data.\n After running the migration and CodeGen, the new entity will appear in the entity picker.\n </p>\n\n <div class=\"new-entity-dialog-form\">\n <div class=\"new-entity-dialog-row\">\n <div class=\"new-entity-dialog-field\">\n <label class=\"new-entity-dialog-label\">Source Object</label>\n <div class=\"new-entity-dialog-value\">\n @if (AddMapSourceObjectName) {\n {{ AddMapSourceObjectName }}\n } @else {\n <span class=\"new-entity-dialog-hint\">Select a source object in the Add Map form first</span>\n }\n </div>\n </div>\n </div>\n <div class=\"new-entity-dialog-row\">\n <div class=\"new-entity-dialog-field\">\n <label class=\"new-entity-dialog-label\">Schema</label>\n <input type=\"text\"\n class=\"new-entity-dialog-input\"\n placeholder=\"e.g. hubspot\"\n [(ngModel)]=\"NewEntitySchema\" />\n </div>\n <span class=\"new-entity-dialog-dot\">.</span>\n <div class=\"new-entity-dialog-field new-entity-dialog-field-wide\">\n <label class=\"new-entity-dialog-label\">Table Name</label>\n <input type=\"text\"\n class=\"new-entity-dialog-input\"\n placeholder=\"e.g. Contact\"\n [(ngModel)]=\"NewEntityTable\" />\n </div>\n </div>\n </div>\n\n @if (DDLPreviewWarnings.length > 0) {\n <div class=\"ddl-warnings\">\n @for (warn of DDLPreviewWarnings; track warn) {\n <div class=\"ddl-warning\"><i class=\"fa-solid fa-triangle-exclamation\"></i> {{ warn }}</div>\n }\n </div>\n }\n\n @if (DDLPreview) {\n <div class=\"ddl-preview-block\">\n <div class=\"ddl-preview-header\">\n <span>SQL Preview</span>\n <button class=\"ddl-copy-btn\" (click)=\"CopyDDLToClipboard()\" title=\"Copy to clipboard\">\n @if (DDLCopied) {\n <i class=\"fa-solid fa-check\"></i> Copied\n } @else {\n <i class=\"fa-regular fa-copy\"></i> Copy\n }\n </button>\n </div>\n <pre class=\"ddl-preview-code\">{{ DDLPreview }}</pre>\n </div>\n }\n\n @if (DDLPreview) {\n <div class=\"new-entity-next-steps\">\n <h4><i class=\"fa-solid fa-list-check\"></i> Next Steps</h4>\n <ol>\n <li>Copy the SQL above and save it as a migration file</li>\n <li>Run the migration against your database</li>\n <li>Run CodeGen to register the new entity in MemberJunction</li>\n <li>Refresh the page &mdash; the new entity will appear in the entity picker</li>\n </ol>\n </div>\n }\n </div>\n <div class=\"new-entity-dialog-footer\">\n <button class=\"new-entity-preview-btn\"\n [disabled]=\"!CanGenerateSQL || IsGeneratingDDL\"\n (click)=\"PreviewDDL()\">\n @if (IsGeneratingDDL) {\n <i class=\"fa-solid fa-spinner fa-spin\"></i> Generating...\n } @else {\n <i class=\"fa-solid fa-code\"></i> Generate SQL\n }\n </button>\n <button class=\"new-entity-dialog-done-btn\" (click)=\"CloseNewEntityDialog()\">\n Done\n </button>\n </div>\n </div>\n}\n", styles: ["/* ---------------------------------------------------------------------------\n Host & Container \u2014 flex chain for scrollable detail view\n --------------------------------------------------------------------------- */\n\n:host {\n display: flex;\n flex-direction: column;\n height: 100%;\n min-height: 0;\n overflow: hidden;\n}\n\n.connections-container {\n padding: 24px;\n max-width: 1400px;\n width: 100%;\n margin: 0 auto;\n flex: 1;\n display: flex;\n flex-direction: column;\n min-height: 0;\n overflow-y: auto;\n box-sizing: border-box;\n}\n\n/* When detail or editor view is active, prevent container scrolling\n so the inner .detail-table-body handles its own scroll */\n.connections-container.detail-active,\n.connections-container.editor-active {\n overflow: hidden;\n}\n\n.connections-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin-bottom: 24px;\n}\n\n.header-left {\n display: flex;\n align-items: baseline;\n gap: 12px;\n}\n\n.header-title {\n font-size: 24px;\n font-weight: 700;\n margin: 0;\n color: var(--mj-text-primary);\n}\n\n.header-count {\n font-size: 14px;\n color: var(--mj-text-disabled);\n}\n\n.add-connection-btn i {\n margin-right: 6px;\n}\n\n/* ---------------------------------------------------------------------------\n Loading & Empty States\n --------------------------------------------------------------------------- */\n\n.loading-container {\n display: flex;\n justify-content: center;\n align-items: center;\n min-height: 300px;\n}\n\n.empty-state {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n min-height: 400px;\n text-align: center;\n color: var(--mj-text-muted);\n}\n\n.empty-icon {\n font-size: 48px;\n color: var(--mj-text-disabled);\n margin-bottom: 16px;\n}\n\n.empty-state h3 {\n font-size: 20px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n margin: 0 0 8px;\n}\n\n.empty-state p {\n font-size: 14px;\n margin: 0 0 24px;\n}\n\n/* ---------------------------------------------------------------------------\n Card Grid\n --------------------------------------------------------------------------- */\n\n.card-grid {\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));\n gap: 20px;\n}\n\n/* ---------------------------------------------------------------------------\n Connection Card\n --------------------------------------------------------------------------- */\n\n.connection-card {\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 12px;\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.06);\n transition: box-shadow 0.2s ease, transform 0.2s ease;\n display: flex;\n flex-direction: column;\n position: relative;\n overflow: hidden;\n}\n\n.connection-card:hover {\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);\n transform: translateY(-2px);\n}\n\n/* Card Header */\n.card-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 16px 16px 0;\n}\n\n.icon-circle {\n width: 48px;\n height: 48px;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--mj-text-inverse);\n flex-shrink: 0;\n}\n\n.icon-large {\n font-size: 22px;\n}\n\n/* Status Badge */\n.status-badge {\n font-size: 12px;\n font-weight: 600;\n padding: 4px 10px;\n border-radius: 20px;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.status-badge-connected {\n background: var(--mj-status-success-bg);\n color: var(--mj-status-success);\n}\n\n.status-badge-error {\n background: var(--mj-status-error-bg);\n color: var(--mj-status-error);\n}\n\n.status-badge-inactive {\n background: var(--mj-bg-surface-hover);\n color: var(--mj-text-muted);\n}\n\n.status-badge-syncing {\n background: var(--mj-status-info-bg);\n color: var(--mj-brand-primary);\n}\n\n/* Card Body */\n.card-body {\n padding: 12px 16px;\n flex: 1;\n}\n\n.card-name {\n font-size: 18px;\n font-weight: 700;\n color: var(--mj-text-primary);\n margin-bottom: 2px;\n}\n\n.card-company {\n font-size: 14px;\n color: var(--mj-text-disabled);\n margin-bottom: 10px;\n}\n\n.card-meta {\n font-size: 13px;\n color: var(--mj-text-muted);\n margin-bottom: 6px;\n}\n\n.meta-separator {\n margin: 0 6px;\n}\n\n.meta-label {\n font-weight: 500;\n}\n\n.card-sync-info {\n font-size: 13px;\n color: var(--mj-text-muted);\n margin-bottom: 8px;\n}\n\n.card-sync-info i {\n margin-right: 4px;\n color: var(--mj-text-disabled);\n}\n\n/* Card inline test result */\n.card-test-result {\n font-size: 12px;\n padding: 6px 10px;\n border-radius: 6px;\n display: flex;\n align-items: center;\n gap: 6px;\n margin-top: 8px;\n}\n\n.card-test-result.test-success {\n background: var(--mj-status-success-bg);\n color: var(--mj-status-success);\n}\n\n.card-test-result.test-failure {\n background: var(--mj-status-error-bg);\n color: var(--mj-status-error);\n}\n\n.card-test-result span {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n/* Card Footer */\n.card-footer {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 12px 16px;\n border-top: 1px solid var(--mj-border-subtle);\n}\n\n.card-footer button {\n font-size: 13px;\n}\n\n/* Sync dropdown menu */\n.sync-menu-wrapper {\n position: relative;\n display: inline-flex;\n}\n\n.sync-caret {\n font-size: 10px;\n margin-left: 4px;\n opacity: 0.8;\n}\n\n.sync-dropdown {\n position: absolute;\n top: calc(100% + 4px);\n left: 0;\n z-index: 1000;\n background: var(--mj-bg-surface-elevated);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n box-shadow: 0 8px 24px rgba(0,0,0,0.12);\n min-width: 220px;\n overflow: hidden;\n}\n\n.sync-dropdown-left {\n left: auto;\n right: 0;\n}\n\n.sync-dropdown-group {\n padding: 8px 0;\n border-bottom: 1px solid var(--mj-border-subtle);\n}\n\n.sync-dropdown-group:last-child {\n border-bottom: none;\n}\n\n.sync-dropdown-label {\n display: block;\n font-size: 10px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.05em;\n color: var(--mj-text-muted);\n padding: 0 12px 4px;\n}\n\n.sync-dropdown-item {\n display: flex;\n align-items: center;\n gap: 8px;\n width: 100%;\n padding: 7px 12px;\n background: none;\n border: none;\n cursor: pointer;\n font-size: 13px;\n color: var(--mj-text-primary);\n text-align: left;\n transition: background 0.12s;\n}\n\n.sync-dropdown-item:hover {\n background: var(--mj-bg-surface-hover);\n}\n\n.sync-dropdown-item i {\n width: 16px;\n text-align: center;\n color: var(--mj-text-secondary);\n flex-shrink: 0;\n}\n\n/* Card Delete Button */\n.card-delete-btn {\n margin-left: auto;\n background: none;\n border: 1px solid transparent;\n cursor: pointer;\n padding: 4px 8px;\n border-radius: 6px;\n color: var(--mj-text-disabled);\n font-size: 14px;\n transition: all 0.15s;\n}\n\n.card-delete-btn:hover {\n background: var(--mj-status-error-bg);\n border-color: var(--mj-status-error-border);\n color: var(--mj-status-error);\n}\n\n.menu-trigger:hover {\n background: var(--mj-bg-surface-hover);\n color: var(--mj-text-secondary);\n}\n\n.card-menu-dropdown {\n position: absolute;\n right: 0;\n top: 100%;\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.12);\n min-width: 160px;\n z-index: 50;\n padding: 4px;\n}\n\n.menu-item {\n display: flex;\n align-items: center;\n gap: 8px;\n width: 100%;\n padding: 8px 12px;\n border: none;\n background: none;\n cursor: pointer;\n font-size: 13px;\n color: var(--mj-text-secondary);\n border-radius: 6px;\n transition: background 0.15s;\n text-align: left;\n}\n\n.menu-item:hover {\n background: var(--mj-bg-surface-hover);\n}\n\n.menu-item i {\n width: 16px;\n text-align: center;\n color: var(--mj-text-muted);\n}\n\n.menu-item-danger {\n color: var(--mj-status-error);\n}\n\n.menu-item-danger i {\n color: var(--mj-status-error);\n}\n\n.menu-item-danger:hover {\n background: var(--mj-status-error-bg);\n}\n\n/* ---------------------------------------------------------------------------\n New Connection Card\n --------------------------------------------------------------------------- */\n\n.new-connection-card {\n border: 2px dashed var(--mj-border-strong);\n background: var(--mj-bg-page);\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n min-height: 200px;\n transition: background 0.2s, border-color 0.2s;\n}\n\n.new-connection-card:hover {\n background: var(--mj-bg-surface-hover);\n border-color: var(--mj-brand-primary);\n box-shadow: none;\n transform: none;\n}\n\n.new-card-content {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 12px;\n}\n\n.new-card-icon {\n width: 56px;\n height: 56px;\n border-radius: 50%;\n background: var(--mj-bg-surface-active);\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 24px;\n color: var(--mj-text-muted);\n transition: background 0.2s, color 0.2s;\n}\n\n.new-connection-card:hover .new-card-icon {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n}\n\n.new-card-label {\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-muted);\n}\n\n.new-connection-card:hover .new-card-label {\n color: var(--mj-brand-primary);\n}\n\n/* ---------------------------------------------------------------------------\n Wizard (inline, replaces card grid)\n --------------------------------------------------------------------------- */\n\n.wizard-inline {\n display: flex;\n flex-direction: column;\n height: 100%;\n max-width: 720px;\n margin: 0 auto;\n}\n\n/* Wizard Header */\n.wizard-header {\n display: flex;\n align-items: center;\n gap: 16px;\n padding: 0 0 20px;\n}\n\n.wizard-back-btn {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n background: none;\n border: none;\n cursor: pointer;\n font-size: 13px;\n font-weight: 500;\n color: var(--mj-text-muted);\n padding: 6px 10px;\n border-radius: 6px;\n transition: background 0.15s, color 0.15s;\n}\n\n.wizard-back-btn:hover {\n background: var(--mj-bg-surface-hover);\n color: var(--mj-text-primary);\n}\n\n.wizard-title {\n font-size: 20px;\n font-weight: 700;\n color: var(--mj-text-primary);\n margin: 0;\n}\n\n/* ---------------------------------------------------------------------------\n Step Indicator\n --------------------------------------------------------------------------- */\n\n.step-indicator {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 20px 32px;\n gap: 0;\n}\n\n.step-item {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 6px;\n position: relative;\n}\n\n.step-circle {\n width: 32px;\n height: 32px;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 13px;\n font-weight: 600;\n background: var(--mj-bg-surface-active);\n color: var(--mj-text-disabled);\n border: 2px solid var(--mj-border-default);\n transition: all 0.2s;\n}\n\n.step-active .step-circle {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n border-color: var(--mj-brand-primary);\n}\n\n.step-completed .step-circle {\n background: var(--mj-status-success);\n color: var(--mj-text-inverse);\n border-color: var(--mj-status-success);\n}\n\n.step-label {\n font-size: 11px;\n font-weight: 500;\n color: var(--mj-text-disabled);\n white-space: nowrap;\n}\n\n.step-active .step-label {\n color: var(--mj-brand-primary);\n font-weight: 600;\n}\n\n.step-completed .step-label {\n color: var(--mj-status-success);\n}\n\n.step-line {\n width: 48px;\n height: 2px;\n background: var(--mj-border-default);\n margin: 0 8px;\n margin-bottom: 20px;\n transition: background 0.2s;\n}\n\n.step-line-active {\n background: var(--mj-status-success);\n}\n\n/* ---------------------------------------------------------------------------\n Wizard Body\n --------------------------------------------------------------------------- */\n\n.wizard-body {\n flex: 1;\n overflow-y: auto;\n padding: 0 24px 24px;\n}\n\n.step-content {\n min-height: 300px;\n}\n\n.step-content-centered {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n text-align: center;\n}\n\n.step-title {\n font-size: 18px;\n font-weight: 600;\n color: var(--mj-text-primary);\n margin: 0 0 20px;\n}\n\n.step-content-centered .step-title {\n margin-bottom: 32px;\n}\n\n/* Search bar */\n.search-bar {\n position: relative;\n margin-bottom: 20px;\n}\n\n.search-icon {\n position: absolute;\n left: 14px;\n top: 50%;\n transform: translateY(-50%);\n color: var(--mj-text-disabled);\n font-size: 14px;\n}\n\n.search-input {\n width: 100%;\n padding: 10px 14px 10px 40px;\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n font-size: 14px;\n color: var(--mj-text-primary);\n background: var(--mj-bg-surface);\n transition: border-color 0.2s, box-shadow 0.2s;\n box-sizing: border-box;\n}\n\n.search-input:focus {\n outline: none;\n border-color: var(--mj-brand-primary);\n box-shadow: 0 0 0 3px rgba(37, 99, 235, 0.1);\n}\n\n.search-input::placeholder {\n color: var(--mj-text-disabled);\n}\n\n/* No integrations */\n.no-integrations {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 48px 24px;\n color: var(--mj-text-disabled);\n text-align: center;\n}\n\n.no-integrations i {\n font-size: 36px;\n margin-bottom: 12px;\n}\n\n.no-integrations p {\n font-size: 16px;\n font-weight: 500;\n color: var(--mj-text-muted);\n margin: 0 0 4px;\n}\n\n.no-integrations-hint {\n font-size: 13px;\n}\n\n/* Integration picker grid */\n.integration-picker-grid {\n display: grid;\n grid-template-columns: repeat(3, 1fr);\n gap: 12px;\n}\n\n.integration-picker-card {\n border: 2px solid var(--mj-border-default);\n border-radius: 10px;\n padding: 16px;\n cursor: pointer;\n text-align: center;\n transition: border-color 0.2s, background 0.15s;\n}\n\n.integration-picker-card:hover {\n border-color: var(--mj-brand-primary);\n background: var(--mj-bg-page);\n}\n\n.integration-picker-card.picker-selected {\n border-color: var(--mj-brand-primary);\n background: var(--mj-status-info-bg);\n}\n\n.picker-icon-circle {\n width: 40px;\n height: 40px;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--mj-text-inverse);\n margin: 0 auto 10px;\n font-size: 18px;\n}\n\n.picker-name {\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-primary);\n margin-bottom: 4px;\n}\n\n.picker-description {\n font-size: 12px;\n color: var(--mj-text-disabled);\n line-height: 1.3;\n overflow: hidden;\n text-overflow: ellipsis;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n}\n\n/* ---------------------------------------------------------------------------\n Form Controls (Step 2)\n --------------------------------------------------------------------------- */\n\n.form-group {\n margin-bottom: 20px;\n}\n\n.form-label {\n display: block;\n font-size: 13px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n margin-bottom: 6px;\n}\n\n.optional-label {\n font-weight: 400;\n color: var(--mj-text-disabled);\n}\n\n.form-input {\n width: 100%;\n padding: 10px 14px;\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n font-size: 14px;\n color: var(--mj-text-primary);\n background: var(--mj-bg-surface);\n transition: border-color 0.2s, box-shadow 0.2s;\n box-sizing: border-box;\n}\n\n.form-input:focus {\n outline: none;\n border-color: var(--mj-brand-primary);\n box-shadow: 0 0 0 3px rgba(37, 99, 235, 0.1);\n}\n\n.form-input::placeholder {\n color: var(--mj-text-disabled);\n}\n\n.form-input:disabled {\n background: var(--mj-bg-page);\n color: var(--mj-text-muted);\n}\n\n.form-textarea {\n resize: vertical;\n min-height: 72px;\n}\n\n.form-hint {\n font-size: 13px;\n color: var(--mj-text-disabled);\n padding: 8px 0;\n}\n\n/* Credential section */\n.credential-selected {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 10px 14px;\n background: var(--mj-status-success-bg);\n border: 1px solid var(--mj-status-success-border);\n border-radius: 8px;\n}\n\n.credential-info {\n display: flex;\n align-items: center;\n gap: 8px;\n color: var(--mj-status-success-text);\n font-size: 14px;\n font-weight: 500;\n}\n\n.credential-info i {\n color: var(--mj-status-success);\n}\n\n.credential-clear {\n background: none;\n border: none;\n cursor: pointer;\n color: var(--mj-text-disabled);\n font-size: 14px;\n padding: 4px;\n border-radius: 4px;\n transition: color 0.15s;\n}\n\n.credential-clear:hover {\n color: var(--mj-status-error);\n}\n\n.credential-actions {\n display: flex;\n gap: 8px;\n}\n\n.credential-actions button {\n font-size: 13px;\n}\n\n.credential-loading {\n padding: 16px 0;\n}\n\n.credential-list {\n margin-top: 12px;\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n overflow: hidden;\n}\n\n.credential-list-item {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 10px 14px;\n cursor: pointer;\n font-size: 14px;\n color: var(--mj-text-secondary);\n border-bottom: 1px solid var(--mj-border-subtle);\n transition: background 0.15s;\n}\n\n.credential-list-item:last-child {\n border-bottom: none;\n}\n\n.credential-list-item:hover {\n background: var(--mj-bg-page);\n}\n\n.credential-list-item i {\n color: var(--mj-text-disabled);\n}\n\n/* ---------------------------------------------------------------------------\n Test Connection (Step 3)\n --------------------------------------------------------------------------- */\n\n.test-prompt {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 16px;\n}\n\n.test-hint {\n font-size: 14px;\n color: var(--mj-text-disabled);\n margin: 0;\n}\n\n.test-running {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 16px;\n color: var(--mj-brand-primary);\n}\n\n.test-spinner {\n width: 64px;\n height: 64px;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.test-running p {\n font-size: 15px;\n font-weight: 500;\n margin: 0;\n}\n\n/* Test result */\n.test-result {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 12px;\n padding: 24px;\n border-radius: 12px;\n max-width: 400px;\n}\n\n.test-result-success {\n background: var(--mj-status-success-bg);\n}\n\n.test-result-failure {\n background: var(--mj-status-error-bg);\n}\n\n.test-result-icon {\n font-size: 48px;\n animation: scaleIn 0.3s ease-out;\n}\n\n.test-result-success .test-result-icon {\n color: var(--mj-status-success);\n}\n\n.test-result-failure .test-result-icon {\n color: var(--mj-status-error);\n}\n\n@keyframes scaleIn {\n from {\n transform: scale(0.5);\n opacity: 0;\n }\n to {\n transform: scale(1);\n opacity: 1;\n }\n}\n\n.test-result-message {\n font-size: 15px;\n font-weight: 500;\n color: var(--mj-text-secondary);\n text-align: center;\n}\n\n.test-result-detail {\n font-size: 13px;\n color: var(--mj-text-muted);\n}\n\n.test-retry-btn {\n margin-top: 4px;\n}\n\n/* Toggle switch */\n.toggle-switch {\n position: relative;\n display: inline-block;\n width: 44px;\n height: 24px;\n flex-shrink: 0;\n}\n\n.toggle-switch input {\n opacity: 0;\n width: 0;\n height: 0;\n}\n\n.toggle-slider {\n position: absolute;\n cursor: pointer;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: var(--mj-border-strong);\n border-radius: 24px;\n transition: background 0.2s;\n}\n\n.toggle-slider::before {\n content: '';\n position: absolute;\n height: 18px;\n width: 18px;\n left: 3px;\n bottom: 3px;\n background: var(--mj-bg-surface);\n border-radius: 50%;\n transition: transform 0.2s;\n}\n\n.toggle-switch input:checked + .toggle-slider {\n background: var(--mj-brand-primary);\n}\n\n.toggle-switch input:checked + .toggle-slider::before {\n transform: translateX(20px);\n}\n\n/* ---------------------------------------------------------------------------\n Wizard Footer\n --------------------------------------------------------------------------- */\n\n.wizard-footer {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 16px 24px;\n border-top: 1px solid var(--mj-border-subtle);\n}\n\n.footer-left {\n display: flex;\n align-items: center;\n}\n\n.footer-right {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n/* ---------------------------------------------------------------------------\n Responsive\n --------------------------------------------------------------------------- */\n\n@media (max-width: 768px) {\n .connections-container {\n padding: 16px;\n }\n\n .card-grid {\n grid-template-columns: 1fr;\n }\n\n .integration-picker-grid {\n grid-template-columns: repeat(2, 1fr);\n }\n\n .step-indicator {\n padding: 16px;\n overflow-x: auto;\n }\n\n .step-line {\n width: 24px;\n }\n\n .credential-actions {\n flex-direction: column;\n }\n}\n\n@media (max-width: 480px) {\n .integration-picker-grid {\n grid-template-columns: 1fr;\n }\n\n .card-footer {\n flex-wrap: wrap;\n }\n}\n\n/* ---------------------------------------------------------------------------\n Delete confirmation overlay\n --------------------------------------------------------------------------- */\n\n.delete-confirm-overlay {\n position: absolute;\n inset: 0;\n background: rgba(255, 255, 255, 0.95);\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 5;\n border-radius: 12px;\n animation: fadeIn 150ms ease;\n}\n\n@keyframes fadeIn {\n from { opacity: 0; }\n to { opacity: 1; }\n}\n\n.delete-confirm-content {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 10px;\n padding: 20px;\n text-align: center;\n}\n\n.delete-warn-icon {\n font-size: 28px;\n color: var(--mj-status-error);\n}\n\n.delete-confirm-text {\n font-size: 13px;\n font-weight: 500;\n color: var(--mj-text-secondary);\n max-width: 220px;\n}\n\n.delete-confirm-actions {\n display: flex;\n gap: 8px;\n margin-top: 4px;\n}\n\n/* ---------------------------------------------------------------------------\n Edit panel (slide-in)\n --------------------------------------------------------------------------- */\n\n.edit-panel-backdrop {\n position: fixed;\n inset: 0;\n background: rgba(0, 0, 0, 0.1);\n z-index: 99;\n opacity: 0;\n pointer-events: none;\n transition: opacity 300ms ease;\n}\n\n.edit-panel-backdrop.open {\n opacity: 1;\n pointer-events: auto;\n}\n\n.edit-panel {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n width: 400px;\n max-width: 100%;\n background: var(--mj-bg-surface);\n border-left: 1px solid var(--mj-border-default);\n box-shadow: -8px 0 24px rgba(0, 0, 0, 0.08);\n z-index: 100;\n transform: translateX(100%);\n transition: transform 300ms cubic-bezier(0.4, 0, 0.2, 1);\n display: flex;\n flex-direction: column;\n overflow: hidden;\n}\n\n.edit-panel.open {\n transform: translateX(0);\n}\n\n.edit-panel-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 16px 20px;\n border-bottom: 1px solid var(--mj-border-default);\n flex-shrink: 0;\n}\n\n.edit-panel-title {\n display: flex;\n align-items: center;\n gap: 10px;\n font-size: 15px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.edit-icon-circle {\n width: 32px;\n height: 32px;\n border-radius: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--mj-text-inverse);\n font-size: 14px;\n}\n\n.edit-close-btn {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 28px;\n height: 28px;\n border: none;\n border-radius: 6px;\n background: transparent;\n color: var(--mj-text-disabled);\n cursor: pointer;\n font-size: 14px;\n transition: all 150ms ease;\n}\n\n.edit-close-btn:hover {\n background: var(--mj-bg-surface-hover);\n color: var(--mj-text-secondary);\n}\n\n.edit-panel-loading {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 48px 20px;\n}\n\n.edit-panel-body {\n flex: 1;\n overflow-y: auto;\n padding: 20px;\n display: flex;\n flex-direction: column;\n gap: 20px;\n}\n\n.edit-form-group {\n display: flex;\n flex-direction: column;\n gap: 6px;\n}\n\n.edit-form-label {\n font-size: 12px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n text-transform: uppercase;\n letter-spacing: 0.3px;\n}\n\n.edit-form-input {\n height: 36px;\n padding: 0 12px;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n font-size: 14px;\n color: var(--mj-text-primary);\n background: var(--mj-bg-surface);\n outline: none;\n transition: border-color 150ms ease;\n}\n\n.edit-form-input:focus {\n border-color: var(--mj-brand-primary);\n}\n\n.edit-readonly-field {\n padding: 8px 12px;\n background: var(--mj-bg-page);\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n font-size: 13px;\n color: var(--mj-text-muted);\n}\n\n.edit-toggle-row {\n display: flex;\n align-items: center;\n gap: 10px;\n}\n\n.edit-toggle-label {\n font-size: 13px;\n font-weight: 500;\n color: var(--mj-text-disabled);\n}\n\n.edit-toggle-label.active {\n color: var(--mj-status-success);\n}\n\n.edit-credential-selected {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 10px 12px;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n background: var(--mj-bg-page);\n}\n\n.edit-credential-info {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 13px;\n color: var(--mj-text-secondary);\n}\n\n.edit-credential-info i {\n color: var(--mj-brand-primary);\n}\n\n.edit-credential-clear {\n width: 24px;\n height: 24px;\n border: none;\n border-radius: 4px;\n background: transparent;\n color: var(--mj-text-disabled);\n cursor: pointer;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n font-size: 12px;\n transition: all 150ms ease;\n}\n\n.edit-credential-clear:hover {\n background: var(--mj-status-error-bg);\n color: var(--mj-status-error);\n}\n\n.edit-credential-actions {\n display: flex;\n gap: 8px;\n}\n\n.edit-credential-list {\n display: flex;\n flex-direction: column;\n gap: 2px;\n margin-top: 6px;\n max-height: 180px;\n overflow-y: auto;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n}\n\n.edit-credential-item {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 12px;\n font-size: 13px;\n color: var(--mj-text-secondary);\n cursor: pointer;\n transition: background 150ms ease;\n}\n\n.edit-credential-item:hover {\n background: var(--mj-bg-surface-hover);\n}\n\n.edit-credential-item i {\n color: var(--mj-text-disabled);\n font-size: 12px;\n}\n\n.edit-panel-footer {\n display: flex;\n gap: 8px;\n padding: 16px 20px;\n border-top: 1px solid var(--mj-border-default);\n flex-shrink: 0;\n}\n\n/* ---------------------------------------------------------------------------\n Card clickable area\n --------------------------------------------------------------------------- */\n\n.card-clickable {\n cursor: pointer;\n}\n\n/* ---------------------------------------------------------------------------\n Detail View (entity maps for a selected integration)\n --------------------------------------------------------------------------- */\n\n.detail-view {\n display: flex;\n flex-direction: column;\n flex: 1;\n min-height: 0;\n overflow: hidden;\n}\n\n.detail-header {\n display: flex;\n align-items: center;\n gap: 16px;\n padding-bottom: 20px;\n border-bottom: 1px solid var(--mj-border-subtle);\n margin-bottom: 16px;\n flex-wrap: wrap;\n}\n\n.detail-header-info {\n display: flex;\n align-items: center;\n gap: 12px;\n flex: 1;\n min-width: 0;\n}\n\n.detail-header-text {\n display: flex;\n flex-direction: column;\n gap: 2px;\n min-width: 0;\n}\n\n.detail-title {\n font-size: 20px;\n font-weight: 700;\n color: var(--mj-text-primary);\n margin: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.detail-subtitle {\n font-size: 13px;\n color: var(--mj-text-muted);\n display: flex;\n align-items: center;\n gap: 4px;\n flex-wrap: wrap;\n}\n\n.detail-header-actions {\n display: flex;\n gap: 8px;\n flex-shrink: 0;\n}\n\n/* Schedule section */\n.schedule-section {\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 12px;\n padding: 16px 20px;\n margin-bottom: 16px;\n}\n\n.schedule-section-header {\n margin-bottom: 12px;\n}\n\n.schedule-section-title {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 0.8rem;\n font-weight: 700;\n color: var(--mj-text-secondary);\n text-transform: uppercase;\n letter-spacing: 0.04em;\n}\n\n.schedule-section-title i {\n color: var(--mj-brand-primary);\n}\n\n.schedule-empty {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 8px 0;\n}\n\n.schedule-empty-text {\n font-size: 0.85rem;\n color: var(--mj-text-disabled);\n}\n\n.schedule-create-btn {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 8px 16px;\n background: linear-gradient(135deg, var(--mj-brand-primary) 0%, var(--mj-brand-primary-active) 100%);\n color: white;\n border: none;\n border-radius: 8px;\n cursor: pointer;\n font-size: 0.8rem;\n font-weight: 600;\n transition: all 0.2s ease;\n}\n\n.schedule-create-btn:hover {\n transform: translateY(-1px);\n box-shadow: 0 4px 12px color-mix(in srgb, var(--mj-brand-primary) 40%, transparent);\n}\n\n/* Detail toolbar */\n.detail-toolbar {\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin-bottom: 12px;\n}\n\n.detail-toolbar-left {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.detail-map-count {\n font-size: 13px;\n color: var(--mj-text-muted);\n font-weight: 500;\n}\n\n.detail-search {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 6px 12px;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n background: var(--mj-bg-surface);\n}\n\n.detail-search i {\n color: var(--mj-text-disabled);\n font-size: 12px;\n}\n\n.detail-search input {\n border: none;\n outline: none;\n background: transparent;\n font-size: 13px;\n color: var(--mj-text-primary);\n width: 200px;\n}\n\n.detail-search input::placeholder {\n color: var(--mj-text-disabled);\n}\n\n/* Add Map button */\n.add-map-btn {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 6px 14px;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n background: var(--mj-bg-surface-card);\n color: var(--mj-brand-primary-hover);\n font-size: 13px;\n font-weight: 500;\n cursor: pointer;\n transition: all 150ms ease;\n white-space: nowrap;\n}\n\n.add-map-btn:hover {\n background: var(--mj-bg-surface-hover);\n border-color: var(--mj-border-strong);\n}\n\n.add-map-btn.active {\n background: var(--mj-brand-primary);\n color: var(--mj-bg-surface);\n border-color: var(--mj-brand-primary);\n}\n\n.apply-all-btn {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n border-color: var(--mj-brand-primary);\n}\n\n.apply-all-btn:hover {\n background: var(--mj-brand-primary-hover);\n border-color: var(--mj-brand-primary-hover);\n}\n\n.apply-all-btn:disabled {\n opacity: 0.6;\n cursor: not-allowed;\n}\n\n.add-map-btn-lg {\n margin-top: 16px;\n padding: 10px 20px;\n font-size: 14px;\n}\n\n/* Add map inline panel */\n.add-map-panel {\n padding: 16px;\n margin-bottom: 12px;\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n animation: fadeIn 200ms ease;\n}\n\n.add-map-row {\n display: flex;\n align-items: flex-end;\n gap: 12px;\n}\n\n.add-map-field {\n flex: 1;\n min-width: 0;\n}\n\n.add-map-label {\n display: block;\n font-size: 11px;\n font-weight: 600;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.3px;\n margin-bottom: 6px;\n}\n\n.add-map-select {\n width: 100%;\n height: 34px;\n padding: 0 10px;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n font-size: 13px;\n color: var(--mj-text-primary);\n background: var(--mj-bg-surface);\n outline: none;\n cursor: pointer;\n}\n\n.add-map-select:focus {\n border-color: var(--mj-brand-primary);\n}\n\n.add-map-direction-col {\n flex-shrink: 0;\n}\n\n.add-map-direction-btns {\n display: flex;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n overflow: hidden;\n}\n\n.add-map-direction-btns button {\n padding: 7px 12px;\n border: none;\n background: var(--mj-bg-surface);\n color: var(--mj-text-muted);\n font-size: 13px;\n cursor: pointer;\n transition: all 150ms ease;\n border-right: 1px solid var(--mj-border-default);\n}\n\n.add-map-direction-btns button:last-child {\n border-right: none;\n}\n\n.add-map-direction-btns button:hover {\n background: var(--mj-bg-surface-hover);\n}\n\n.add-map-direction-btns button.active {\n background: var(--mj-brand-primary);\n color: var(--mj-bg-surface);\n}\n\n.add-map-actions {\n display: flex;\n gap: 6px;\n flex-shrink: 0;\n}\n\n.add-map-save-btn {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 7px 16px;\n border: none;\n border-radius: 6px;\n background: var(--mj-brand-primary);\n color: var(--mj-bg-surface);\n font-size: 13px;\n font-weight: 500;\n cursor: pointer;\n transition: all 150ms ease;\n white-space: nowrap;\n}\n\n.add-map-save-btn:hover {\n background: var(--mj-brand-primary-hover);\n}\n\n.add-map-save-btn:disabled {\n opacity: 0.5;\n cursor: default;\n}\n\n.add-map-cancel-btn {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 34px;\n height: 34px;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n background: var(--mj-bg-surface);\n color: var(--mj-text-muted);\n cursor: pointer;\n font-size: 13px;\n transition: all 150ms ease;\n}\n\n.add-map-cancel-btn:hover {\n background: var(--mj-bg-surface-hover);\n color: var(--mj-text-primary);\n}\n\n.add-map-loading {\n font-size: 12px;\n color: var(--mj-text-disabled);\n padding: 8px 0;\n}\n\n.add-map-loading i {\n color: var(--mj-brand-primary);\n margin-right: 4px;\n}\n\n.add-map-hint {\n font-size: 12px;\n color: var(--mj-text-disabled);\n padding: 8px 0;\n font-style: italic;\n}\n\n/* Entity field needs more room for tree dropdown */\n.add-map-entity-field {\n flex: 2;\n min-width: 280px;\n}\n\n/* Entity picker row: tree dropdown + New button side by side */\n.entity-picker-row {\n display: flex;\n align-items: flex-start;\n gap: 8px;\n}\n\n.entity-picker-row mj-tree-dropdown {\n flex: 1;\n min-width: 0;\n}\n\n.new-entity-btn {\n flex-shrink: 0;\n display: inline-flex;\n align-items: center;\n gap: 4px;\n padding: 7px 12px;\n font-size: 12px;\n font-weight: 600;\n color: var(--mj-brand-primary);\n background: var(--mj-brand-primary-subtle);\n border: 1px solid color-mix(in srgb, var(--mj-brand-primary) 20%, transparent);\n border-radius: 6px;\n cursor: pointer;\n white-space: nowrap;\n transition: all 0.15s ease;\n}\n\n.new-entity-btn:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 15%, var(--mj-bg-surface));\n border-color: color-mix(in srgb, var(--mj-brand-primary) 30%, transparent);\n}\n\n/* ---------------------------------------------------------------------------\n Sync Result Banner\n --------------------------------------------------------------------------- */\n\n.sync-result-banner {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 10px 14px;\n border-radius: 6px;\n font-size: 13px;\n font-weight: 500;\n margin-bottom: 12px;\n animation: fadeIn 200ms ease;\n}\n\n.sync-result-banner.sync-success {\n background: var(--mj-status-success-bg);\n border: 1px solid var(--mj-status-success-border);\n color: var(--mj-status-success-text);\n}\n\n.sync-result-banner.sync-failure {\n background: var(--mj-status-error-bg);\n border: 1px solid var(--mj-status-error-border);\n color: var(--mj-status-error-text);\n}\n\n/* ---------------------------------------------------------------------------\n Auto-Map Schema Panel\n --------------------------------------------------------------------------- */\n\n.auto-map-header {\n display: flex;\n align-items: center;\n gap: 8px;\n margin-bottom: 12px;\n font-size: 13px;\n color: var(--mj-text-secondary);\n}\n\n.auto-map-header i {\n color: var(--mj-brand-primary);\n}\n\n.auto-map-result {\n margin-top: 12px;\n padding: 10px 14px;\n border-radius: 6px;\n font-size: 13px;\n}\n\n.auto-map-result.auto-map-success {\n background: var(--mj-status-success-bg);\n border: 1px solid var(--mj-status-success-border);\n color: var(--mj-status-success-text);\n}\n\n.auto-map-result.auto-map-partial {\n background: var(--mj-status-warning-bg);\n border: 1px solid var(--mj-status-warning-border);\n color: var(--mj-status-warning-text);\n}\n\n.auto-map-result.auto-map-failure {\n background: var(--mj-status-error-bg);\n border: 1px solid var(--mj-status-error-border);\n color: var(--mj-status-error-text);\n}\n\n.auto-map-result-summary {\n display: flex;\n align-items: center;\n gap: 8px;\n font-weight: 500;\n}\n\n.auto-map-errors {\n margin-top: 6px;\n font-size: 12px;\n}\n\n.auto-map-error {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 2px 0;\n}\n\n/* ---------------------------------------------------------------------------\n New Entity Dialog\n --------------------------------------------------------------------------- */\n\n.new-entity-backdrop {\n position: fixed;\n inset: 0;\n background: rgba(0, 0, 0, 0.4);\n z-index: 1000;\n animation: fadeIn 0.15s ease;\n}\n\n.new-entity-dialog {\n position: fixed;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n width: 640px;\n max-width: 90vw;\n max-height: 85vh;\n background: var(--mj-bg-surface);\n border-radius: var(--mj-radius-lg);\n box-shadow: 0 20px 60px rgba(0, 0, 0, 0.2);\n z-index: 1001;\n display: flex;\n flex-direction: column;\n animation: fadeIn 0.2s ease;\n}\n\n.new-entity-dialog-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 16px 20px;\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.new-entity-dialog-header h3 {\n margin: 0;\n font-size: var(--mj-text-base);\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.new-entity-dialog-close {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n height: 32px;\n padding: 0;\n font-size: var(--mj-text-sm);\n color: var(--mj-text-secondary);\n background: transparent;\n border: none;\n border-radius: 6px;\n cursor: pointer;\n transition: all 0.15s ease;\n}\n\n.new-entity-dialog-close:hover {\n background: var(--mj-bg-surface-card);\n color: var(--mj-text-primary);\n}\n\n.new-entity-dialog-body {\n flex: 1;\n overflow-y: auto;\n padding: 20px;\n display: flex;\n flex-direction: column;\n gap: 16px;\n}\n\n.new-entity-dialog-desc {\n margin: 0;\n font-size: 13px;\n color: var(--mj-text-secondary);\n line-height: 1.5;\n}\n\n.new-entity-dialog-form {\n display: flex;\n flex-direction: column;\n gap: 12px;\n}\n\n.new-entity-dialog-row {\n display: flex;\n align-items: flex-end;\n gap: 8px;\n}\n\n.new-entity-dialog-field {\n display: flex;\n flex-direction: column;\n gap: 4px;\n min-width: 120px;\n}\n\n.new-entity-dialog-field-wide {\n flex: 1;\n}\n\n.new-entity-dialog-label {\n font-size: var(--mj-text-xs);\n font-weight: 600;\n color: var(--mj-text-secondary);\n}\n\n.new-entity-dialog-input {\n padding: 8px 12px;\n font-size: var(--mj-text-sm);\n border: 1px solid var(--mj-border-strong);\n border-radius: var(--mj-radius-md);\n background: var(--mj-bg-surface);\n color: var(--mj-text-primary);\n transition: border-color 0.15s ease;\n}\n\n.new-entity-dialog-input:focus {\n outline: none;\n border-color: var(--mj-brand-primary);\n box-shadow: 0 0 0 2px rgba(99, 102, 241, 0.1);\n}\n\n.new-entity-dialog-dot {\n font-size: 20px;\n font-weight: 700;\n color: var(--mj-text-secondary);\n padding-bottom: 6px;\n user-select: none;\n}\n\n.new-entity-dialog-value {\n font-size: 14px;\n font-weight: 500;\n color: var(--mj-text-primary);\n padding: 8px 0 4px;\n}\n\n.new-entity-dialog-hint {\n font-style: italic;\n color: var(--mj-text-disabled);\n font-weight: 400;\n}\n\n.new-entity-dialog-footer {\n display: flex;\n align-items: center;\n justify-content: flex-end;\n gap: 8px;\n padding: 12px 20px;\n border-top: 1px solid var(--mj-border-default);\n}\n\n.new-entity-preview-btn {\n display: inline-flex;\n align-items: center;\n gap: 5px;\n padding: 8px 16px;\n font-size: 13px;\n font-weight: 600;\n color: var(--mj-text-inverse);\n background: var(--mj-brand-primary);\n border: none;\n border-radius: 6px;\n cursor: pointer;\n white-space: nowrap;\n transition: background 0.15s ease;\n}\n\n.new-entity-preview-btn:hover:not(:disabled) {\n background: var(--mj-brand-primary-hover);\n}\n\n.new-entity-preview-btn:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.new-entity-dialog-done-btn {\n display: inline-flex;\n align-items: center;\n padding: 8px 16px;\n font-size: 13px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n background: transparent;\n border: 1px solid var(--mj-border-strong);\n border-radius: var(--mj-radius-md);\n cursor: pointer;\n transition: all 0.15s ease;\n}\n\n.new-entity-dialog-done-btn:hover {\n background: var(--mj-bg-surface-card);\n border-color: var(--mj-text-disabled);\n}\n\n/* Next steps callout inside dialog */\n.new-entity-next-steps {\n background: var(--mj-brand-primary-subtle);\n border: 1px solid color-mix(in srgb, var(--mj-brand-primary) 20%, transparent);\n border-radius: var(--mj-radius-md);\n padding: 14px 16px;\n}\n\n.new-entity-next-steps h4 {\n margin: 0 0 8px;\n font-size: 13px;\n font-weight: 600;\n color: var(--mj-brand-primary-hover);\n}\n\n.new-entity-next-steps h4 i {\n margin-right: 6px;\n}\n\n.new-entity-next-steps ol {\n margin: 0;\n padding-left: 20px;\n font-size: 13px;\n color: var(--mj-brand-primary-hover);\n line-height: 1.7;\n}\n\n/* DDL copy button */\n.ddl-copy-btn {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n padding: 3px 8px;\n font-size: 11px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n background: transparent;\n border: 1px solid var(--mj-border-strong);\n border-radius: var(--mj-radius-sm);\n cursor: pointer;\n transition: all 0.15s ease;\n}\n\n.ddl-copy-btn:hover {\n background: var(--mj-bg-surface-card);\n border-color: var(--mj-text-disabled);\n}\n\n/* DDL Preview */\n.ddl-warnings {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.ddl-warning {\n font-size: 12px;\n color: var(--mj-status-warning);\n background: var(--mj-status-warning-subtle);\n padding: 6px 10px;\n border-radius: var(--mj-radius-sm);\n border-left: 3px solid var(--mj-status-warning);\n}\n\n.ddl-warning i {\n margin-right: 4px;\n}\n\n.ddl-preview-block {\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md);\n overflow: hidden;\n max-height: 300px;\n display: flex;\n flex-direction: column;\n}\n\n.ddl-preview-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 8px 12px;\n background: var(--mj-bg-surface-card);\n border-bottom: 1px solid var(--mj-border-default);\n font-size: var(--mj-text-xs);\n font-weight: 600;\n color: var(--mj-text-secondary);\n}\n\n.ddl-preview-code {\n margin: 0;\n padding: 12px 16px;\n font-size: 12px;\n font-family: 'SF Mono', 'Fira Code', 'Cascadia Code', monospace;\n line-height: 1.6;\n color: var(--mj-text-primary);\n background: var(--mj-bg-surface);\n overflow: auto;\n white-space: pre-wrap;\n word-break: break-word;\n flex: 1;\n}\n\n@keyframes fadeIn {\n from { opacity: 0; }\n to { opacity: 1; }\n}\n\n/* Detail empty state */\n.detail-empty {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 64px 24px;\n text-align: center;\n color: var(--mj-text-disabled);\n}\n\n.detail-empty i {\n font-size: 36px;\n margin-bottom: 12px;\n color: var(--mj-text-disabled);\n}\n\n.detail-empty h3 {\n font-size: 18px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n margin: 0 0 6px;\n}\n\n.detail-empty p {\n font-size: 13px;\n margin: 0;\n max-width: 400px;\n}\n\n/* Detail table */\n.detail-table-head {\n display: flex;\n align-items: center;\n padding: 8px 16px;\n background: var(--mj-bg-page);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px 8px 0 0;\n font-size: 11px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.04em;\n color: var(--mj-text-secondary);\n}\n\n.detail-table-body {\n border: 1px solid var(--mj-border-default);\n border-top: none;\n border-radius: 0 0 8px 8px;\n overflow-y: auto;\n flex: 1;\n min-height: 0;\n}\n\n.detail-map-row {\n display: flex;\n align-items: center;\n padding: 10px 16px;\n border-bottom: 1px solid var(--mj-border-subtle);\n transition: background 0.15s;\n font-size: 13px;\n}\n\n.detail-map-row:last-child {\n border-bottom: none;\n}\n\n.detail-map-row:hover {\n background: var(--mj-bg-page);\n cursor: pointer;\n}\n\n.detail-map-row.sync-disabled {\n opacity: 0.5;\n}\n\n/* Column widths (shared between head and body) */\n.dt-col-toggle {\n width: 60px;\n flex-shrink: 0;\n}\n\n.dt-col-source {\n flex: 2;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n font-weight: 500;\n color: var(--mj-text-primary);\n}\n\n.dt-col-direction {\n width: 80px;\n flex-shrink: 0;\n text-align: center;\n}\n\n.dt-col-dest {\n flex: 2;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n color: var(--mj-text-primary);\n}\n\n.dt-col-meta {\n width: 80px;\n flex-shrink: 0;\n display: flex;\n align-items: center;\n gap: 6px;\n justify-content: flex-end;\n}\n\n/* Direction badge */\n.direction-badge {\n font-size: 11px;\n font-weight: 600;\n padding: 2px 8px;\n border-radius: 4px;\n white-space: nowrap;\n}\n\n/* Clickable direction toggle button */\nbutton.direction-toggle {\n border: 1px solid transparent;\n cursor: pointer;\n transition: border-color 0.15s, box-shadow 0.15s;\n}\nbutton.direction-toggle:hover {\n border-color: var(--mj-border-strong);\n box-shadow: 0 0 0 2px color-mix(in srgb, var(--mj-brand-primary) 12%, transparent);\n}\n\n.direction-badge.pull {\n background: var(--mj-status-info-bg);\n color: var(--mj-brand-primary);\n}\n\n.direction-badge.push {\n background: var(--mj-status-success-bg);\n color: var(--mj-status-success);\n}\n\n.direction-badge.bidirectional {\n background: var(--mj-status-warning-subtle);\n color: var(--mj-status-warning);\n}\n\n/* Create Tables list */\n.create-tables-list {\n max-height: 300px;\n overflow-y: auto;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n margin-top: 8px;\n background: var(--mj-bg-surface);\n}\n.create-tables-select-all {\n padding: 8px 12px;\n border-bottom: 1px solid var(--mj-border-default);\n background: var(--mj-bg-surface-card);\n font-weight: 600;\n}\n.create-tables-checkbox {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 6px 12px;\n cursor: pointer;\n font-size: 13px;\n color: var(--mj-text-primary);\n}\n.create-tables-checkbox:hover {\n background: var(--mj-bg-surface-hover);\n}\n.create-tables-checkbox input[type=\"checkbox\"] {\n width: 16px;\n height: 16px;\n cursor: pointer;\n}\n.create-tables-name-hint {\n color: var(--mj-text-muted);\n font-size: 11px;\n margin-left: 8px;\n}\n.create-tables-filters {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 8px 0;\n flex-wrap: wrap;\n}\n.create-tables-search {\n flex: 1 1 240px;\n min-width: 200px;\n}\n.create-tables-toggle {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n font-size: 12px;\n color: var(--mj-text-secondary);\n cursor: pointer;\n}\n.create-tables-toggle input[type=\"checkbox\"] {\n margin: 0;\n}\n.create-tables-badge {\n display: inline-block;\n margin-left: 6px;\n padding: 1px 6px;\n font-size: 10px;\n font-weight: 600;\n border-radius: 10px;\n text-transform: uppercase;\n letter-spacing: 0.3px;\n line-height: 1.4;\n}\n.create-tables-badge-custom {\n background: color-mix(in srgb, var(--mj-brand-primary) 12%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n}\n.create-tables-badge-registered {\n background: var(--mj-status-success-bg);\n color: var(--mj-status-success-text);\n}\n.add-map-input {\n width: 100%;\n padding: 6px 10px;\n border: 1px solid var(--mj-border-default);\n border-radius: 4px;\n font-size: 13px;\n background: var(--mj-bg-surface);\n color: var(--mj-text-primary);\n}\n.add-map-input:focus {\n outline: none;\n border-color: var(--mj-brand-primary);\n box-shadow: 0 0 0 2px color-mix(in srgb, var(--mj-brand-primary) 15%, transparent);\n}\n\n/* Config badges */\n.detail-config-badge {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 24px;\n height: 24px;\n border-radius: 4px;\n background: var(--mj-bg-surface-active);\n color: var(--mj-text-disabled);\n font-size: 11px;\n}\n\n/* Detail back button (icon-only) */\n.detail-back-btn {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 36px;\n height: 36px;\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n background: var(--mj-bg-surface);\n color: var(--mj-text-secondary);\n cursor: pointer;\n font-size: 16px;\n transition: background 0.15s, color 0.15s, border-color 0.15s;\n flex-shrink: 0;\n}\n\n.detail-back-btn:hover {\n background: var(--mj-bg-surface-hover);\n color: var(--mj-text-primary);\n border-color: var(--mj-border-strong);\n}\n\n/* Detail edit button (icon-only) */\n.detail-edit-btn {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 36px;\n height: 36px;\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n background: var(--mj-bg-surface);\n color: var(--mj-text-secondary);\n cursor: pointer;\n font-size: 14px;\n transition: background 0.15s, color 0.15s, border-color 0.15s;\n flex-shrink: 0;\n}\n\n.detail-edit-btn:hover {\n background: var(--mj-bg-surface-hover);\n color: var(--mj-text-primary);\n border-color: var(--mj-border-strong);\n}\n\n/* Chevron hint on entity map rows */\n.map-edit-hint {\n color: var(--mj-text-disabled);\n font-size: 11px;\n transition: color 0.15s;\n}\n\n.detail-map-row:hover .map-edit-hint {\n color: var(--mj-brand-primary);\n}\n\n/* Entity map editor header */\n.ve-header-title-inline {\n display: flex;\n align-items: center;\n gap: 10px;\n font-size: 16px;\n font-weight: 600;\n}\n\n.ve-source-label {\n color: var(--mj-brand-primary);\n}\n\n.ve-direction-icon {\n color: var(--mj-text-disabled);\n font-size: 14px;\n}\n\n.ve-dest-label {\n color: var(--mj-status-success);\n}\n\n.ve-stat-inline {\n font-size: 13px;\n color: var(--mj-text-muted);\n}\n\n.ve-stat-inline strong {\n color: var(--mj-text-primary);\n font-weight: 600;\n}\n\n.detail-table-empty {\n padding: 24px;\n text-align: center;\n color: var(--mj-text-disabled);\n font-size: 13px;\n}\n\n/* ---------------------------------------------------------------------------\n Discovered Source Objects Section\n --------------------------------------------------------------------------- */\n\n.discovered-objects-section {\n margin: 12px 0;\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n background: var(--mj-bg-surface);\n overflow: hidden;\n}\n\n.discovered-objects-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 10px 14px;\n background: var(--mj-bg-surface-card);\n border-bottom: 1px solid var(--mj-border-subtle);\n}\n\n.discovered-objects-title {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 13px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.discovered-objects-title i {\n color: var(--mj-brand-primary);\n}\n\n.discovered-count {\n font-weight: 400;\n color: var(--mj-text-muted);\n font-size: 12px;\n}\n\n.discovered-objects-actions {\n display: flex;\n gap: 8px;\n}\n\n.discovered-action-btn {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n background: none;\n border: 1px solid var(--mj-border-default);\n border-radius: 4px;\n padding: 3px 10px;\n font-size: 12px;\n color: var(--mj-text-secondary);\n cursor: pointer;\n transition: background 0.15s, color 0.15s;\n}\n\n.discovered-action-btn:hover {\n background: var(--mj-bg-surface-hover);\n color: var(--mj-text-primary);\n}\n\n.discovered-action-btn:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.discovered-loading,\n.discovered-empty {\n padding: 16px;\n text-align: center;\n font-size: 13px;\n color: var(--mj-text-muted);\n}\n\n.discovered-loading i {\n margin-right: 6px;\n}\n\n.discovered-objects-list {\n max-height: 280px;\n overflow-y: auto;\n}\n\n.discovered-object-row {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 7px 14px;\n cursor: pointer;\n transition: background 0.1s;\n border-bottom: 1px solid var(--mj-border-subtle);\n font-size: 13px;\n}\n\n.discovered-object-row:last-child {\n border-bottom: none;\n}\n\n.discovered-object-row:hover {\n background: var(--mj-bg-surface-hover);\n}\n\n.discovered-object-row.selected {\n background: color-mix(in srgb, var(--mj-brand-primary) 6%, var(--mj-bg-surface));\n}\n\n.discovered-object-row input[type=\"checkbox\"] {\n flex-shrink: 0;\n width: 16px;\n height: 16px;\n accent-color: var(--mj-brand-primary);\n cursor: pointer;\n}\n\n.discovered-object-name {\n flex: 1;\n color: var(--mj-text-primary);\n font-weight: 500;\n}\n\n.discovered-object-api-name {\n flex: 1;\n color: var(--mj-text-muted);\n font-size: 12px;\n font-family: monospace;\n}\n\n.discovered-object-badges {\n display: flex;\n gap: 4px;\n}\n\n.discovered-badge {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 20px;\n height: 20px;\n border-radius: 4px;\n font-size: 10px;\n}\n\n.discovered-badge.incremental {\n color: var(--mj-status-success);\n background: var(--mj-status-success-bg);\n}\n\n.discovered-badge.writable {\n color: var(--mj-brand-primary);\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n}\n"] }]
3148
+ args: [{ standalone: false, selector: 'app-integration-connections', template: "<mj-page-layout>\n <mj-page-header\n Title=\"Integrations\"\n Icon=\"fa-solid fa-plug\"\n Subtitle=\"Connected systems and data sources\">\n @if (!WizardOpen && !SelectedSummary && Connections.length > 0) {\n <div meta>\n <mj-stat-badge\n [Count]=\"Connections.length\"\n [Label]=\"Connections.length === 1 ? 'integration' : 'integrations'\">\n </mj-stat-badge>\n </div>\n }\n <div actions>\n <mj-refresh-button [Loading]=\"IsLoading\" (Clicked)=\"LoadData()\"></mj-refresh-button>\n @if (!WizardOpen && !SelectedSummary) {\n <button mjButton variant=\"primary\" size=\"sm\" (click)=\"OpenWizard()\">\n <i class=\"fa-solid fa-plus\"></i> Add Integration\n </button>\n }\n </div>\n </mj-page-header>\n\n <mj-page-body [Flex]=\"true\" [Padding]=\"false\">\n<!-- Main container -->\n<div class=\"connections-container\" [class.detail-active]=\"!!SelectedSummary\"\n [class.editor-active]=\"!!EditorEntityMap\">\n\n <!-- ======================================================================\n CARD GRID VIEW (shown when no wizard and no detail selected)\n ====================================================================== -->\n @if (!WizardOpen && !SelectedSummary) {\n <!-- Loading state -->\n @if (IsLoading) {\n <div class=\"loading-container\">\n <mj-loading text=\"Loading integrations...\"></mj-loading>\n </div>\n }\n\n <!-- Empty state -->\n @if (!IsLoading && Connections.length === 0) {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-plug empty-icon\"></i>\n <h3>No integrations yet</h3>\n <p>Connect your first external system to start syncing data.</p>\n <button mjButton variant=\"primary\" (click)=\"OpenWizard()\">\n <i class=\"fa-solid fa-plus\"></i>\n Add Your First Integration\n </button>\n </div>\n }\n\n <!-- Card grid -->\n @if (!IsLoading && Connections.length > 0) {\n <div class=\"card-grid\">\n @for (summary of Connections; track summary.Integration.ID) {\n <div class=\"connection-card\">\n <!-- Card header + body: clickable to open detail view -->\n <div class=\"card-clickable\" (click)=\"SelectIntegrationCard(summary)\">\n <div class=\"card-header\">\n <div class=\"icon-circle\" [style.background-color]=\"GetIconBrandColor(summary.Integration.Integration)\">\n <i [class]=\"GetIntegrationIcon(summary.Integration.Integration, summary.Icon)\" class=\"icon-large\"></i>\n </div>\n <span [class]=\"GetStatusBadgeClass(summary)\">{{ GetStatusBadge(summary) }}</span>\n </div>\n\n <!-- Card body -->\n <div class=\"card-body\">\n <div class=\"card-name\">{{ summary.Integration.Name }}</div>\n <div class=\"card-company\">{{ summary.Integration.Company }}</div>\n <div class=\"card-meta\">\n <span class=\"meta-label\">{{ GetSourceTypeLabel(summary) }}</span>\n <span class=\"meta-separator\">&middot;</span>\n <span class=\"meta-value\">{{ GetCredentialHint(summary) }}</span>\n </div>\n <div class=\"card-sync-info\">\n <i class=\"fa-solid fa-arrows-rotate\"></i>\n Syncing {{ GetEntityMapCount(summary.Integration.ID) }} entities\n </div>\n\n <!-- Inline test result -->\n @if (GetCardTestResult(summary.Integration.ID); as testResult) {\n <div class=\"card-test-result\" [class.test-success]=\"testResult.Success\" [class.test-failure]=\"!testResult.Success\">\n @if (testResult.Success) {\n <i class=\"fa-solid fa-circle-check\"></i>\n } @else {\n <i class=\"fa-solid fa-circle-xmark\"></i>\n }\n <span>{{ testResult.Message }}</span>\n </div>\n }\n </div>\n </div><!-- /card-clickable -->\n\n <!-- Delete confirmation overlay -->\n @if (IsDeleteConfirming(summary.Integration.ID)) {\n <div class=\"delete-confirm-overlay\">\n <div class=\"delete-confirm-content\">\n <i class=\"fa-solid fa-triangle-exclamation delete-warn-icon\"></i>\n <span class=\"delete-confirm-text\">Delete this integration and all its entity maps?</span>\n <div class=\"delete-confirm-actions\">\n <button mjButton\n variant=\"danger\"\n [disabled]=\"IsDeleting\"\n (click)=\"ConfirmDelete(summary.Integration.ID)\">\n @if (IsDeleting) {\n <i class=\"fa-solid fa-spinner fa-spin\"></i>\n Deleting...\n } @else {\n Delete\n }\n </button>\n <button mjButton variant=\"outline\" (click)=\"CancelDelete()\">\n Cancel\n </button>\n </div>\n </div>\n </div>\n }\n\n <!-- Card footer -->\n <div class=\"card-footer\">\n <button mjButton\n variant=\"outline\"\n [disabled]=\"!!TestingCardID\"\n (click)=\"TestExistingConnection(summary.Integration.ID)\">\n @if (IsTestingCard(summary.Integration.ID)) {\n <i class=\"fa-solid fa-spinner fa-spin\"></i>\n } @else {\n Test\n }\n </button>\n <button mjButton variant=\"outline\" (click)=\"OnMenuAction('edit', summary)\">\n Configure\n </button>\n @if (IsConnectionActive(summary)) {\n <div class=\"sync-menu-wrapper\">\n <button mjButton variant=\"primary\"\n [disabled]=\"!!SyncingIntegrationID\"\n (click)=\"ToggleSyncMenu(summary.Integration.ID, $event)\">\n @if (IsSyncing(summary.Integration.ID)) {\n <i class=\"fa-solid fa-spinner fa-spin\"></i> Syncing...\n } @else {\n <i class=\"fa-solid fa-arrows-rotate\"></i> Sync\n <i class=\"fa-solid fa-chevron-down sync-caret\"></i>\n }\n </button>\n @if (SyncMenuIntegrationID === summary.Integration.ID) {\n <div class=\"sync-dropdown\">\n <div class=\"sync-dropdown-group\">\n <span class=\"sync-dropdown-label\">Pull (External \u2192 MJ)</span>\n <button class=\"sync-dropdown-item\" (click)=\"RunSyncWithDirection(summary.Integration.ID, false, 'Pull', $event)\">\n <i class=\"fa-solid fa-arrow-down-to-line\"></i> Incremental Pull\n </button>\n <button class=\"sync-dropdown-item\" (click)=\"RunSyncWithDirection(summary.Integration.ID, true, 'Pull', $event)\">\n <i class=\"fa-solid fa-rotate\"></i> Full Pull\n </button>\n </div>\n <div class=\"sync-dropdown-group\">\n <span class=\"sync-dropdown-label\">Push (MJ \u2192 External)</span>\n <button class=\"sync-dropdown-item\" (click)=\"RunSyncWithDirection(summary.Integration.ID, false, 'Push', $event)\">\n <i class=\"fa-solid fa-arrow-up-from-line\"></i> Incremental Push\n </button>\n <button class=\"sync-dropdown-item\" (click)=\"RunSyncWithDirection(summary.Integration.ID, true, 'Push', $event)\">\n <i class=\"fa-solid fa-rotate\"></i> Full Push\n </button>\n </div>\n <div class=\"sync-dropdown-group\">\n <span class=\"sync-dropdown-label\">Bidirectional</span>\n <button class=\"sync-dropdown-item\" (click)=\"RunSyncWithDirection(summary.Integration.ID, false, 'Bidirectional', $event)\">\n <i class=\"fa-solid fa-arrows-rotate\"></i> Incremental Both\n </button>\n <button class=\"sync-dropdown-item\" (click)=\"RunSyncWithDirection(summary.Integration.ID, true, 'Bidirectional', $event)\">\n <i class=\"fa-solid fa-rotate\"></i> Full Both\n </button>\n </div>\n </div>\n }\n </div>\n }\n <button class=\"card-delete-btn\" (click)=\"OnMenuAction('delete', summary)\" title=\"Delete integration\">\n <i class=\"fa-solid fa-trash-can\"></i>\n </button>\n </div>\n </div>\n }\n\n <!-- New connection card -->\n <div class=\"connection-card new-connection-card\" (click)=\"OpenWizard()\">\n <div class=\"new-card-content\">\n <div class=\"new-card-icon\">\n <i class=\"fa-solid fa-plus\"></i>\n </div>\n <span class=\"new-card-label\">Add Integration</span>\n </div>\n </div>\n </div>\n }\n }\n\n <!-- ======================================================================\n DETAIL VIEW (entity maps for selected integration)\n ====================================================================== -->\n @if (!WizardOpen && SelectedSummary) {\n <div class=\"detail-view\">\n\n <!-- ================================================================\n ENTITY MAP EDITOR (field mapping detail for a selected map)\n ================================================================ -->\n @if (EditorEntityMap) {\n <app-visual-field-editor\n [EntityMap]=\"EditorEntityMap\"\n [CompanyIntegrationID]=\"SelectedSummary!.Integration.ID\"\n [RunViewProvider]=\"RunViewToUse\"\n (Close)=\"CloseEntityMapEditor()\">\n </app-visual-field-editor>\n\n <!-- ================================================================\n ENTITY MAPS LIST (shown when no editor map is selected)\n ================================================================ -->\n } @else {\n <!-- Detail header -->\n <div class=\"detail-header\">\n <button class=\"detail-back-btn\" (click)=\"CloseDetailView()\" title=\"Back to Integrations\">\n <i class=\"fa-solid fa-arrow-left\"></i>\n </button>\n <div class=\"detail-header-info\">\n <div class=\"icon-circle\" [style.background-color]=\"GetIconBrandColor(SelectedSummary.Integration.Integration)\">\n <i [class]=\"GetIntegrationIcon(SelectedSummary.Integration.Integration)\" class=\"icon-large\"></i>\n </div>\n <div class=\"detail-header-text\">\n <h2 class=\"detail-title\">{{ SelectedSummary.Integration.Name }}</h2>\n <span class=\"detail-subtitle\">\n {{ SelectedSummary.Integration.Company }}\n <span class=\"meta-separator\">&middot;</span>\n {{ GetSourceTypeLabel(SelectedSummary) }}\n <span class=\"meta-separator\">&middot;</span>\n <span [class]=\"GetStatusBadgeClass(SelectedSummary)\">{{ GetStatusBadge(SelectedSummary) }}</span>\n </span>\n </div>\n </div>\n <div class=\"detail-header-actions\">\n <button class=\"detail-edit-btn\" (click)=\"OpenEditPanel(SelectedSummary)\" title=\"Configure\">\n <i class=\"fa-solid fa-pen-to-square\"></i>\n </button>\n @if (IsConnectionActive(SelectedSummary)) {\n <div class=\"sync-menu-wrapper\">\n <button mjButton variant=\"primary\"\n [disabled]=\"!!SyncingIntegrationID\"\n (click)=\"ToggleSyncMenu(SelectedSummary.Integration.ID, $event)\">\n @if (IsSyncing(SelectedSummary.Integration.ID)) {\n <i class=\"fa-solid fa-spinner fa-spin\"></i> Syncing...\n } @else {\n <i class=\"fa-solid fa-arrows-rotate\"></i> Sync\n <i class=\"fa-solid fa-chevron-down sync-caret\"></i>\n }\n </button>\n @if (SyncMenuIntegrationID === SelectedSummary.Integration.ID) {\n <div class=\"sync-dropdown sync-dropdown-left\">\n <div class=\"sync-dropdown-group\">\n <span class=\"sync-dropdown-label\">Pull (External \u2192 MJ)</span>\n <button class=\"sync-dropdown-item\" (click)=\"RunSyncWithDirection(SelectedSummary.Integration.ID, false, 'Pull', $event)\">\n <i class=\"fa-solid fa-arrow-down-to-line\"></i> Incremental Pull\n </button>\n <button class=\"sync-dropdown-item\" (click)=\"RunSyncWithDirection(SelectedSummary.Integration.ID, true, 'Pull', $event)\">\n <i class=\"fa-solid fa-rotate\"></i> Full Pull\n </button>\n </div>\n <div class=\"sync-dropdown-group\">\n <span class=\"sync-dropdown-label\">Push (MJ \u2192 External)</span>\n <button class=\"sync-dropdown-item\" (click)=\"RunSyncWithDirection(SelectedSummary.Integration.ID, false, 'Push', $event)\">\n <i class=\"fa-solid fa-arrow-up-from-line\"></i> Incremental Push\n </button>\n <button class=\"sync-dropdown-item\" (click)=\"RunSyncWithDirection(SelectedSummary.Integration.ID, true, 'Push', $event)\">\n <i class=\"fa-solid fa-rotate\"></i> Full Push\n </button>\n </div>\n <div class=\"sync-dropdown-group\">\n <span class=\"sync-dropdown-label\">Bidirectional</span>\n <button class=\"sync-dropdown-item\" (click)=\"RunSyncWithDirection(SelectedSummary.Integration.ID, false, 'Bidirectional', $event)\">\n <i class=\"fa-solid fa-arrows-rotate\"></i> Incremental Both\n </button>\n <button class=\"sync-dropdown-item\" (click)=\"RunSyncWithDirection(SelectedSummary.Integration.ID, true, 'Bidirectional', $event)\">\n <i class=\"fa-solid fa-rotate\"></i> Full Both\n </button>\n </div>\n </div>\n }\n </div>\n }\n </div>\n </div>\n\n <!-- Schedule section -->\n <div class=\"schedule-section\">\n <div class=\"schedule-section-header\">\n <div class=\"schedule-section-title\">\n <i class=\"fa-solid fa-calendar-check\"></i>\n <span>Sync Schedule</span>\n </div>\n </div>\n @if (ScheduledJobID) {\n <mj-scheduled-job-summary\n [ScheduledJobID]=\"ScheduledJobID\"\n (EditRequested)=\"OpenSchedulePanel()\">\n </mj-scheduled-job-summary>\n } @else {\n <div class=\"schedule-empty\">\n <span class=\"schedule-empty-text\">No sync schedule configured</span>\n <button class=\"schedule-create-btn\" (click)=\"OpenSchedulePanel()\">\n <i class=\"fa-solid fa-plus\"></i>\n Schedule Sync\n </button>\n </div>\n }\n </div>\n\n <!-- Schedule slide panel -->\n <mj-scheduled-job-slide-panel\n [IsOpen]=\"ShowScheduleSlidePanel\"\n [ScheduledJobID]=\"ScheduledJobID\"\n [JobTypeID]=\"IntegrationSyncJobTypeID\"\n [DefaultConfiguration]=\"ScheduleDefaultConfiguration\"\n [HideJobType]=\"true\"\n (Close)=\"CloseSchedulePanel()\"\n (Saved)=\"OnScheduleSaved()\"\n (Deleted)=\"OnScheduleDeleted()\">\n </mj-scheduled-job-slide-panel>\n\n <!-- Entity maps toolbar -->\n <div class=\"detail-toolbar\">\n <div class=\"detail-toolbar-left\">\n <span class=\"detail-map-count\">\n {{ DetailEntityMaps.length }} entity map{{ DetailEntityMaps.length !== 1 ? 's' : '' }}\n <span class=\"meta-separator\">&middot;</span>\n {{ DetailActiveMapCount }} active\n </span>\n </div>\n <div class=\"detail-toolbar-right\">\n <div class=\"detail-search\">\n <i class=\"fa-solid fa-filter\"></i>\n <input type=\"text\"\n placeholder=\"Filter entity maps...\"\n [value]=\"DetailSearchTerm\"\n (input)=\"OnDetailSearch($event)\" />\n </div>\n <button class=\"add-map-btn\" (click)=\"ToggleCreateTablesPanel()\" [class.active]=\"ShowCreateTablesPanel\"\n title=\"Select source objects and create entity tables\">\n <i class=\"fa-solid fa-table\"></i> Create Tables\n </button>\n <button class=\"add-map-btn\" (click)=\"ToggleAutoMapPanel()\" [class.active]=\"ShowAutoMapPanel\">\n <i class=\"fa-solid fa-wand-magic-sparkles\"></i> Auto-Map Schema\n </button>\n <button class=\"add-map-btn\" (click)=\"ToggleAddMapPanel()\" [class.active]=\"ShowAddMapPanel\">\n <i class=\"fa-solid fa-plus\"></i> Add Map\n </button>\n </div>\n </div>\n\n <!-- Sync result banner -->\n @if (SyncResult) {\n <div class=\"sync-result-banner\" [class.sync-success]=\"SyncResult.Success\" [class.sync-failure]=\"!SyncResult.Success\">\n @if (SyncResult.Success) {\n <i class=\"fa-solid fa-circle-check\"></i>\n } @else {\n <i class=\"fa-solid fa-circle-xmark\"></i>\n }\n <span>{{ SyncResult.Message || (SyncResult.Success ? 'Sync completed successfully' : 'Sync failed') }}</span>\n </div>\n }\n\n <!-- Auto-Map Schema panel -->\n @if (ShowAutoMapPanel) {\n <div class=\"add-map-panel\">\n <div class=\"auto-map-header\">\n <i class=\"fa-solid fa-wand-magic-sparkles\"></i>\n <span>Auto-map all entities in a schema to this integration with 1:1 field mappings</span>\n </div>\n <div class=\"add-map-row\">\n <div class=\"add-map-field\">\n <label class=\"add-map-label\">Target Schema</label>\n <select class=\"add-map-select\" [(ngModel)]=\"AutoMapSelectedSchema\">\n <option [ngValue]=\"''\" disabled>Select schema...</option>\n @for (schema of AutoMapSchemas; track schema) {\n <option [value]=\"schema\">{{ schema }}</option>\n }\n </select>\n </div>\n\n <div class=\"add-map-direction-col\">\n <label class=\"add-map-label\">Direction</label>\n <div class=\"add-map-direction-btns\">\n <button [class.active]=\"AutoMapDirection === 'Pull'\" (click)=\"AutoMapDirection = 'Pull'\" title=\"Pull from source\">\n <i class=\"fa-solid fa-arrow-right\"></i>\n </button>\n <button [class.active]=\"AutoMapDirection === 'Bidirectional'\" (click)=\"AutoMapDirection = 'Bidirectional'\" title=\"Bidirectional sync\">\n <i class=\"fa-solid fa-right-left\"></i>\n </button>\n <button [class.active]=\"AutoMapDirection === 'Push'\" (click)=\"AutoMapDirection = 'Push'\" title=\"Push to source\">\n <i class=\"fa-solid fa-arrow-left\"></i>\n </button>\n </div>\n </div>\n\n <div class=\"add-map-actions\">\n <button class=\"add-map-save-btn\"\n [disabled]=\"!CanAutoMap\"\n (click)=\"RunAutoMap()\">\n @if (IsAutoMapping) {\n <i class=\"fa-solid fa-spinner fa-spin\"></i> Mapping...\n } @else {\n <i class=\"fa-solid fa-wand-magic-sparkles\"></i> Auto-Map\n }\n </button>\n <button class=\"add-map-cancel-btn\" (click)=\"CloseAutoMapPanel()\">\n <i class=\"fa-solid fa-xmark\"></i>\n </button>\n </div>\n </div>\n\n @if (AutoMapResult) {\n <div class=\"auto-map-result\" [class.auto-map-success]=\"AutoMapResult.Errors.length === 0\"\n [class.auto-map-partial]=\"AutoMapResult.Errors.length > 0 && AutoMapResult.EntityMapsCreated > 0\"\n [class.auto-map-failure]=\"AutoMapResult.EntityMapsCreated === 0 && AutoMapResult.Errors.length > 0\">\n @if (AutoMapResult.EntityMapsCreated > 0) {\n <div class=\"auto-map-result-summary\">\n <i class=\"fa-solid fa-circle-check\"></i>\n Created {{ AutoMapResult.EntityMapsCreated }} entity map{{ AutoMapResult.EntityMapsCreated !== 1 ? 's' : '' }}\n with {{ AutoMapResult.FieldMapsCreated }} field map{{ AutoMapResult.FieldMapsCreated !== 1 ? 's' : '' }}\n </div>\n } @else if (AutoMapResult.Errors.length === 0) {\n <div class=\"auto-map-result-summary\">\n <i class=\"fa-solid fa-circle-info\"></i>\n All entities in this schema are already mapped.\n </div>\n }\n @if (AutoMapResult.Errors.length > 0) {\n <div class=\"auto-map-errors\">\n @for (err of AutoMapResult.Errors; track err) {\n <div class=\"auto-map-error\"><i class=\"fa-solid fa-triangle-exclamation\"></i> {{ err }}</div>\n }\n </div>\n }\n </div>\n }\n </div>\n }\n\n <!-- Create Tables panel (select source objects \u2192 create entity tables) -->\n @if (ShowCreateTablesPanel) {\n <div class=\"add-map-panel\">\n <div class=\"auto-map-header\">\n <i class=\"fa-solid fa-table\"></i>\n <span>Select source objects to create as entity tables in your database</span>\n </div>\n\n <div class=\"add-map-row\">\n <div class=\"add-map-actions\">\n <button class=\"add-map-save-btn\"\n [disabled]=\"!CanCreateTables\"\n (click)=\"RunCreateTables()\">\n @if (IsCreatingTables) {\n <i class=\"fa-solid fa-spinner fa-spin\"></i> Creating...\n } @else {\n <i class=\"fa-solid fa-table\"></i> Create {{ CreateTablesSelectedCount }} Table{{ CreateTablesSelectedCount !== 1 ? 's' : '' }}\n }\n </button>\n <button class=\"add-map-cancel-btn\" (click)=\"CloseCreateTablesPanel()\">\n <i class=\"fa-solid fa-xmark\"></i>\n </button>\n </div>\n </div>\n\n @if (IsLoadingCreateTablesObjects) {\n <mj-loading text=\"Loading source objects...\" size=\"small\"></mj-loading>\n } @else if (CreateTablesObjects.length === 0) {\n <div class=\"auto-map-result auto-map-success\">\n <i class=\"fa-solid fa-circle-info\"></i>\n No source objects available from this connector.\n </div>\n } @else {\n <div class=\"create-tables-filters\">\n <input type=\"text\"\n class=\"create-tables-search mj-input\"\n placeholder=\"Search by name or label...\"\n [(ngModel)]=\"CreateTablesSearch\" />\n </div>\n <div class=\"create-tables-list\">\n <div class=\"create-tables-select-all\">\n <label class=\"create-tables-checkbox\">\n <input type=\"checkbox\"\n [checked]=\"FilteredCreateTablesObjects.length > 0 && CreateTablesSelectedCount === FilteredCreateTablesObjects.length\"\n (change)=\"ToggleAllCreateTablesObjects($any($event.target).checked)\" />\n <span>Select All ({{ FilteredCreateTablesObjects.length }} of {{ CreateTablesObjects.length }})</span>\n </label>\n </div>\n @for (obj of FilteredCreateTablesObjects; track obj.Name) {\n <label class=\"create-tables-checkbox\">\n <input type=\"checkbox\" [(ngModel)]=\"obj.Selected\" />\n <span>{{ obj.Label }}</span>\n @if (obj.Label !== obj.Name) {\n <span class=\"create-tables-name-hint\">{{ obj.Name }}</span>\n }\n @if (obj.IsCustom) {\n <span class=\"create-tables-badge create-tables-badge-custom\">Custom</span>\n }\n @if (obj.AlreadyPersisted) {\n <span class=\"create-tables-badge create-tables-badge-registered\">Registered</span>\n }\n </label>\n }\n </div>\n }\n\n @if (CreateTablesResult) {\n <div class=\"auto-map-result\"\n [class.auto-map-success]=\"CreateTablesResult.Success\"\n [class.auto-map-failure]=\"!CreateTablesResult.Success\">\n @if (CreateTablesResult.Success) {\n <i class=\"fa-solid fa-circle-check\"></i>\n } @else {\n <i class=\"fa-solid fa-circle-xmark\"></i>\n }\n <span>{{ CreateTablesResult.Message }}</span>\n </div>\n }\n </div>\n }\n\n <!-- Add Entity Map inline form -->\n @if (ShowAddMapPanel) {\n <div class=\"add-map-panel\">\n <div class=\"add-map-row\">\n <div class=\"add-map-field\">\n <label class=\"add-map-label\">Source Object</label>\n @if (IsLoadingSourceObjects) {\n <div class=\"add-map-loading\"><i class=\"fa-solid fa-spinner fa-spin\"></i> Loading...</div>\n } @else if (AvailableSourceObjects.length === 0) {\n <div class=\"add-map-hint\">No source objects found in metadata</div>\n } @else {\n <select class=\"add-map-select\" [(ngModel)]=\"AddMapSourceObjectName\">\n <option [ngValue]=\"''\" disabled>Select source object...</option>\n @for (obj of AvailableSourceObjects; track obj.Name) {\n <option [value]=\"obj.Name\">{{ obj.Label || obj.Name }}</option>\n }\n </select>\n }\n </div>\n\n <div class=\"add-map-direction-col\">\n <label class=\"add-map-label\">Direction</label>\n <div class=\"add-map-direction-btns\">\n <button [class.active]=\"AddMapDirection === 'Pull'\" (click)=\"AddMapDirection = 'Pull'\" title=\"Pull from source\">\n <i class=\"fa-solid fa-arrow-right\"></i>\n </button>\n <button [class.active]=\"AddMapDirection === 'Bidirectional'\" (click)=\"AddMapDirection = 'Bidirectional'\" title=\"Bidirectional sync\">\n <i class=\"fa-solid fa-right-left\"></i>\n </button>\n <button [class.active]=\"AddMapDirection === 'Push'\" (click)=\"AddMapDirection = 'Push'\" title=\"Push to source\">\n <i class=\"fa-solid fa-arrow-left\"></i>\n </button>\n </div>\n </div>\n\n <div class=\"add-map-field add-map-entity-field\">\n <label class=\"add-map-label\">MJ Entity</label>\n <div class=\"entity-picker-row\">\n <mj-tree-dropdown\n #entityTreeDropdown\n [BranchConfig]=\"EntityBranchConfig\"\n [LeafConfig]=\"EntityLeafConfig\"\n [Value]=\"AddMapEntityIDAsKey\"\n [SelectableTypes]=\"'leaf'\"\n [SelectionMode]=\"'single'\"\n [Placeholder]=\"'Search entities by schema...'\"\n [EnableSearch]=\"true\"\n (SelectionChange)=\"OnEntityTreeSelection($event)\">\n </mj-tree-dropdown>\n <button class=\"new-entity-btn\" (click)=\"OpenNewEntityDialog()\" title=\"Create new entity table\">\n <i class=\"fa-solid fa-plus\"></i> New\n </button>\n </div>\n </div>\n\n <div class=\"add-map-actions\">\n <button class=\"add-map-save-btn\"\n [disabled]=\"!CanSaveAddMap || IsSavingAddMap\"\n (click)=\"SaveAddMap()\">\n @if (IsSavingAddMap) {\n <i class=\"fa-solid fa-spinner fa-spin\"></i>\n } @else {\n <i class=\"fa-solid fa-check\"></i> Add\n }\n </button>\n <button class=\"add-map-cancel-btn\" (click)=\"CloseAddMapPanel()\">\n <i class=\"fa-solid fa-xmark\"></i>\n </button>\n </div>\n </div>\n </div>\n }\n\n <!-- Entity maps table -->\n @if (IsDetailLoading) {\n <div class=\"loading-container\">\n <mj-loading text=\"Loading entity maps...\"></mj-loading>\n </div>\n } @else if (DetailEntityMaps.length === 0 && !ShowAddMapPanel) {\n <div class=\"detail-empty\">\n <i class=\"fa-solid fa-cube\"></i>\n <h3>No entity maps configured</h3>\n <p>Entity maps define how external objects sync to MJ entities.</p>\n <button class=\"add-map-btn add-map-btn-lg\" (click)=\"ToggleAddMapPanel()\">\n <i class=\"fa-solid fa-plus\"></i> Add Your First Entity Map\n </button>\n </div>\n } @else if (DetailEntityMaps.length > 0) {\n <!-- Table header -->\n <div class=\"detail-table-head\">\n <span class=\"dt-col-toggle\">Sync</span>\n <span class=\"dt-col-source\">External Object</span>\n <span class=\"dt-col-direction\"></span>\n <span class=\"dt-col-dest\">MJ Entity</span>\n <span class=\"dt-col-meta\">Config</span>\n </div>\n\n <!-- Table body -->\n <div class=\"detail-table-body\">\n @for (em of DetailFilteredMaps; track em.ID) {\n <div class=\"detail-map-row\" [class.sync-disabled]=\"!em.SyncEnabled\" (click)=\"OnEntityMapClick(em)\">\n <span class=\"dt-col-toggle\" (click)=\"$event.stopPropagation()\">\n <label class=\"toggle-switch\" [title]=\"em.SyncEnabled ? 'Sync enabled' : 'Sync disabled'\">\n <input type=\"checkbox\"\n [checked]=\"em.SyncEnabled\"\n (change)=\"OnToggleMapEnabled(em, $event)\" />\n <span class=\"toggle-slider\"></span>\n </label>\n </span>\n <span class=\"dt-col-source\" [title]=\"em.ExternalObjectName\">\n {{ em.ExternalObjectLabel ?? em.ExternalObjectName }}\n </span>\n <span class=\"dt-col-direction\" (click)=\"$event.stopPropagation()\">\n <button class=\"direction-toggle\" [class]=\"DirectionBadgeClass(em.SyncDirection)\"\n (click)=\"CycleSyncDirection(em)\"\n [title]=\"'Click to change sync direction (currently: ' + em.SyncDirection + ')'\">\n {{ DirectionText(em.SyncDirection) }}\n </button>\n </span>\n <span class=\"dt-col-dest\" [title]=\"em.Entity\">\n {{ em.Entity }}\n </span>\n <span class=\"dt-col-meta\">\n @if (em.MatchStrategy) {\n <span class=\"detail-config-badge\" title=\"Match strategy configured\">\n <i class=\"fa-solid fa-link\"></i>\n </span>\n }\n <span class=\"detail-config-badge\" [title]=\"'Conflict: ' + em.ConflictResolution\">\n <i class=\"fa-solid fa-arrows-rotate\"></i>\n </span>\n <span class=\"map-edit-hint\">\n <i class=\"fa-solid fa-chevron-right\"></i>\n </span>\n </span>\n </div>\n } @empty {\n <div class=\"detail-table-empty\">\n No entity maps match your filter.\n </div>\n }\n </div>\n }\n }\n\n </div>\n }\n\n <!-- ======================================================================\n WIZARD (inline, replaces card grid when open)\n ====================================================================== -->\n @if (WizardOpen) {\n <div class=\"wizard-inline\">\n <!-- Wizard header -->\n <div class=\"wizard-header\">\n <button class=\"wizard-back-btn\" (click)=\"CloseWizard()\">\n <i class=\"fa-solid fa-arrow-left\"></i>\n Back to Integrations\n </button>\n <h2 class=\"wizard-title\">New Integration</h2>\n </div>\n\n <!-- Step indicator -->\n <div class=\"step-indicator\">\n @for (step of WizardSteps; track step.Number) {\n <div class=\"step-item\" [class.step-active]=\"IsStepActive(step.Number)\" [class.step-completed]=\"IsStepCompleted(step.Number)\">\n <div class=\"step-circle\">\n @if (IsStepCompleted(step.Number)) {\n <i class=\"fa-solid fa-check\"></i>\n } @else {\n {{ step.Number }}\n }\n </div>\n <span class=\"step-label\">{{ step.Label }}</span>\n </div>\n @if (step.Number < WizardSteps.length) {\n <div class=\"step-line\" [class.step-line-active]=\"IsStepCompleted(step.Number)\"></div>\n }\n }\n </div>\n\n <!-- Step content -->\n <div class=\"wizard-body\">\n\n <!-- Step 1: Choose Integration -->\n @if (WizardStep === 1) {\n <div class=\"step-content\">\n <h3 class=\"step-title\">What system do you want to connect?</h3>\n <div class=\"search-bar\">\n <i class=\"fa-solid fa-search search-icon\"></i>\n <input type=\"text\"\n class=\"search-input\"\n placeholder=\"Search integrations...\"\n [(ngModel)]=\"SearchQuery\" />\n </div>\n\n @if (FilteredIntegrations.length === 0 && AvailableIntegrations.length === 0) {\n <div class=\"no-integrations\">\n <i class=\"fa-solid fa-puzzle-piece\"></i>\n <p>No integrations configured</p>\n <span class=\"no-integrations-hint\">Configure integration definitions in the admin area first.</span>\n </div>\n } @else if (FilteredIntegrations.length === 0) {\n <div class=\"no-integrations\">\n <i class=\"fa-solid fa-search\"></i>\n <p>No matching integrations</p>\n </div>\n } @else {\n <div class=\"integration-picker-grid\">\n @for (def of FilteredIntegrations; track def.ID) {\n <div class=\"integration-picker-card\"\n [class.picker-selected]=\"IsSelectedIntegration(def)\"\n (click)=\"SelectIntegration(def)\">\n <div class=\"picker-icon-circle\" [style.background-color]=\"GetIconBrandColor(def.Name)\">\n <i [class]=\"GetIntegrationIcon(def.Name, def.Get('Icon'))\"></i>\n </div>\n <div class=\"picker-name\">{{ def.Name }}</div>\n @if (def.Description) {\n <div class=\"picker-description\">{{ def.Description }}</div>\n }\n </div>\n }\n </div>\n }\n </div>\n }\n\n <!-- Step 2: Configure Connection -->\n @if (WizardStep === 2) {\n <div class=\"step-content\">\n <h3 class=\"step-title\">Set up your connection</h3>\n <div class=\"form-group\">\n <label class=\"form-label\" for=\"connectionName\">Connection Name</label>\n <input id=\"connectionName\"\n type=\"text\"\n class=\"form-input\"\n placeholder=\"e.g. Production HubSpot\"\n [(ngModel)]=\"ConnectionName\" />\n </div>\n\n <div class=\"form-group\">\n <label class=\"form-label\" for=\"companySelect\">Company</label>\n @if (NeedsCompanyPicker) {\n <select id=\"companySelect\" class=\"form-input\" [(ngModel)]=\"SelectedCompanyID\">\n <option [ngValue]=\"null\" disabled>Select a company...</option>\n @for (company of Companies; track company.ID) {\n <option [value]=\"company.ID\">{{ company.Name }}</option>\n }\n </select>\n } @else if (Companies.length === 1) {\n <input type=\"text\" class=\"form-input\" [value]=\"Companies[0].Name\" disabled />\n } @else {\n <div class=\"form-hint\">No companies available. Create one in the admin area.</div>\n }\n </div>\n\n <div class=\"form-group\">\n <label class=\"form-label\" for=\"connectionDescription\">Description <span class=\"optional-label\">(optional)</span></label>\n <textarea id=\"connectionDescription\"\n class=\"form-input form-textarea\"\n placeholder=\"Notes about this connection...\"\n [(ngModel)]=\"ConnectionDescription\"\n rows=\"3\"></textarea>\n </div>\n\n <!-- Credential section -->\n <div class=\"form-group\">\n <label class=\"form-label\">Credential</label>\n @if (SelectedCredential) {\n <div class=\"credential-selected\">\n <div class=\"credential-info\">\n <i class=\"fa-solid fa-key\"></i>\n <span>{{ SelectedCredential.Name }}</span>\n </div>\n <button class=\"credential-clear\" (click)=\"ClearCredential()\">\n <i class=\"fa-solid fa-xmark\"></i>\n </button>\n </div>\n } @else {\n <div class=\"credential-actions\">\n <button mjButton variant=\"outline\" (click)=\"ShowExistingCredentials()\">\n <i class=\"fa-solid fa-key\"></i>\n Choose Existing Credential\n </button>\n <button mjButton variant=\"outline\" (click)=\"OpenCredentialDialog()\">\n <i class=\"fa-solid fa-plus\"></i>\n Create New Credential\n </button>\n </div>\n }\n\n @if (IsLoadingCredentials) {\n <div class=\"credential-loading\">\n <mj-loading text=\"Loading credentials...\" size=\"small\"></mj-loading>\n </div>\n }\n\n @if (!IsLoadingCredentials && ExistingCredentials.length > 0 && !SelectedCredential) {\n <div class=\"credential-list\">\n @for (cred of ExistingCredentials; track cred.ID) {\n <div class=\"credential-list-item\" (click)=\"SelectExistingCredential(cred)\">\n <i class=\"fa-solid fa-key\"></i>\n <span>{{ cred.Name }}</span>\n </div>\n }\n </div>\n }\n </div>\n </div>\n }\n\n <!-- Step 3: Test Connection -->\n @if (WizardStep === 3) {\n <div class=\"step-content step-content-centered\">\n <h3 class=\"step-title\">Let's verify everything works</h3>\n\n @if (!TestResult && !IsTesting) {\n <div class=\"test-prompt\">\n <button mjButton\n variant=\"primary\"\n size=\"lg\"\n (click)=\"TestNewConnection()\">\n <i class=\"fa-solid fa-vial\"></i>\n Test Connection\n </button>\n <p class=\"test-hint\">We'll verify we can reach your system and authenticate.</p>\n </div>\n }\n\n @if (IsTesting) {\n <div class=\"test-running\">\n <div class=\"test-spinner\">\n <i class=\"fa-solid fa-spinner fa-spin fa-3x\"></i>\n </div>\n <p>Testing connection...</p>\n </div>\n }\n\n @if (TestResult) {\n <div class=\"test-result\" [class.test-result-success]=\"TestResult.Success\" [class.test-result-failure]=\"!TestResult.Success\">\n <div class=\"test-result-icon\">\n @if (TestResult.Success) {\n <i class=\"fa-solid fa-circle-check\"></i>\n } @else {\n <i class=\"fa-solid fa-circle-xmark\"></i>\n }\n </div>\n <div class=\"test-result-message\">{{ TestResult.Message }}</div>\n @if (TestResult.Success && TestResult.ServerVersion) {\n <div class=\"test-result-detail\">\n Server version: {{ TestResult.ServerVersion }}\n </div>\n }\n @if (!TestResult.Success) {\n <button mjButton variant=\"outline\" (click)=\"TestNewConnection()\" class=\"test-retry-btn\">\n <i class=\"fa-solid fa-rotate-right\"></i>\n Retry\n </button>\n }\n </div>\n }\n </div>\n }\n\n </div>\n\n <!-- Wizard footer -->\n <div class=\"wizard-footer\">\n <div class=\"footer-left\"></div>\n <div class=\"footer-right\">\n @if (WizardStep > 1) {\n <button mjButton variant=\"outline\" (click)=\"PreviousStep()\">\n Back\n </button>\n }\n <button mjButton\n variant=\"primary\"\n [disabled]=\"IsNextDisabled || IsSaving\"\n (click)=\"FinishWizard()\">\n @if (IsSaving) {\n <i class=\"fa-solid fa-spinner fa-spin\"></i>\n Saving...\n } @else {\n {{ NextButtonLabel }}\n }\n </button>\n </div>\n </div>\n </div>\n }\n\n</div>\n\n<!-- Edit panel (slide-in) -->\n<div class=\"edit-panel-backdrop\"\n [class.open]=\"EditPanelOpen\"\n (click)=\"CloseEditPanel()\"></div>\n<div class=\"edit-panel\" [class.open]=\"EditPanelOpen\">\n @if (EditingSummary) {\n <!-- Header -->\n <div class=\"edit-panel-header\">\n <div class=\"edit-panel-title\">\n <div class=\"edit-icon-circle\"\n [style.background-color]=\"GetIconBrandColor(EditingSummary.Integration.Integration)\">\n <i [class]=\"GetIntegrationIcon(EditingSummary.Integration.Integration, EditingSummary.Icon)\"></i>\n </div>\n <span>Configure Integration</span>\n </div>\n <button class=\"edit-close-btn\" (click)=\"CloseEditPanel()\">\n <i class=\"fa-solid fa-xmark\"></i>\n </button>\n </div>\n\n @if (IsEditLoading) {\n <div class=\"edit-panel-loading\">\n <mj-loading text=\"Loading...\" size=\"small\"></mj-loading>\n </div>\n } @else {\n <!-- Edit form -->\n <div class=\"edit-panel-body\">\n <div class=\"edit-form-group\">\n <label class=\"edit-form-label\">Connection Name</label>\n <input type=\"text\"\n class=\"edit-form-input\"\n [(ngModel)]=\"EditName\"\n placeholder=\"Connection name...\" />\n </div>\n\n <div class=\"edit-form-group\">\n <label class=\"edit-form-label\">Status</label>\n <div class=\"edit-toggle-row\">\n <label class=\"toggle-switch\">\n <input type=\"checkbox\" [(ngModel)]=\"EditIsActive\" />\n <span class=\"toggle-slider\"></span>\n </label>\n <span class=\"edit-toggle-label\" [class.active]=\"EditIsActive\">\n {{ EditIsActive ? 'Active' : 'Inactive' }}\n </span>\n </div>\n </div>\n\n <div class=\"edit-form-group\">\n <label class=\"edit-form-label\">Credential</label>\n @if (EditCredential) {\n <div class=\"edit-credential-selected\">\n <div class=\"edit-credential-info\">\n <i class=\"fa-solid fa-key\"></i>\n <span>{{ EditCredential.Name }}</span>\n </div>\n <button class=\"edit-credential-clear\" (click)=\"ClearEditCredential()\">\n <i class=\"fa-solid fa-xmark\"></i>\n </button>\n </div>\n } @else {\n <div class=\"edit-credential-actions\">\n <button mjButton variant=\"outline\" size=\"sm\" (click)=\"OpenEditCredentialDialog()\">\n <i class=\"fa-solid fa-plus\"></i> New Credential\n </button>\n </div>\n @if (EditCredentials.length > 0) {\n <div class=\"edit-credential-list\">\n @for (cred of EditCredentials; track cred.ID) {\n <div class=\"edit-credential-item\" (click)=\"SelectEditCredential(cred)\">\n <i class=\"fa-solid fa-key\"></i>\n <span>{{ cred.Name }}</span>\n </div>\n }\n </div>\n }\n }\n </div>\n\n <div class=\"edit-form-group\">\n <label class=\"edit-form-label\">Integration</label>\n <div class=\"edit-readonly-field\">\n {{ EditingSummary.Integration.Integration }}\n </div>\n </div>\n\n <div class=\"edit-form-group\">\n <label class=\"edit-form-label\">Company</label>\n <div class=\"edit-readonly-field\">\n {{ EditingSummary.Integration.Company }}\n </div>\n </div>\n </div>\n\n <!-- Footer -->\n <div class=\"edit-panel-footer\">\n <button mjButton\n variant=\"primary\"\n [disabled]=\"IsEditSaving || !EditName.trim()\"\n (click)=\"SaveEditChanges()\">\n @if (IsEditSaving) {\n <i class=\"fa-solid fa-spinner fa-spin\"></i> Saving...\n } @else {\n Save Changes\n }\n </button>\n <button mjButton variant=\"outline\" (click)=\"CloseEditPanel()\">\n Cancel\n </button>\n </div>\n }\n }\n</div>\n\n<!-- Credential dialog (shared between wizard and edit panel) -->\n@if (ShowCredentialDialog) {\n <mj-credential-dialog\n [Visible]=\"true\"\n [PreselectedTypeId]=\"PreselectedCredentialTypeId\"\n (close)=\"EditPanelOpen ? OnEditCredentialDialogClose($event) : OnCredentialDialogClose($event)\">\n </mj-credential-dialog>\n}\n\n<!-- New Entity dialog -->\n@if (ShowCreateEntity) {\n <div class=\"new-entity-backdrop\" (click)=\"CloseNewEntityDialog()\"></div>\n <div class=\"new-entity-dialog\">\n <div class=\"new-entity-dialog-header\">\n <h3>Create New Entity Table</h3>\n <button class=\"new-entity-dialog-close\" (click)=\"CloseNewEntityDialog()\">\n <i class=\"fa-solid fa-xmark\"></i>\n </button>\n </div>\n <div class=\"new-entity-dialog-body\">\n <p class=\"new-entity-dialog-desc\">\n Generate a SQL migration to create a new database table for this integration's data.\n After running the migration and CodeGen, the new entity will appear in the entity picker.\n </p>\n\n <div class=\"new-entity-dialog-form\">\n <div class=\"new-entity-dialog-row\">\n <div class=\"new-entity-dialog-field\">\n <label class=\"new-entity-dialog-label\">Source Object</label>\n <div class=\"new-entity-dialog-value\">\n @if (AddMapSourceObjectName) {\n {{ AddMapSourceObjectName }}\n } @else {\n <span class=\"new-entity-dialog-hint\">Select a source object in the Add Map form first</span>\n }\n </div>\n </div>\n </div>\n <div class=\"new-entity-dialog-row\">\n <div class=\"new-entity-dialog-field\">\n <label class=\"new-entity-dialog-label\">Schema</label>\n <input type=\"text\"\n class=\"new-entity-dialog-input\"\n placeholder=\"e.g. hubspot\"\n [(ngModel)]=\"NewEntitySchema\" />\n </div>\n <span class=\"new-entity-dialog-dot\">.</span>\n <div class=\"new-entity-dialog-field new-entity-dialog-field-wide\">\n <label class=\"new-entity-dialog-label\">Table Name</label>\n <input type=\"text\"\n class=\"new-entity-dialog-input\"\n placeholder=\"e.g. Contact\"\n [(ngModel)]=\"NewEntityTable\" />\n </div>\n </div>\n </div>\n\n @if (DDLPreviewWarnings.length > 0) {\n <div class=\"ddl-warnings\">\n @for (warn of DDLPreviewWarnings; track warn) {\n <div class=\"ddl-warning\"><i class=\"fa-solid fa-triangle-exclamation\"></i> {{ warn }}</div>\n }\n </div>\n }\n\n @if (DDLPreview) {\n <div class=\"ddl-preview-block\">\n <div class=\"ddl-preview-header\">\n <span>SQL Preview</span>\n <button class=\"ddl-copy-btn\" (click)=\"CopyDDLToClipboard()\" title=\"Copy to clipboard\">\n @if (DDLCopied) {\n <i class=\"fa-solid fa-check\"></i> Copied\n } @else {\n <i class=\"fa-regular fa-copy\"></i> Copy\n }\n </button>\n </div>\n <pre class=\"ddl-preview-code\">{{ DDLPreview }}</pre>\n </div>\n }\n\n @if (DDLPreview) {\n <div class=\"new-entity-next-steps\">\n <h4><i class=\"fa-solid fa-list-check\"></i> Next Steps</h4>\n <ol>\n <li>Copy the SQL above and save it as a migration file</li>\n <li>Run the migration against your database</li>\n <li>Run CodeGen to register the new entity in MemberJunction</li>\n <li>Refresh the page &mdash; the new entity will appear in the entity picker</li>\n </ol>\n </div>\n }\n </div>\n <div class=\"new-entity-dialog-footer\">\n <button class=\"new-entity-preview-btn\"\n [disabled]=\"!CanGenerateSQL || IsGeneratingDDL\"\n (click)=\"PreviewDDL()\">\n @if (IsGeneratingDDL) {\n <i class=\"fa-solid fa-spinner fa-spin\"></i> Generating...\n } @else {\n <i class=\"fa-solid fa-code\"></i> Generate SQL\n }\n </button>\n <button class=\"new-entity-dialog-done-btn\" (click)=\"CloseNewEntityDialog()\">\n Done\n </button>\n </div>\n </div>\n}\n </mj-page-body>\n</mj-page-layout>\n", styles: ["/* ---------------------------------------------------------------------------\n Host & Container \u2014 flex chain for scrollable detail view\n --------------------------------------------------------------------------- */\n\n:host {\n display: flex;\n flex-direction: column;\n height: 100%;\n min-height: 0;\n overflow: hidden;\n}\n\n/* Slot passthrough now in <mj-page-header>; stat badges now via <mj-stat-badge>. */\n\n.connections-container {\n padding: 24px;\n max-width: 1400px;\n width: 100%;\n margin: 0 auto;\n flex: 1;\n display: flex;\n flex-direction: column;\n min-height: 0;\n overflow-y: auto;\n box-sizing: border-box;\n}\n\n/* When detail or editor view is active, prevent container scrolling\n so the inner .detail-table-body handles its own scroll */\n.connections-container.detail-active,\n.connections-container.editor-active {\n overflow: hidden;\n}\n\n/* ---------------------------------------------------------------------------\n Loading & Empty States\n --------------------------------------------------------------------------- */\n\n.loading-container {\n display: flex;\n justify-content: center;\n align-items: center;\n min-height: 300px;\n}\n\n.empty-state {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n min-height: 400px;\n text-align: center;\n color: var(--mj-text-muted);\n}\n\n.empty-icon {\n font-size: 48px;\n color: var(--mj-text-disabled);\n margin-bottom: 16px;\n}\n\n.empty-state h3 {\n font-size: 20px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n margin: 0 0 8px;\n}\n\n.empty-state p {\n font-size: 14px;\n margin: 0 0 24px;\n}\n\n/* ---------------------------------------------------------------------------\n Card Grid\n --------------------------------------------------------------------------- */\n\n.card-grid {\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));\n gap: 20px;\n}\n\n/* ---------------------------------------------------------------------------\n Connection Card\n --------------------------------------------------------------------------- */\n\n.connection-card {\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 12px;\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.06);\n transition: box-shadow 0.2s ease, transform 0.2s ease;\n display: flex;\n flex-direction: column;\n position: relative;\n overflow: hidden;\n}\n\n.connection-card:hover {\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);\n transform: translateY(-2px);\n}\n\n/* Card Header */\n.card-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 16px 16px 0;\n}\n\n.icon-circle {\n width: 48px;\n height: 48px;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--mj-text-inverse);\n flex-shrink: 0;\n}\n\n.icon-large {\n font-size: 22px;\n}\n\n/* Status Badge */\n.status-badge {\n font-size: 12px;\n font-weight: 600;\n padding: 4px 10px;\n border-radius: 20px;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.status-badge-connected {\n background: var(--mj-status-success-bg);\n color: var(--mj-status-success);\n}\n\n.status-badge-error {\n background: var(--mj-status-error-bg);\n color: var(--mj-status-error);\n}\n\n.status-badge-inactive {\n background: var(--mj-bg-surface-hover);\n color: var(--mj-text-muted);\n}\n\n.status-badge-syncing {\n background: var(--mj-status-info-bg);\n color: var(--mj-brand-primary);\n}\n\n/* Card Body */\n.card-body {\n padding: 12px 16px;\n flex: 1;\n}\n\n.card-name {\n font-size: 18px;\n font-weight: 700;\n color: var(--mj-text-primary);\n margin-bottom: 2px;\n}\n\n.card-company {\n font-size: 14px;\n color: var(--mj-text-disabled);\n margin-bottom: 10px;\n}\n\n.card-meta {\n font-size: 13px;\n color: var(--mj-text-muted);\n margin-bottom: 6px;\n}\n\n.meta-separator {\n margin: 0 6px;\n}\n\n.meta-label {\n font-weight: 500;\n}\n\n.card-sync-info {\n font-size: 13px;\n color: var(--mj-text-muted);\n margin-bottom: 8px;\n}\n\n.card-sync-info i {\n margin-right: 4px;\n color: var(--mj-text-disabled);\n}\n\n/* Card inline test result */\n.card-test-result {\n font-size: 12px;\n padding: 6px 10px;\n border-radius: 6px;\n display: flex;\n align-items: center;\n gap: 6px;\n margin-top: 8px;\n}\n\n.card-test-result.test-success {\n background: var(--mj-status-success-bg);\n color: var(--mj-status-success);\n}\n\n.card-test-result.test-failure {\n background: var(--mj-status-error-bg);\n color: var(--mj-status-error);\n}\n\n.card-test-result span {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n/* Card Footer */\n.card-footer {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 12px 16px;\n border-top: 1px solid var(--mj-border-subtle);\n}\n\n.card-footer button {\n font-size: 13px;\n}\n\n/* Sync dropdown menu */\n.sync-menu-wrapper {\n position: relative;\n display: inline-flex;\n}\n\n.sync-caret {\n font-size: 10px;\n margin-left: 4px;\n opacity: 0.8;\n}\n\n.sync-dropdown {\n position: absolute;\n top: calc(100% + 4px);\n left: 0;\n z-index: 1000;\n background: var(--mj-bg-surface-elevated);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n box-shadow: 0 8px 24px rgba(0,0,0,0.12);\n min-width: 220px;\n overflow: hidden;\n}\n\n.sync-dropdown-left {\n left: auto;\n right: 0;\n}\n\n.sync-dropdown-group {\n padding: 8px 0;\n border-bottom: 1px solid var(--mj-border-subtle);\n}\n\n.sync-dropdown-group:last-child {\n border-bottom: none;\n}\n\n.sync-dropdown-label {\n display: block;\n font-size: 10px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.05em;\n color: var(--mj-text-muted);\n padding: 0 12px 4px;\n}\n\n.sync-dropdown-item {\n display: flex;\n align-items: center;\n gap: 8px;\n width: 100%;\n padding: 7px 12px;\n background: none;\n border: none;\n cursor: pointer;\n font-size: 13px;\n color: var(--mj-text-primary);\n text-align: left;\n transition: background 0.12s;\n}\n\n.sync-dropdown-item:hover {\n background: var(--mj-bg-surface-hover);\n}\n\n.sync-dropdown-item i {\n width: 16px;\n text-align: center;\n color: var(--mj-text-secondary);\n flex-shrink: 0;\n}\n\n/* Card Delete Button */\n.card-delete-btn {\n margin-left: auto;\n background: none;\n border: 1px solid transparent;\n cursor: pointer;\n padding: 4px 8px;\n border-radius: 6px;\n color: var(--mj-text-disabled);\n font-size: 14px;\n transition: all 0.15s;\n}\n\n.card-delete-btn:hover {\n background: var(--mj-status-error-bg);\n border-color: var(--mj-status-error-border);\n color: var(--mj-status-error);\n}\n\n.menu-trigger:hover {\n background: var(--mj-bg-surface-hover);\n color: var(--mj-text-secondary);\n}\n\n.card-menu-dropdown {\n position: absolute;\n right: 0;\n top: 100%;\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.12);\n min-width: 160px;\n z-index: 50;\n padding: 4px;\n}\n\n.menu-item {\n display: flex;\n align-items: center;\n gap: 8px;\n width: 100%;\n padding: 8px 12px;\n border: none;\n background: none;\n cursor: pointer;\n font-size: 13px;\n color: var(--mj-text-secondary);\n border-radius: 6px;\n transition: background 0.15s;\n text-align: left;\n}\n\n.menu-item:hover {\n background: var(--mj-bg-surface-hover);\n}\n\n.menu-item i {\n width: 16px;\n text-align: center;\n color: var(--mj-text-muted);\n}\n\n.menu-item-danger {\n color: var(--mj-status-error);\n}\n\n.menu-item-danger i {\n color: var(--mj-status-error);\n}\n\n.menu-item-danger:hover {\n background: var(--mj-status-error-bg);\n}\n\n/* ---------------------------------------------------------------------------\n New Connection Card\n --------------------------------------------------------------------------- */\n\n.new-connection-card {\n border: 2px dashed var(--mj-border-strong);\n background: var(--mj-bg-page);\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n min-height: 200px;\n transition: background 0.2s, border-color 0.2s;\n}\n\n.new-connection-card:hover {\n background: var(--mj-bg-surface-hover);\n border-color: var(--mj-brand-primary);\n box-shadow: none;\n transform: none;\n}\n\n.new-card-content {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 12px;\n}\n\n.new-card-icon {\n width: 56px;\n height: 56px;\n border-radius: 50%;\n background: var(--mj-bg-surface-active);\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 24px;\n color: var(--mj-text-muted);\n transition: background 0.2s, color 0.2s;\n}\n\n.new-connection-card:hover .new-card-icon {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n}\n\n.new-card-label {\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-muted);\n}\n\n.new-connection-card:hover .new-card-label {\n color: var(--mj-brand-primary);\n}\n\n/* ---------------------------------------------------------------------------\n Wizard (inline, replaces card grid)\n --------------------------------------------------------------------------- */\n\n.wizard-inline {\n display: flex;\n flex-direction: column;\n height: 100%;\n max-width: 720px;\n margin: 0 auto;\n}\n\n/* Wizard Header */\n.wizard-header {\n display: flex;\n align-items: center;\n gap: 16px;\n padding: 0 0 20px;\n}\n\n.wizard-back-btn {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n background: none;\n border: none;\n cursor: pointer;\n font-size: 13px;\n font-weight: 500;\n color: var(--mj-text-muted);\n padding: 6px 10px;\n border-radius: 6px;\n transition: background 0.15s, color 0.15s;\n}\n\n.wizard-back-btn:hover {\n background: var(--mj-bg-surface-hover);\n color: var(--mj-text-primary);\n}\n\n.wizard-title {\n font-size: 20px;\n font-weight: 700;\n color: var(--mj-text-primary);\n margin: 0;\n}\n\n/* ---------------------------------------------------------------------------\n Step Indicator\n --------------------------------------------------------------------------- */\n\n.step-indicator {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 20px 32px;\n gap: 0;\n}\n\n.step-item {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 6px;\n position: relative;\n}\n\n.step-circle {\n width: 32px;\n height: 32px;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 13px;\n font-weight: 600;\n background: var(--mj-bg-surface-active);\n color: var(--mj-text-disabled);\n border: 2px solid var(--mj-border-default);\n transition: all 0.2s;\n}\n\n.step-active .step-circle {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n border-color: var(--mj-brand-primary);\n}\n\n.step-completed .step-circle {\n background: var(--mj-status-success);\n color: var(--mj-text-inverse);\n border-color: var(--mj-status-success);\n}\n\n.step-label {\n font-size: 11px;\n font-weight: 500;\n color: var(--mj-text-disabled);\n white-space: nowrap;\n}\n\n.step-active .step-label {\n color: var(--mj-brand-primary);\n font-weight: 600;\n}\n\n.step-completed .step-label {\n color: var(--mj-status-success);\n}\n\n.step-line {\n width: 48px;\n height: 2px;\n background: var(--mj-border-default);\n margin: 0 8px;\n margin-bottom: 20px;\n transition: background 0.2s;\n}\n\n.step-line-active {\n background: var(--mj-status-success);\n}\n\n/* ---------------------------------------------------------------------------\n Wizard Body\n --------------------------------------------------------------------------- */\n\n.wizard-body {\n flex: 1;\n overflow-y: auto;\n padding: 0 24px 24px;\n}\n\n.step-content {\n min-height: 300px;\n}\n\n.step-content-centered {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n text-align: center;\n}\n\n.step-title {\n font-size: 18px;\n font-weight: 600;\n color: var(--mj-text-primary);\n margin: 0 0 20px;\n}\n\n.step-content-centered .step-title {\n margin-bottom: 32px;\n}\n\n/* Search bar */\n.search-bar {\n position: relative;\n margin-bottom: 20px;\n}\n\n.search-icon {\n position: absolute;\n left: 14px;\n top: 50%;\n transform: translateY(-50%);\n color: var(--mj-text-disabled);\n font-size: 14px;\n}\n\n.search-input {\n width: 100%;\n padding: 10px 14px 10px 40px;\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n font-size: 14px;\n color: var(--mj-text-primary);\n background: var(--mj-bg-surface);\n transition: border-color 0.2s, box-shadow 0.2s;\n box-sizing: border-box;\n}\n\n.search-input:focus {\n outline: none;\n border-color: var(--mj-brand-primary);\n box-shadow: 0 0 0 3px rgba(37, 99, 235, 0.1);\n}\n\n.search-input::placeholder {\n color: var(--mj-text-disabled);\n}\n\n/* No integrations */\n.no-integrations {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 48px 24px;\n color: var(--mj-text-disabled);\n text-align: center;\n}\n\n.no-integrations i {\n font-size: 36px;\n margin-bottom: 12px;\n}\n\n.no-integrations p {\n font-size: 16px;\n font-weight: 500;\n color: var(--mj-text-muted);\n margin: 0 0 4px;\n}\n\n.no-integrations-hint {\n font-size: 13px;\n}\n\n/* Integration picker grid */\n.integration-picker-grid {\n display: grid;\n grid-template-columns: repeat(3, 1fr);\n gap: 12px;\n}\n\n.integration-picker-card {\n border: 2px solid var(--mj-border-default);\n border-radius: 10px;\n padding: 16px;\n cursor: pointer;\n text-align: center;\n transition: border-color 0.2s, background 0.15s;\n}\n\n.integration-picker-card:hover {\n border-color: var(--mj-brand-primary);\n background: var(--mj-bg-page);\n}\n\n.integration-picker-card.picker-selected {\n border-color: var(--mj-brand-primary);\n background: var(--mj-status-info-bg);\n}\n\n.picker-icon-circle {\n width: 40px;\n height: 40px;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--mj-text-inverse);\n margin: 0 auto 10px;\n font-size: 18px;\n}\n\n.picker-name {\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-primary);\n margin-bottom: 4px;\n}\n\n.picker-description {\n font-size: 12px;\n color: var(--mj-text-disabled);\n line-height: 1.3;\n overflow: hidden;\n text-overflow: ellipsis;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n}\n\n/* ---------------------------------------------------------------------------\n Form Controls (Step 2)\n --------------------------------------------------------------------------- */\n\n.form-group {\n margin-bottom: 20px;\n}\n\n.form-label {\n display: block;\n font-size: 13px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n margin-bottom: 6px;\n}\n\n.optional-label {\n font-weight: 400;\n color: var(--mj-text-disabled);\n}\n\n.form-input {\n width: 100%;\n padding: 10px 14px;\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n font-size: 14px;\n color: var(--mj-text-primary);\n background: var(--mj-bg-surface);\n transition: border-color 0.2s, box-shadow 0.2s;\n box-sizing: border-box;\n}\n\n.form-input:focus {\n outline: none;\n border-color: var(--mj-brand-primary);\n box-shadow: 0 0 0 3px rgba(37, 99, 235, 0.1);\n}\n\n.form-input::placeholder {\n color: var(--mj-text-disabled);\n}\n\n.form-input:disabled {\n background: var(--mj-bg-page);\n color: var(--mj-text-muted);\n}\n\n.form-textarea {\n resize: vertical;\n min-height: 72px;\n}\n\n.form-hint {\n font-size: 13px;\n color: var(--mj-text-disabled);\n padding: 8px 0;\n}\n\n/* Credential section */\n.credential-selected {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 10px 14px;\n background: var(--mj-status-success-bg);\n border: 1px solid var(--mj-status-success-border);\n border-radius: 8px;\n}\n\n.credential-info {\n display: flex;\n align-items: center;\n gap: 8px;\n color: var(--mj-status-success-text);\n font-size: 14px;\n font-weight: 500;\n}\n\n.credential-info i {\n color: var(--mj-status-success);\n}\n\n.credential-clear {\n background: none;\n border: none;\n cursor: pointer;\n color: var(--mj-text-disabled);\n font-size: 14px;\n padding: 4px;\n border-radius: 4px;\n transition: color 0.15s;\n}\n\n.credential-clear:hover {\n color: var(--mj-status-error);\n}\n\n.credential-actions {\n display: flex;\n gap: 8px;\n}\n\n.credential-actions button {\n font-size: 13px;\n}\n\n.credential-loading {\n padding: 16px 0;\n}\n\n.credential-list {\n margin-top: 12px;\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n overflow: hidden;\n}\n\n.credential-list-item {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 10px 14px;\n cursor: pointer;\n font-size: 14px;\n color: var(--mj-text-secondary);\n border-bottom: 1px solid var(--mj-border-subtle);\n transition: background 0.15s;\n}\n\n.credential-list-item:last-child {\n border-bottom: none;\n}\n\n.credential-list-item:hover {\n background: var(--mj-bg-page);\n}\n\n.credential-list-item i {\n color: var(--mj-text-disabled);\n}\n\n/* ---------------------------------------------------------------------------\n Test Connection (Step 3)\n --------------------------------------------------------------------------- */\n\n.test-prompt {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 16px;\n}\n\n.test-hint {\n font-size: 14px;\n color: var(--mj-text-disabled);\n margin: 0;\n}\n\n.test-running {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 16px;\n color: var(--mj-brand-primary);\n}\n\n.test-spinner {\n width: 64px;\n height: 64px;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.test-running p {\n font-size: 15px;\n font-weight: 500;\n margin: 0;\n}\n\n/* Test result */\n.test-result {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 12px;\n padding: 24px;\n border-radius: 12px;\n max-width: 400px;\n}\n\n.test-result-success {\n background: var(--mj-status-success-bg);\n}\n\n.test-result-failure {\n background: var(--mj-status-error-bg);\n}\n\n.test-result-icon {\n font-size: 48px;\n animation: scaleIn 0.3s ease-out;\n}\n\n.test-result-success .test-result-icon {\n color: var(--mj-status-success);\n}\n\n.test-result-failure .test-result-icon {\n color: var(--mj-status-error);\n}\n\n@keyframes scaleIn {\n from {\n transform: scale(0.5);\n opacity: 0;\n }\n to {\n transform: scale(1);\n opacity: 1;\n }\n}\n\n.test-result-message {\n font-size: 15px;\n font-weight: 500;\n color: var(--mj-text-secondary);\n text-align: center;\n}\n\n.test-result-detail {\n font-size: 13px;\n color: var(--mj-text-muted);\n}\n\n.test-retry-btn {\n margin-top: 4px;\n}\n\n/* Toggle switch */\n.toggle-switch {\n position: relative;\n display: inline-block;\n width: 44px;\n height: 24px;\n flex-shrink: 0;\n}\n\n.toggle-switch input {\n opacity: 0;\n width: 0;\n height: 0;\n}\n\n.toggle-slider {\n position: absolute;\n cursor: pointer;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: var(--mj-border-strong);\n border-radius: 24px;\n transition: background 0.2s;\n}\n\n.toggle-slider::before {\n content: '';\n position: absolute;\n height: 18px;\n width: 18px;\n left: 3px;\n bottom: 3px;\n background: var(--mj-bg-surface);\n border-radius: 50%;\n transition: transform 0.2s;\n}\n\n.toggle-switch input:checked + .toggle-slider {\n background: var(--mj-brand-primary);\n}\n\n.toggle-switch input:checked + .toggle-slider::before {\n transform: translateX(20px);\n}\n\n/* ---------------------------------------------------------------------------\n Wizard Footer\n --------------------------------------------------------------------------- */\n\n.wizard-footer {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 16px 24px;\n border-top: 1px solid var(--mj-border-subtle);\n}\n\n.footer-left {\n display: flex;\n align-items: center;\n}\n\n.footer-right {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n/* ---------------------------------------------------------------------------\n Responsive\n --------------------------------------------------------------------------- */\n\n@media (max-width: 768px) {\n .connections-container {\n padding: 16px;\n }\n\n .card-grid {\n grid-template-columns: 1fr;\n }\n\n .integration-picker-grid {\n grid-template-columns: repeat(2, 1fr);\n }\n\n .step-indicator {\n padding: 16px;\n overflow-x: auto;\n }\n\n .step-line {\n width: 24px;\n }\n\n .credential-actions {\n flex-direction: column;\n }\n}\n\n@media (max-width: 480px) {\n .integration-picker-grid {\n grid-template-columns: 1fr;\n }\n\n .card-footer {\n flex-wrap: wrap;\n }\n}\n\n/* ---------------------------------------------------------------------------\n Delete confirmation overlay\n --------------------------------------------------------------------------- */\n\n.delete-confirm-overlay {\n position: absolute;\n inset: 0;\n background: rgba(255, 255, 255, 0.95);\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 5;\n border-radius: 12px;\n animation: fadeIn 150ms ease;\n}\n\n@keyframes fadeIn {\n from { opacity: 0; }\n to { opacity: 1; }\n}\n\n.delete-confirm-content {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 10px;\n padding: 20px;\n text-align: center;\n}\n\n.delete-warn-icon {\n font-size: 28px;\n color: var(--mj-status-error);\n}\n\n.delete-confirm-text {\n font-size: 13px;\n font-weight: 500;\n color: var(--mj-text-secondary);\n max-width: 220px;\n}\n\n.delete-confirm-actions {\n display: flex;\n gap: 8px;\n margin-top: 4px;\n}\n\n/* ---------------------------------------------------------------------------\n Edit panel (slide-in)\n --------------------------------------------------------------------------- */\n\n.edit-panel-backdrop {\n position: fixed;\n inset: 0;\n background: rgba(0, 0, 0, 0.1);\n z-index: 99;\n opacity: 0;\n pointer-events: none;\n transition: opacity 300ms ease;\n}\n\n.edit-panel-backdrop.open {\n opacity: 1;\n pointer-events: auto;\n}\n\n.edit-panel {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n width: 400px;\n max-width: 100%;\n background: var(--mj-bg-surface);\n border-left: 1px solid var(--mj-border-default);\n box-shadow: -8px 0 24px rgba(0, 0, 0, 0.08);\n z-index: 100;\n transform: translateX(100%);\n transition: transform 300ms cubic-bezier(0.4, 0, 0.2, 1);\n display: flex;\n flex-direction: column;\n overflow: hidden;\n}\n\n.edit-panel.open {\n transform: translateX(0);\n}\n\n.edit-panel-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 16px 20px;\n border-bottom: 1px solid var(--mj-border-default);\n flex-shrink: 0;\n}\n\n.edit-panel-title {\n display: flex;\n align-items: center;\n gap: 10px;\n font-size: 15px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.edit-icon-circle {\n width: 32px;\n height: 32px;\n border-radius: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--mj-text-inverse);\n font-size: 14px;\n}\n\n.edit-close-btn {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 28px;\n height: 28px;\n border: none;\n border-radius: 6px;\n background: transparent;\n color: var(--mj-text-disabled);\n cursor: pointer;\n font-size: 14px;\n transition: all 150ms ease;\n}\n\n.edit-close-btn:hover {\n background: var(--mj-bg-surface-hover);\n color: var(--mj-text-secondary);\n}\n\n.edit-panel-loading {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 48px 20px;\n}\n\n.edit-panel-body {\n flex: 1;\n overflow-y: auto;\n padding: 20px;\n display: flex;\n flex-direction: column;\n gap: 20px;\n}\n\n.edit-form-group {\n display: flex;\n flex-direction: column;\n gap: 6px;\n}\n\n.edit-form-label {\n font-size: 12px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n text-transform: uppercase;\n letter-spacing: 0.3px;\n}\n\n.edit-form-input {\n height: 36px;\n padding: 0 12px;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n font-size: 14px;\n color: var(--mj-text-primary);\n background: var(--mj-bg-surface);\n outline: none;\n transition: border-color 150ms ease;\n}\n\n.edit-form-input:focus {\n border-color: var(--mj-brand-primary);\n}\n\n.edit-readonly-field {\n padding: 8px 12px;\n background: var(--mj-bg-page);\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n font-size: 13px;\n color: var(--mj-text-muted);\n}\n\n.edit-toggle-row {\n display: flex;\n align-items: center;\n gap: 10px;\n}\n\n.edit-toggle-label {\n font-size: 13px;\n font-weight: 500;\n color: var(--mj-text-disabled);\n}\n\n.edit-toggle-label.active {\n color: var(--mj-status-success);\n}\n\n.edit-credential-selected {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 10px 12px;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n background: var(--mj-bg-page);\n}\n\n.edit-credential-info {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 13px;\n color: var(--mj-text-secondary);\n}\n\n.edit-credential-info i {\n color: var(--mj-brand-primary);\n}\n\n.edit-credential-clear {\n width: 24px;\n height: 24px;\n border: none;\n border-radius: 4px;\n background: transparent;\n color: var(--mj-text-disabled);\n cursor: pointer;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n font-size: 12px;\n transition: all 150ms ease;\n}\n\n.edit-credential-clear:hover {\n background: var(--mj-status-error-bg);\n color: var(--mj-status-error);\n}\n\n.edit-credential-actions {\n display: flex;\n gap: 8px;\n}\n\n.edit-credential-list {\n display: flex;\n flex-direction: column;\n gap: 2px;\n margin-top: 6px;\n max-height: 180px;\n overflow-y: auto;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n}\n\n.edit-credential-item {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 12px;\n font-size: 13px;\n color: var(--mj-text-secondary);\n cursor: pointer;\n transition: background 150ms ease;\n}\n\n.edit-credential-item:hover {\n background: var(--mj-bg-surface-hover);\n}\n\n.edit-credential-item i {\n color: var(--mj-text-disabled);\n font-size: 12px;\n}\n\n.edit-panel-footer {\n display: flex;\n gap: 8px;\n padding: 16px 20px;\n border-top: 1px solid var(--mj-border-default);\n flex-shrink: 0;\n}\n\n/* ---------------------------------------------------------------------------\n Card clickable area\n --------------------------------------------------------------------------- */\n\n.card-clickable {\n cursor: pointer;\n}\n\n/* ---------------------------------------------------------------------------\n Detail View (entity maps for a selected integration)\n --------------------------------------------------------------------------- */\n\n.detail-view {\n display: flex;\n flex-direction: column;\n flex: 1;\n min-height: 0;\n overflow: hidden;\n}\n\n.detail-header {\n display: flex;\n align-items: center;\n gap: 16px;\n padding-bottom: 20px;\n border-bottom: 1px solid var(--mj-border-subtle);\n margin-bottom: 16px;\n flex-wrap: wrap;\n}\n\n.detail-header-info {\n display: flex;\n align-items: center;\n gap: 12px;\n flex: 1;\n min-width: 0;\n}\n\n.detail-header-text {\n display: flex;\n flex-direction: column;\n gap: 2px;\n min-width: 0;\n}\n\n.detail-title {\n font-size: 20px;\n font-weight: 700;\n color: var(--mj-text-primary);\n margin: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.detail-subtitle {\n font-size: 13px;\n color: var(--mj-text-muted);\n display: flex;\n align-items: center;\n gap: 4px;\n flex-wrap: wrap;\n}\n\n.detail-header-actions {\n display: flex;\n gap: 8px;\n flex-shrink: 0;\n}\n\n/* Schedule section */\n.schedule-section {\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 12px;\n padding: 16px 20px;\n margin-bottom: 16px;\n}\n\n.schedule-section-header {\n margin-bottom: 12px;\n}\n\n.schedule-section-title {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 0.8rem;\n font-weight: 700;\n color: var(--mj-text-secondary);\n text-transform: uppercase;\n letter-spacing: 0.04em;\n}\n\n.schedule-section-title i {\n color: var(--mj-brand-primary);\n}\n\n.schedule-empty {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 8px 0;\n}\n\n.schedule-empty-text {\n font-size: 0.85rem;\n color: var(--mj-text-disabled);\n}\n\n.schedule-create-btn {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 8px 16px;\n background: linear-gradient(135deg, var(--mj-brand-primary) 0%, var(--mj-brand-primary-active) 100%);\n color: white;\n border: none;\n border-radius: 8px;\n cursor: pointer;\n font-size: 0.8rem;\n font-weight: 600;\n transition: all 0.2s ease;\n}\n\n.schedule-create-btn:hover {\n transform: translateY(-1px);\n box-shadow: 0 4px 12px color-mix(in srgb, var(--mj-brand-primary) 40%, transparent);\n}\n\n/* Detail toolbar */\n.detail-toolbar {\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin-bottom: 12px;\n}\n\n.detail-toolbar-left {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.detail-map-count {\n font-size: 13px;\n color: var(--mj-text-muted);\n font-weight: 500;\n}\n\n.detail-search {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 6px 12px;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n background: var(--mj-bg-surface);\n}\n\n.detail-search i {\n color: var(--mj-text-disabled);\n font-size: 12px;\n}\n\n.detail-search input {\n border: none;\n outline: none;\n background: transparent;\n font-size: 13px;\n color: var(--mj-text-primary);\n width: 200px;\n}\n\n.detail-search input::placeholder {\n color: var(--mj-text-disabled);\n}\n\n/* Add Map button */\n.add-map-btn {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 6px 14px;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n background: var(--mj-bg-surface-card);\n color: var(--mj-brand-primary-hover);\n font-size: 13px;\n font-weight: 500;\n cursor: pointer;\n transition: all 150ms ease;\n white-space: nowrap;\n}\n\n.add-map-btn:hover {\n background: var(--mj-bg-surface-hover);\n border-color: var(--mj-border-strong);\n}\n\n.add-map-btn.active {\n background: var(--mj-brand-primary);\n color: var(--mj-bg-surface);\n border-color: var(--mj-brand-primary);\n}\n\n.apply-all-btn {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n border-color: var(--mj-brand-primary);\n}\n\n.apply-all-btn:hover {\n background: var(--mj-brand-primary-hover);\n border-color: var(--mj-brand-primary-hover);\n}\n\n.apply-all-btn:disabled {\n opacity: 0.6;\n cursor: not-allowed;\n}\n\n.add-map-btn-lg {\n margin-top: 16px;\n padding: 10px 20px;\n font-size: 14px;\n}\n\n/* Add map inline panel */\n.add-map-panel {\n padding: 16px;\n margin-bottom: 12px;\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n animation: fadeIn 200ms ease;\n}\n\n.add-map-row {\n display: flex;\n align-items: flex-end;\n gap: 12px;\n}\n\n.add-map-field {\n flex: 1;\n min-width: 0;\n}\n\n.add-map-label {\n display: block;\n font-size: 11px;\n font-weight: 600;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.3px;\n margin-bottom: 6px;\n}\n\n.add-map-select {\n width: 100%;\n height: 34px;\n padding: 0 10px;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n font-size: 13px;\n color: var(--mj-text-primary);\n background: var(--mj-bg-surface);\n outline: none;\n cursor: pointer;\n}\n\n.add-map-select:focus {\n border-color: var(--mj-brand-primary);\n}\n\n.add-map-direction-col {\n flex-shrink: 0;\n}\n\n.add-map-direction-btns {\n display: flex;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n overflow: hidden;\n}\n\n.add-map-direction-btns button {\n padding: 7px 12px;\n border: none;\n background: var(--mj-bg-surface);\n color: var(--mj-text-muted);\n font-size: 13px;\n cursor: pointer;\n transition: all 150ms ease;\n border-right: 1px solid var(--mj-border-default);\n}\n\n.add-map-direction-btns button:last-child {\n border-right: none;\n}\n\n.add-map-direction-btns button:hover {\n background: var(--mj-bg-surface-hover);\n}\n\n.add-map-direction-btns button.active {\n background: var(--mj-brand-primary);\n color: var(--mj-bg-surface);\n}\n\n.add-map-actions {\n display: flex;\n gap: 6px;\n flex-shrink: 0;\n}\n\n.add-map-save-btn {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 7px 16px;\n border: none;\n border-radius: 6px;\n background: var(--mj-brand-primary);\n color: var(--mj-bg-surface);\n font-size: 13px;\n font-weight: 500;\n cursor: pointer;\n transition: all 150ms ease;\n white-space: nowrap;\n}\n\n.add-map-save-btn:hover {\n background: var(--mj-brand-primary-hover);\n}\n\n.add-map-save-btn:disabled {\n opacity: 0.5;\n cursor: default;\n}\n\n.add-map-cancel-btn {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 34px;\n height: 34px;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n background: var(--mj-bg-surface);\n color: var(--mj-text-muted);\n cursor: pointer;\n font-size: 13px;\n transition: all 150ms ease;\n}\n\n.add-map-cancel-btn:hover {\n background: var(--mj-bg-surface-hover);\n color: var(--mj-text-primary);\n}\n\n.add-map-loading {\n font-size: 12px;\n color: var(--mj-text-disabled);\n padding: 8px 0;\n}\n\n.add-map-loading i {\n color: var(--mj-brand-primary);\n margin-right: 4px;\n}\n\n.add-map-hint {\n font-size: 12px;\n color: var(--mj-text-disabled);\n padding: 8px 0;\n font-style: italic;\n}\n\n/* Entity field needs more room for tree dropdown */\n.add-map-entity-field {\n flex: 2;\n min-width: 280px;\n}\n\n/* Entity picker row: tree dropdown + New button side by side */\n.entity-picker-row {\n display: flex;\n align-items: flex-start;\n gap: 8px;\n}\n\n.entity-picker-row mj-tree-dropdown {\n flex: 1;\n min-width: 0;\n}\n\n.new-entity-btn {\n flex-shrink: 0;\n display: inline-flex;\n align-items: center;\n gap: 4px;\n padding: 7px 12px;\n font-size: 12px;\n font-weight: 600;\n color: var(--mj-brand-primary);\n background: var(--mj-brand-primary-subtle);\n border: 1px solid color-mix(in srgb, var(--mj-brand-primary) 20%, transparent);\n border-radius: 6px;\n cursor: pointer;\n white-space: nowrap;\n transition: all 0.15s ease;\n}\n\n.new-entity-btn:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 15%, var(--mj-bg-surface));\n border-color: color-mix(in srgb, var(--mj-brand-primary) 30%, transparent);\n}\n\n/* ---------------------------------------------------------------------------\n Sync Result Banner\n --------------------------------------------------------------------------- */\n\n.sync-result-banner {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 10px 14px;\n border-radius: 6px;\n font-size: 13px;\n font-weight: 500;\n margin-bottom: 12px;\n animation: fadeIn 200ms ease;\n}\n\n.sync-result-banner.sync-success {\n background: var(--mj-status-success-bg);\n border: 1px solid var(--mj-status-success-border);\n color: var(--mj-status-success-text);\n}\n\n.sync-result-banner.sync-failure {\n background: var(--mj-status-error-bg);\n border: 1px solid var(--mj-status-error-border);\n color: var(--mj-status-error-text);\n}\n\n/* ---------------------------------------------------------------------------\n Auto-Map Schema Panel\n --------------------------------------------------------------------------- */\n\n.auto-map-header {\n display: flex;\n align-items: center;\n gap: 8px;\n margin-bottom: 12px;\n font-size: 13px;\n color: var(--mj-text-secondary);\n}\n\n.auto-map-header i {\n color: var(--mj-brand-primary);\n}\n\n.auto-map-result {\n margin-top: 12px;\n padding: 10px 14px;\n border-radius: 6px;\n font-size: 13px;\n}\n\n.auto-map-result.auto-map-success {\n background: var(--mj-status-success-bg);\n border: 1px solid var(--mj-status-success-border);\n color: var(--mj-status-success-text);\n}\n\n.auto-map-result.auto-map-partial {\n background: var(--mj-status-warning-bg);\n border: 1px solid var(--mj-status-warning-border);\n color: var(--mj-status-warning-text);\n}\n\n.auto-map-result.auto-map-failure {\n background: var(--mj-status-error-bg);\n border: 1px solid var(--mj-status-error-border);\n color: var(--mj-status-error-text);\n}\n\n.auto-map-result-summary {\n display: flex;\n align-items: center;\n gap: 8px;\n font-weight: 500;\n}\n\n.auto-map-errors {\n margin-top: 6px;\n font-size: 12px;\n}\n\n.auto-map-error {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 2px 0;\n}\n\n/* ---------------------------------------------------------------------------\n New Entity Dialog\n --------------------------------------------------------------------------- */\n\n.new-entity-backdrop {\n position: fixed;\n inset: 0;\n background: rgba(0, 0, 0, 0.4);\n z-index: 1000;\n animation: fadeIn 0.15s ease;\n}\n\n.new-entity-dialog {\n position: fixed;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n width: 640px;\n max-width: 90vw;\n max-height: 85vh;\n background: var(--mj-bg-surface);\n border-radius: var(--mj-radius-lg);\n box-shadow: 0 20px 60px rgba(0, 0, 0, 0.2);\n z-index: 1001;\n display: flex;\n flex-direction: column;\n animation: fadeIn 0.2s ease;\n}\n\n.new-entity-dialog-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 16px 20px;\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.new-entity-dialog-header h3 {\n margin: 0;\n font-size: var(--mj-text-base);\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.new-entity-dialog-close {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n height: 32px;\n padding: 0;\n font-size: var(--mj-text-sm);\n color: var(--mj-text-secondary);\n background: transparent;\n border: none;\n border-radius: 6px;\n cursor: pointer;\n transition: all 0.15s ease;\n}\n\n.new-entity-dialog-close:hover {\n background: var(--mj-bg-surface-card);\n color: var(--mj-text-primary);\n}\n\n.new-entity-dialog-body {\n flex: 1;\n overflow-y: auto;\n padding: 20px;\n display: flex;\n flex-direction: column;\n gap: 16px;\n}\n\n.new-entity-dialog-desc {\n margin: 0;\n font-size: 13px;\n color: var(--mj-text-secondary);\n line-height: 1.5;\n}\n\n.new-entity-dialog-form {\n display: flex;\n flex-direction: column;\n gap: 12px;\n}\n\n.new-entity-dialog-row {\n display: flex;\n align-items: flex-end;\n gap: 8px;\n}\n\n.new-entity-dialog-field {\n display: flex;\n flex-direction: column;\n gap: 4px;\n min-width: 120px;\n}\n\n.new-entity-dialog-field-wide {\n flex: 1;\n}\n\n.new-entity-dialog-label {\n font-size: var(--mj-text-xs);\n font-weight: 600;\n color: var(--mj-text-secondary);\n}\n\n.new-entity-dialog-input {\n padding: 8px 12px;\n font-size: var(--mj-text-sm);\n border: 1px solid var(--mj-border-strong);\n border-radius: var(--mj-radius-md);\n background: var(--mj-bg-surface);\n color: var(--mj-text-primary);\n transition: border-color 0.15s ease;\n}\n\n.new-entity-dialog-input:focus {\n outline: none;\n border-color: var(--mj-brand-primary);\n box-shadow: 0 0 0 2px rgba(99, 102, 241, 0.1);\n}\n\n.new-entity-dialog-dot {\n font-size: 20px;\n font-weight: 700;\n color: var(--mj-text-secondary);\n padding-bottom: 6px;\n user-select: none;\n}\n\n.new-entity-dialog-value {\n font-size: 14px;\n font-weight: 500;\n color: var(--mj-text-primary);\n padding: 8px 0 4px;\n}\n\n.new-entity-dialog-hint {\n font-style: italic;\n color: var(--mj-text-disabled);\n font-weight: 400;\n}\n\n.new-entity-dialog-footer {\n display: flex;\n align-items: center;\n justify-content: flex-end;\n gap: 8px;\n padding: 12px 20px;\n border-top: 1px solid var(--mj-border-default);\n}\n\n.new-entity-preview-btn {\n display: inline-flex;\n align-items: center;\n gap: 5px;\n padding: 8px 16px;\n font-size: 13px;\n font-weight: 600;\n color: var(--mj-text-inverse);\n background: var(--mj-brand-primary);\n border: none;\n border-radius: 6px;\n cursor: pointer;\n white-space: nowrap;\n transition: background 0.15s ease;\n}\n\n.new-entity-preview-btn:hover:not(:disabled) {\n background: var(--mj-brand-primary-hover);\n}\n\n.new-entity-preview-btn:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.new-entity-dialog-done-btn {\n display: inline-flex;\n align-items: center;\n padding: 8px 16px;\n font-size: 13px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n background: transparent;\n border: 1px solid var(--mj-border-strong);\n border-radius: var(--mj-radius-md);\n cursor: pointer;\n transition: all 0.15s ease;\n}\n\n.new-entity-dialog-done-btn:hover {\n background: var(--mj-bg-surface-card);\n border-color: var(--mj-text-disabled);\n}\n\n/* Next steps callout inside dialog */\n.new-entity-next-steps {\n background: var(--mj-brand-primary-subtle);\n border: 1px solid color-mix(in srgb, var(--mj-brand-primary) 20%, transparent);\n border-radius: var(--mj-radius-md);\n padding: 14px 16px;\n}\n\n.new-entity-next-steps h4 {\n margin: 0 0 8px;\n font-size: 13px;\n font-weight: 600;\n color: var(--mj-brand-primary-hover);\n}\n\n.new-entity-next-steps h4 i {\n margin-right: 6px;\n}\n\n.new-entity-next-steps ol {\n margin: 0;\n padding-left: 20px;\n font-size: 13px;\n color: var(--mj-brand-primary-hover);\n line-height: 1.7;\n}\n\n/* DDL copy button */\n.ddl-copy-btn {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n padding: 3px 8px;\n font-size: 11px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n background: transparent;\n border: 1px solid var(--mj-border-strong);\n border-radius: var(--mj-radius-sm);\n cursor: pointer;\n transition: all 0.15s ease;\n}\n\n.ddl-copy-btn:hover {\n background: var(--mj-bg-surface-card);\n border-color: var(--mj-text-disabled);\n}\n\n/* DDL Preview */\n.ddl-warnings {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.ddl-warning {\n font-size: 12px;\n color: var(--mj-status-warning);\n background: var(--mj-status-warning-subtle);\n padding: 6px 10px;\n border-radius: var(--mj-radius-sm);\n border-left: 3px solid var(--mj-status-warning);\n}\n\n.ddl-warning i {\n margin-right: 4px;\n}\n\n.ddl-preview-block {\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md);\n overflow: hidden;\n max-height: 300px;\n display: flex;\n flex-direction: column;\n}\n\n.ddl-preview-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 8px 12px;\n background: var(--mj-bg-surface-card);\n border-bottom: 1px solid var(--mj-border-default);\n font-size: var(--mj-text-xs);\n font-weight: 600;\n color: var(--mj-text-secondary);\n}\n\n.ddl-preview-code {\n margin: 0;\n padding: 12px 16px;\n font-size: 12px;\n font-family: 'SF Mono', 'Fira Code', 'Cascadia Code', monospace;\n line-height: 1.6;\n color: var(--mj-text-primary);\n background: var(--mj-bg-surface);\n overflow: auto;\n white-space: pre-wrap;\n word-break: break-word;\n flex: 1;\n}\n\n@keyframes fadeIn {\n from { opacity: 0; }\n to { opacity: 1; }\n}\n\n/* Detail empty state */\n.detail-empty {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 64px 24px;\n text-align: center;\n color: var(--mj-text-disabled);\n}\n\n.detail-empty i {\n font-size: 36px;\n margin-bottom: 12px;\n color: var(--mj-text-disabled);\n}\n\n.detail-empty h3 {\n font-size: 18px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n margin: 0 0 6px;\n}\n\n.detail-empty p {\n font-size: 13px;\n margin: 0;\n max-width: 400px;\n}\n\n/* Detail table */\n.detail-table-head {\n display: flex;\n align-items: center;\n padding: 8px 16px;\n background: var(--mj-bg-page);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px 8px 0 0;\n font-size: 11px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.04em;\n color: var(--mj-text-secondary);\n}\n\n.detail-table-body {\n border: 1px solid var(--mj-border-default);\n border-top: none;\n border-radius: 0 0 8px 8px;\n overflow-y: auto;\n flex: 1;\n min-height: 0;\n}\n\n.detail-map-row {\n display: flex;\n align-items: center;\n padding: 10px 16px;\n border-bottom: 1px solid var(--mj-border-subtle);\n transition: background 0.15s;\n font-size: 13px;\n}\n\n.detail-map-row:last-child {\n border-bottom: none;\n}\n\n.detail-map-row:hover {\n background: var(--mj-bg-page);\n cursor: pointer;\n}\n\n.detail-map-row.sync-disabled {\n opacity: 0.5;\n}\n\n/* Column widths (shared between head and body) */\n.dt-col-toggle {\n width: 60px;\n flex-shrink: 0;\n}\n\n.dt-col-source {\n flex: 2;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n font-weight: 500;\n color: var(--mj-text-primary);\n}\n\n.dt-col-direction {\n width: 80px;\n flex-shrink: 0;\n text-align: center;\n}\n\n.dt-col-dest {\n flex: 2;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n color: var(--mj-text-primary);\n}\n\n.dt-col-meta {\n width: 80px;\n flex-shrink: 0;\n display: flex;\n align-items: center;\n gap: 6px;\n justify-content: flex-end;\n}\n\n/* Direction badge */\n.direction-badge {\n font-size: 11px;\n font-weight: 600;\n padding: 2px 8px;\n border-radius: 4px;\n white-space: nowrap;\n}\n\n/* Clickable direction toggle button */\nbutton.direction-toggle {\n border: 1px solid transparent;\n cursor: pointer;\n transition: border-color 0.15s, box-shadow 0.15s;\n}\nbutton.direction-toggle:hover {\n border-color: var(--mj-border-strong);\n box-shadow: 0 0 0 2px color-mix(in srgb, var(--mj-brand-primary) 12%, transparent);\n}\n\n.direction-badge.pull {\n background: var(--mj-status-info-bg);\n color: var(--mj-brand-primary);\n}\n\n.direction-badge.push {\n background: var(--mj-status-success-bg);\n color: var(--mj-status-success);\n}\n\n.direction-badge.bidirectional {\n background: var(--mj-status-warning-subtle);\n color: var(--mj-status-warning);\n}\n\n/* Create Tables list */\n.create-tables-list {\n max-height: 300px;\n overflow-y: auto;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n margin-top: 8px;\n background: var(--mj-bg-surface);\n}\n.create-tables-select-all {\n padding: 8px 12px;\n border-bottom: 1px solid var(--mj-border-default);\n background: var(--mj-bg-surface-card);\n font-weight: 600;\n}\n.create-tables-checkbox {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 6px 12px;\n cursor: pointer;\n font-size: 13px;\n color: var(--mj-text-primary);\n}\n.create-tables-checkbox:hover {\n background: var(--mj-bg-surface-hover);\n}\n.create-tables-checkbox input[type=\"checkbox\"] {\n width: 16px;\n height: 16px;\n cursor: pointer;\n}\n.create-tables-name-hint {\n color: var(--mj-text-muted);\n font-size: 11px;\n margin-left: 8px;\n}\n.create-tables-filters {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 8px 0;\n flex-wrap: wrap;\n}\n.create-tables-search {\n flex: 1 1 240px;\n min-width: 200px;\n}\n.create-tables-toggle {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n font-size: 12px;\n color: var(--mj-text-secondary);\n cursor: pointer;\n}\n.create-tables-toggle input[type=\"checkbox\"] {\n margin: 0;\n}\n.create-tables-badge {\n display: inline-block;\n margin-left: 6px;\n padding: 1px 6px;\n font-size: 10px;\n font-weight: 600;\n border-radius: 10px;\n text-transform: uppercase;\n letter-spacing: 0.3px;\n line-height: 1.4;\n}\n.create-tables-badge-custom {\n background: color-mix(in srgb, var(--mj-brand-primary) 12%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n}\n.create-tables-badge-registered {\n background: var(--mj-status-success-bg);\n color: var(--mj-status-success-text);\n}\n.add-map-input {\n width: 100%;\n padding: 6px 10px;\n border: 1px solid var(--mj-border-default);\n border-radius: 4px;\n font-size: 13px;\n background: var(--mj-bg-surface);\n color: var(--mj-text-primary);\n}\n.add-map-input:focus {\n outline: none;\n border-color: var(--mj-brand-primary);\n box-shadow: 0 0 0 2px color-mix(in srgb, var(--mj-brand-primary) 15%, transparent);\n}\n\n/* Config badges */\n.detail-config-badge {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 24px;\n height: 24px;\n border-radius: 4px;\n background: var(--mj-bg-surface-active);\n color: var(--mj-text-disabled);\n font-size: 11px;\n}\n\n/* Detail back button (icon-only) */\n.detail-back-btn {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 36px;\n height: 36px;\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n background: var(--mj-bg-surface);\n color: var(--mj-text-secondary);\n cursor: pointer;\n font-size: 16px;\n transition: background 0.15s, color 0.15s, border-color 0.15s;\n flex-shrink: 0;\n}\n\n.detail-back-btn:hover {\n background: var(--mj-bg-surface-hover);\n color: var(--mj-text-primary);\n border-color: var(--mj-border-strong);\n}\n\n/* Detail edit button (icon-only) */\n.detail-edit-btn {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 36px;\n height: 36px;\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n background: var(--mj-bg-surface);\n color: var(--mj-text-secondary);\n cursor: pointer;\n font-size: 14px;\n transition: background 0.15s, color 0.15s, border-color 0.15s;\n flex-shrink: 0;\n}\n\n.detail-edit-btn:hover {\n background: var(--mj-bg-surface-hover);\n color: var(--mj-text-primary);\n border-color: var(--mj-border-strong);\n}\n\n/* Chevron hint on entity map rows */\n.map-edit-hint {\n color: var(--mj-text-disabled);\n font-size: 11px;\n transition: color 0.15s;\n}\n\n.detail-map-row:hover .map-edit-hint {\n color: var(--mj-brand-primary);\n}\n\n/* Entity map editor header */\n.ve-header-title-inline {\n display: flex;\n align-items: center;\n gap: 10px;\n font-size: 16px;\n font-weight: 600;\n}\n\n.ve-source-label {\n color: var(--mj-brand-primary);\n}\n\n.ve-direction-icon {\n color: var(--mj-text-disabled);\n font-size: 14px;\n}\n\n.ve-dest-label {\n color: var(--mj-status-success);\n}\n\n.ve-stat-inline {\n font-size: 13px;\n color: var(--mj-text-muted);\n}\n\n.ve-stat-inline strong {\n color: var(--mj-text-primary);\n font-weight: 600;\n}\n\n.detail-table-empty {\n padding: 24px;\n text-align: center;\n color: var(--mj-text-disabled);\n font-size: 13px;\n}\n\n/* ---------------------------------------------------------------------------\n Discovered Source Objects Section\n --------------------------------------------------------------------------- */\n\n.discovered-objects-section {\n margin: 12px 0;\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n background: var(--mj-bg-surface);\n overflow: hidden;\n}\n\n.discovered-objects-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 10px 14px;\n background: var(--mj-bg-surface-card);\n border-bottom: 1px solid var(--mj-border-subtle);\n}\n\n.discovered-objects-title {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 13px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.discovered-objects-title i {\n color: var(--mj-brand-primary);\n}\n\n.discovered-count {\n font-weight: 400;\n color: var(--mj-text-muted);\n font-size: 12px;\n}\n\n.discovered-objects-actions {\n display: flex;\n gap: 8px;\n}\n\n.discovered-action-btn {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n background: none;\n border: 1px solid var(--mj-border-default);\n border-radius: 4px;\n padding: 3px 10px;\n font-size: 12px;\n color: var(--mj-text-secondary);\n cursor: pointer;\n transition: background 0.15s, color 0.15s;\n}\n\n.discovered-action-btn:hover {\n background: var(--mj-bg-surface-hover);\n color: var(--mj-text-primary);\n}\n\n.discovered-action-btn:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.discovered-loading,\n.discovered-empty {\n padding: 16px;\n text-align: center;\n font-size: 13px;\n color: var(--mj-text-muted);\n}\n\n.discovered-loading i {\n margin-right: 6px;\n}\n\n.discovered-objects-list {\n max-height: 280px;\n overflow-y: auto;\n}\n\n.discovered-object-row {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 7px 14px;\n cursor: pointer;\n transition: background 0.1s;\n border-bottom: 1px solid var(--mj-border-subtle);\n font-size: 13px;\n}\n\n.discovered-object-row:last-child {\n border-bottom: none;\n}\n\n.discovered-object-row:hover {\n background: var(--mj-bg-surface-hover);\n}\n\n.discovered-object-row.selected {\n background: color-mix(in srgb, var(--mj-brand-primary) 6%, var(--mj-bg-surface));\n}\n\n.discovered-object-row input[type=\"checkbox\"] {\n flex-shrink: 0;\n width: 16px;\n height: 16px;\n accent-color: var(--mj-brand-primary);\n cursor: pointer;\n}\n\n.discovered-object-name {\n flex: 1;\n color: var(--mj-text-primary);\n font-weight: 500;\n}\n\n.discovered-object-api-name {\n flex: 1;\n color: var(--mj-text-muted);\n font-size: 12px;\n font-family: monospace;\n}\n\n.discovered-object-badges {\n display: flex;\n gap: 4px;\n}\n\n.discovered-badge {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 20px;\n height: 20px;\n border-radius: 4px;\n font-size: 10px;\n}\n\n.discovered-badge.incremental {\n color: var(--mj-status-success);\n background: var(--mj-status-success-bg);\n}\n\n.discovered-badge.writable {\n color: var(--mj-brand-primary);\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n}\n"] }]
3130
3149
  }], null, { entityTreeDropdown: [{
3131
3150
  type: ViewChild,
3132
3151
  args: ['entityTreeDropdown']