@memberjunction/ng-dashboards 3.2.0 → 3.4.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 (402) hide show
  1. package/dist/AI/components/agents/agent-configuration.component.d.ts +24 -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 +198 -111
  4. package/dist/AI/components/agents/agent-configuration.component.js.map +1 -1
  5. package/dist/AI/components/models/model-management.component.d.ts +23 -0
  6. package/dist/AI/components/models/model-management.component.d.ts.map +1 -1
  7. package/dist/AI/components/models/model-management.component.js +189 -83
  8. package/dist/AI/components/models/model-management.component.js.map +1 -1
  9. package/dist/AI/components/prompts/prompt-management.component.d.ts +23 -0
  10. package/dist/AI/components/prompts/prompt-management.component.d.ts.map +1 -1
  11. package/dist/AI/components/prompts/prompt-management.component.js +135 -30
  12. package/dist/AI/components/prompts/prompt-management.component.js.map +1 -1
  13. package/dist/APIKeys/api-applications-panel.component.d.ts +169 -0
  14. package/dist/APIKeys/api-applications-panel.component.d.ts.map +1 -0
  15. package/dist/APIKeys/api-applications-panel.component.js +1058 -0
  16. package/dist/APIKeys/api-applications-panel.component.js.map +1 -0
  17. package/dist/APIKeys/api-key-create-dialog.component.d.ts +125 -0
  18. package/dist/APIKeys/api-key-create-dialog.component.d.ts.map +1 -0
  19. package/dist/APIKeys/api-key-create-dialog.component.js +768 -0
  20. package/dist/APIKeys/api-key-create-dialog.component.js.map +1 -0
  21. package/dist/APIKeys/api-key-edit-panel.component.d.ts +149 -0
  22. package/dist/APIKeys/api-key-edit-panel.component.d.ts.map +1 -0
  23. package/dist/APIKeys/api-key-edit-panel.component.js +1074 -0
  24. package/dist/APIKeys/api-key-edit-panel.component.js.map +1 -0
  25. package/dist/APIKeys/api-key-list.component.d.ts +131 -0
  26. package/dist/APIKeys/api-key-list.component.d.ts.map +1 -0
  27. package/dist/APIKeys/api-key-list.component.js +818 -0
  28. package/dist/APIKeys/api-key-list.component.js.map +1 -0
  29. package/dist/APIKeys/api-keys-resource.component.d.ts +211 -0
  30. package/dist/APIKeys/api-keys-resource.component.d.ts.map +1 -0
  31. package/dist/APIKeys/api-keys-resource.component.js +1150 -0
  32. package/dist/APIKeys/api-keys-resource.component.js.map +1 -0
  33. package/dist/APIKeys/api-scopes-panel.component.d.ts +98 -0
  34. package/dist/APIKeys/api-scopes-panel.component.d.ts.map +1 -0
  35. package/dist/APIKeys/api-scopes-panel.component.js +652 -0
  36. package/dist/APIKeys/api-scopes-panel.component.js.map +1 -0
  37. package/dist/APIKeys/api-usage-panel.component.d.ts +174 -0
  38. package/dist/APIKeys/api-usage-panel.component.d.ts.map +1 -0
  39. package/dist/APIKeys/api-usage-panel.component.js +1013 -0
  40. package/dist/APIKeys/api-usage-panel.component.js.map +1 -0
  41. package/dist/APIKeys/index.d.ts +7 -0
  42. package/dist/APIKeys/index.d.ts.map +1 -0
  43. package/dist/APIKeys/index.js +8 -0
  44. package/dist/APIKeys/index.js.map +1 -0
  45. package/dist/Actions/components/explorer/action-breadcrumb.component.d.ts +22 -0
  46. package/dist/Actions/components/explorer/action-breadcrumb.component.d.ts.map +1 -0
  47. package/dist/Actions/components/explorer/action-breadcrumb.component.js +139 -0
  48. package/dist/Actions/components/explorer/action-breadcrumb.component.js.map +1 -0
  49. package/dist/Actions/components/explorer/action-card.component.d.ts +39 -0
  50. package/dist/Actions/components/explorer/action-card.component.d.ts.map +1 -0
  51. package/dist/Actions/components/explorer/action-card.component.js +410 -0
  52. package/dist/Actions/components/explorer/action-card.component.js.map +1 -0
  53. package/dist/Actions/components/explorer/action-explorer.component.d.ts +62 -0
  54. package/dist/Actions/components/explorer/action-explorer.component.d.ts.map +1 -0
  55. package/dist/Actions/components/explorer/action-explorer.component.js +527 -0
  56. package/dist/Actions/components/explorer/action-explorer.component.js.map +1 -0
  57. package/dist/Actions/components/explorer/action-list-item.component.d.ts +24 -0
  58. package/dist/Actions/components/explorer/action-list-item.component.d.ts.map +1 -0
  59. package/dist/Actions/components/explorer/action-list-item.component.js +210 -0
  60. package/dist/Actions/components/explorer/action-list-item.component.js.map +1 -0
  61. package/dist/Actions/components/explorer/action-toolbar.component.d.ts +63 -0
  62. package/dist/Actions/components/explorer/action-toolbar.component.d.ts.map +1 -0
  63. package/dist/Actions/components/explorer/action-toolbar.component.js +483 -0
  64. package/dist/Actions/components/explorer/action-toolbar.component.js.map +1 -0
  65. package/dist/Actions/components/explorer/action-tree-panel.component.d.ts +57 -0
  66. package/dist/Actions/components/explorer/action-tree-panel.component.d.ts.map +1 -0
  67. package/dist/Actions/components/explorer/action-tree-panel.component.js +454 -0
  68. package/dist/Actions/components/explorer/action-tree-panel.component.js.map +1 -0
  69. package/dist/Actions/components/explorer/index.d.ts +10 -0
  70. package/dist/Actions/components/explorer/index.d.ts.map +1 -0
  71. package/dist/Actions/components/explorer/index.js +14 -0
  72. package/dist/Actions/components/explorer/index.js.map +1 -0
  73. package/dist/Actions/components/explorer/new-action-panel.component.d.ts +49 -0
  74. package/dist/Actions/components/explorer/new-action-panel.component.d.ts.map +1 -0
  75. package/dist/Actions/components/explorer/new-action-panel.component.js +359 -0
  76. package/dist/Actions/components/explorer/new-action-panel.component.js.map +1 -0
  77. package/dist/Actions/components/explorer/new-category-panel.component.d.ts +37 -0
  78. package/dist/Actions/components/explorer/new-category-panel.component.d.ts.map +1 -0
  79. package/dist/Actions/components/explorer/new-category-panel.component.js +282 -0
  80. package/dist/Actions/components/explorer/new-category-panel.component.js.map +1 -0
  81. package/dist/Actions/index.d.ts +3 -0
  82. package/dist/Actions/index.d.ts.map +1 -1
  83. package/dist/Actions/index.js +5 -0
  84. package/dist/Actions/index.js.map +1 -1
  85. package/dist/Actions/services/action-explorer-state.service.d.ts +104 -0
  86. package/dist/Actions/services/action-explorer-state.service.d.ts.map +1 -0
  87. package/dist/Actions/services/action-explorer-state.service.js +352 -0
  88. package/dist/Actions/services/action-explorer-state.service.js.map +1 -0
  89. package/dist/Communication/communication-dashboard.component.d.ts +2 -6
  90. package/dist/Communication/communication-dashboard.component.d.ts.map +1 -1
  91. package/dist/Communication/communication-dashboard.component.js +142 -93
  92. package/dist/Communication/communication-dashboard.component.js.map +1 -1
  93. package/dist/Communication/communication-logs-resource.component.d.ts +10 -4
  94. package/dist/Communication/communication-logs-resource.component.d.ts.map +1 -1
  95. package/dist/Communication/communication-logs-resource.component.js +253 -121
  96. package/dist/Communication/communication-logs-resource.component.js.map +1 -1
  97. package/dist/Communication/communication-monitor-resource.component.d.ts +38 -3
  98. package/dist/Communication/communication-monitor-resource.component.d.ts.map +1 -1
  99. package/dist/Communication/communication-monitor-resource.component.js +431 -157
  100. package/dist/Communication/communication-monitor-resource.component.js.map +1 -1
  101. package/dist/Communication/communication-providers-resource.component.d.ts +16 -5
  102. package/dist/Communication/communication-providers-resource.component.d.ts.map +1 -1
  103. package/dist/Communication/communication-providers-resource.component.js +229 -118
  104. package/dist/Communication/communication-providers-resource.component.js.map +1 -1
  105. package/dist/Communication/communication-runs-resource.component.d.ts +4 -2
  106. package/dist/Communication/communication-runs-resource.component.d.ts.map +1 -1
  107. package/dist/Communication/communication-runs-resource.component.js +155 -149
  108. package/dist/Communication/communication-runs-resource.component.js.map +1 -1
  109. package/dist/Communication/communication-templates-resource.component.d.ts +43 -0
  110. package/dist/Communication/communication-templates-resource.component.d.ts.map +1 -0
  111. package/dist/Communication/communication-templates-resource.component.js +371 -0
  112. package/dist/Communication/communication-templates-resource.component.js.map +1 -0
  113. package/dist/ComponentStudio/component-studio-dashboard.component.d.ts +69 -267
  114. package/dist/ComponentStudio/component-studio-dashboard.component.d.ts.map +1 -1
  115. package/dist/ComponentStudio/component-studio-dashboard.component.js +698 -1802
  116. package/dist/ComponentStudio/component-studio-dashboard.component.js.map +1 -1
  117. package/dist/ComponentStudio/components/ai-assistant/ai-assistant-panel.component.d.ts +68 -0
  118. package/dist/ComponentStudio/components/ai-assistant/ai-assistant-panel.component.d.ts.map +1 -0
  119. package/dist/ComponentStudio/components/ai-assistant/ai-assistant-panel.component.js +401 -0
  120. package/dist/ComponentStudio/components/ai-assistant/ai-assistant-panel.component.js.map +1 -0
  121. package/dist/ComponentStudio/components/browser/component-browser.component.d.ts +44 -0
  122. package/dist/ComponentStudio/components/browser/component-browser.component.d.ts.map +1 -0
  123. package/dist/ComponentStudio/components/browser/component-browser.component.js +636 -0
  124. package/dist/ComponentStudio/components/browser/component-browser.component.js.map +1 -0
  125. package/dist/ComponentStudio/components/editors/code-editor-panel.component.d.ts +35 -0
  126. package/dist/ComponentStudio/components/editors/code-editor-panel.component.d.ts.map +1 -0
  127. package/dist/ComponentStudio/components/editors/code-editor-panel.component.js +380 -0
  128. package/dist/ComponentStudio/components/editors/code-editor-panel.component.js.map +1 -0
  129. package/dist/ComponentStudio/components/editors/data-requirements-editor.component.d.ts +24 -0
  130. package/dist/ComponentStudio/components/editors/data-requirements-editor.component.d.ts.map +1 -0
  131. package/dist/ComponentStudio/components/editors/data-requirements-editor.component.js +221 -0
  132. package/dist/ComponentStudio/components/editors/data-requirements-editor.component.js.map +1 -0
  133. package/dist/ComponentStudio/components/editors/requirements-editor.component.d.ts +28 -0
  134. package/dist/ComponentStudio/components/editors/requirements-editor.component.d.ts.map +1 -0
  135. package/dist/ComponentStudio/components/editors/requirements-editor.component.js +263 -0
  136. package/dist/ComponentStudio/components/editors/requirements-editor.component.js.map +1 -0
  137. package/dist/ComponentStudio/components/editors/spec-editor.component.d.ts +34 -0
  138. package/dist/ComponentStudio/components/editors/spec-editor.component.d.ts.map +1 -0
  139. package/dist/ComponentStudio/components/editors/spec-editor.component.js +307 -0
  140. package/dist/ComponentStudio/components/editors/spec-editor.component.js.map +1 -0
  141. package/dist/ComponentStudio/components/new-component-dialog/new-component-dialog.component.d.ts +29 -0
  142. package/dist/ComponentStudio/components/new-component-dialog/new-component-dialog.component.d.ts.map +1 -0
  143. package/dist/ComponentStudio/components/new-component-dialog/new-component-dialog.component.js +159 -0
  144. package/dist/ComponentStudio/components/new-component-dialog/new-component-dialog.component.js.map +1 -0
  145. package/dist/ComponentStudio/components/save-version-dialog/save-version-dialog.component.d.ts +20 -0
  146. package/dist/ComponentStudio/components/save-version-dialog/save-version-dialog.component.d.ts.map +1 -0
  147. package/dist/ComponentStudio/components/save-version-dialog/save-version-dialog.component.js +192 -0
  148. package/dist/ComponentStudio/components/save-version-dialog/save-version-dialog.component.js.map +1 -0
  149. package/dist/ComponentStudio/components/workspace/component-preview.component.d.ts +57 -0
  150. package/dist/ComponentStudio/components/workspace/component-preview.component.d.ts.map +1 -0
  151. package/dist/ComponentStudio/components/workspace/component-preview.component.js +342 -0
  152. package/dist/ComponentStudio/components/workspace/component-preview.component.js.map +1 -0
  153. package/dist/ComponentStudio/components/workspace/editor-tabs.component.d.ts +15 -0
  154. package/dist/ComponentStudio/components/workspace/editor-tabs.component.d.ts.map +1 -0
  155. package/dist/ComponentStudio/components/workspace/editor-tabs.component.js +144 -0
  156. package/dist/ComponentStudio/components/workspace/editor-tabs.component.js.map +1 -0
  157. package/dist/ComponentStudio/services/component-studio-state.service.d.ts +203 -0
  158. package/dist/ComponentStudio/services/component-studio-state.service.d.ts.map +1 -0
  159. package/dist/ComponentStudio/services/component-studio-state.service.js +651 -0
  160. package/dist/ComponentStudio/services/component-studio-state.service.js.map +1 -0
  161. package/dist/ComponentStudio/services/component-version.service.d.ts +120 -0
  162. package/dist/ComponentStudio/services/component-version.service.d.ts.map +1 -0
  163. package/dist/ComponentStudio/services/component-version.service.js +394 -0
  164. package/dist/ComponentStudio/services/component-version.service.js.map +1 -0
  165. package/dist/Credentials/components/credentials-categories-resource.component.d.ts +1 -1
  166. package/dist/Credentials/components/credentials-categories-resource.component.d.ts.map +1 -1
  167. package/dist/Credentials/components/credentials-categories-resource.component.js +1 -1
  168. package/dist/Credentials/components/credentials-list-resource.component.d.ts +1 -1
  169. package/dist/Credentials/components/credentials-list-resource.component.d.ts.map +1 -1
  170. package/dist/Credentials/components/credentials-list-resource.component.js +1 -1
  171. package/dist/Credentials/components/credentials-types-resource.component.d.ts +1 -1
  172. package/dist/Credentials/components/credentials-types-resource.component.d.ts.map +1 -1
  173. package/dist/Credentials/components/credentials-types-resource.component.js +1 -1
  174. package/dist/DashboardBrowser/dashboard-browser-resource.component.d.ts.map +1 -1
  175. package/dist/DashboardBrowser/dashboard-browser-resource.component.js +4 -2
  176. package/dist/DashboardBrowser/dashboard-browser-resource.component.js.map +1 -1
  177. package/dist/DataExplorer/components/navigation-panel/navigation-panel.component.d.ts +2 -2
  178. package/dist/DataExplorer/data-explorer-dashboard.component.d.ts +3 -3
  179. package/dist/DataExplorer/data-explorer-dashboard.component.d.ts.map +1 -1
  180. package/dist/DataExplorer/data-explorer-dashboard.component.js +22 -6
  181. package/dist/DataExplorer/data-explorer-dashboard.component.js.map +1 -1
  182. package/dist/EntityAdmin/entity-admin-dashboard.component.js +2 -2
  183. package/dist/MCP/components/mcp-connection-dialog.component.d.ts +72 -0
  184. package/dist/MCP/components/mcp-connection-dialog.component.d.ts.map +1 -0
  185. package/dist/MCP/components/mcp-connection-dialog.component.js +529 -0
  186. package/dist/MCP/components/mcp-connection-dialog.component.js.map +1 -0
  187. package/dist/MCP/components/mcp-log-detail-panel.component.d.ts +77 -0
  188. package/dist/MCP/components/mcp-log-detail-panel.component.d.ts.map +1 -0
  189. package/dist/MCP/components/mcp-log-detail-panel.component.js +535 -0
  190. package/dist/MCP/components/mcp-log-detail-panel.component.js.map +1 -0
  191. package/dist/MCP/components/mcp-server-dialog.component.d.ts +77 -0
  192. package/dist/MCP/components/mcp-server-dialog.component.d.ts.map +1 -0
  193. package/dist/MCP/components/mcp-server-dialog.component.js +437 -0
  194. package/dist/MCP/components/mcp-server-dialog.component.js.map +1 -0
  195. package/dist/MCP/components/mcp-test-tool-dialog.component.d.ts +271 -0
  196. package/dist/MCP/components/mcp-test-tool-dialog.component.d.ts.map +1 -0
  197. package/dist/MCP/components/mcp-test-tool-dialog.component.js +1300 -0
  198. package/dist/MCP/components/mcp-test-tool-dialog.component.js.map +1 -0
  199. package/dist/MCP/index.d.ts +11 -0
  200. package/dist/MCP/index.d.ts.map +1 -0
  201. package/dist/MCP/index.js +15 -0
  202. package/dist/MCP/index.js.map +1 -0
  203. package/dist/MCP/mcp-dashboard.component.d.ts +409 -0
  204. package/dist/MCP/mcp-dashboard.component.d.ts.map +1 -0
  205. package/dist/MCP/mcp-dashboard.component.js +2486 -0
  206. package/dist/MCP/mcp-dashboard.component.js.map +1 -0
  207. package/dist/MCP/mcp-resource.component.d.ts +20 -0
  208. package/dist/MCP/mcp-resource.component.d.ts.map +1 -0
  209. package/dist/MCP/mcp-resource.component.js +55 -0
  210. package/dist/MCP/mcp-resource.component.js.map +1 -0
  211. package/dist/MCP/mcp.module.d.ts +27 -0
  212. package/dist/MCP/mcp.module.d.ts.map +1 -0
  213. package/dist/MCP/mcp.module.js +122 -0
  214. package/dist/MCP/mcp.module.js.map +1 -0
  215. package/dist/MCP/services/mcp-tools.service.d.ts +109 -0
  216. package/dist/MCP/services/mcp-tools.service.d.ts.map +1 -0
  217. package/dist/MCP/services/mcp-tools.service.js +222 -0
  218. package/dist/MCP/services/mcp-tools.service.js.map +1 -0
  219. package/dist/Scheduling/components/index.d.ts +5 -8
  220. package/dist/Scheduling/components/index.d.ts.map +1 -1
  221. package/dist/Scheduling/components/index.js +6 -9
  222. package/dist/Scheduling/components/index.js.map +1 -1
  223. package/dist/Scheduling/components/job-slideout.component.d.ts +45 -0
  224. package/dist/Scheduling/components/job-slideout.component.d.ts.map +1 -0
  225. package/dist/Scheduling/components/job-slideout.component.js +458 -0
  226. package/dist/Scheduling/components/job-slideout.component.js.map +1 -0
  227. package/dist/Scheduling/components/scheduling-activity-resource.component.d.ts +19 -0
  228. package/dist/Scheduling/components/scheduling-activity-resource.component.d.ts.map +1 -0
  229. package/dist/Scheduling/components/scheduling-activity-resource.component.js +51 -0
  230. package/dist/Scheduling/components/scheduling-activity-resource.component.js.map +1 -0
  231. package/dist/Scheduling/components/scheduling-activity.component.d.ts +71 -0
  232. package/dist/Scheduling/components/scheduling-activity.component.d.ts.map +1 -0
  233. package/dist/Scheduling/components/scheduling-activity.component.js +714 -0
  234. package/dist/Scheduling/components/scheduling-activity.component.js.map +1 -0
  235. package/dist/Scheduling/components/scheduling-jobs-resource.component.d.ts +3 -4
  236. package/dist/Scheduling/components/scheduling-jobs-resource.component.d.ts.map +1 -1
  237. package/dist/Scheduling/components/scheduling-jobs-resource.component.js +3 -7
  238. package/dist/Scheduling/components/scheduling-jobs-resource.component.js.map +1 -1
  239. package/dist/Scheduling/components/scheduling-jobs.component.d.ts +52 -34
  240. package/dist/Scheduling/components/scheduling-jobs.component.d.ts.map +1 -1
  241. package/dist/Scheduling/components/scheduling-jobs.component.js +446 -261
  242. package/dist/Scheduling/components/scheduling-jobs.component.js.map +1 -1
  243. package/dist/Scheduling/components/scheduling-overview-resource.component.d.ts +19 -0
  244. package/dist/Scheduling/components/scheduling-overview-resource.component.d.ts.map +1 -0
  245. package/dist/Scheduling/components/scheduling-overview-resource.component.js +51 -0
  246. package/dist/Scheduling/components/scheduling-overview-resource.component.js.map +1 -0
  247. package/dist/Scheduling/components/scheduling-overview.component.d.ts +43 -0
  248. package/dist/Scheduling/components/scheduling-overview.component.d.ts.map +1 -0
  249. package/dist/Scheduling/components/scheduling-overview.component.js +595 -0
  250. package/dist/Scheduling/components/scheduling-overview.component.js.map +1 -0
  251. package/dist/Scheduling/scheduling-dashboard.component.d.ts +22 -32
  252. package/dist/Scheduling/scheduling-dashboard.component.d.ts.map +1 -1
  253. package/dist/Scheduling/scheduling-dashboard.component.js +175 -169
  254. package/dist/Scheduling/scheduling-dashboard.component.js.map +1 -1
  255. package/dist/Scheduling/services/scheduling-instrumentation.service.d.ts +49 -6
  256. package/dist/Scheduling/services/scheduling-instrumentation.service.d.ts.map +1 -1
  257. package/dist/Scheduling/services/scheduling-instrumentation.service.js +218 -149
  258. package/dist/Scheduling/services/scheduling-instrumentation.service.js.map +1 -1
  259. package/dist/Testing/components/index.d.ts +7 -8
  260. package/dist/Testing/components/index.d.ts.map +1 -1
  261. package/dist/Testing/components/index.js +8 -9
  262. package/dist/Testing/components/index.js.map +1 -1
  263. package/dist/Testing/components/testing-analytics-resource.component.d.ts +0 -4
  264. package/dist/Testing/components/testing-analytics-resource.component.d.ts.map +1 -1
  265. package/dist/Testing/components/testing-analytics-resource.component.js +1 -7
  266. package/dist/Testing/components/testing-analytics-resource.component.js.map +1 -1
  267. package/dist/Testing/components/testing-analytics.component.d.ts +52 -37
  268. package/dist/Testing/components/testing-analytics.component.d.ts.map +1 -1
  269. package/dist/Testing/components/testing-analytics.component.js +1023 -569
  270. package/dist/Testing/components/testing-analytics.component.js.map +1 -1
  271. package/dist/Testing/components/testing-dashboard-tab-resource.component.d.ts +16 -0
  272. package/dist/Testing/components/testing-dashboard-tab-resource.component.d.ts.map +1 -0
  273. package/dist/Testing/components/testing-dashboard-tab-resource.component.js +47 -0
  274. package/dist/Testing/components/testing-dashboard-tab-resource.component.js.map +1 -0
  275. package/dist/Testing/components/testing-dashboard-tab.component.d.ts +57 -0
  276. package/dist/Testing/components/testing-dashboard-tab.component.d.ts.map +1 -0
  277. package/dist/Testing/components/testing-dashboard-tab.component.js +649 -0
  278. package/dist/Testing/components/testing-dashboard-tab.component.js.map +1 -0
  279. package/dist/{Scheduling/components/scheduling-types-resource.component.d.ts → Testing/components/testing-explorer-resource.component.d.ts} +5 -9
  280. package/dist/Testing/components/testing-explorer-resource.component.d.ts.map +1 -0
  281. package/dist/Testing/components/testing-explorer-resource.component.js +47 -0
  282. package/dist/Testing/components/testing-explorer-resource.component.js.map +1 -0
  283. package/dist/Testing/components/testing-explorer.component.d.ts +193 -0
  284. package/dist/Testing/components/testing-explorer.component.d.ts.map +1 -0
  285. package/dist/Testing/components/testing-explorer.component.js +2212 -0
  286. package/dist/Testing/components/testing-explorer.component.js.map +1 -0
  287. package/dist/Testing/components/testing-review-resource.component.d.ts +16 -0
  288. package/dist/Testing/components/testing-review-resource.component.d.ts.map +1 -0
  289. package/dist/Testing/components/testing-review-resource.component.js +47 -0
  290. package/dist/Testing/components/testing-review-resource.component.js.map +1 -0
  291. package/dist/Testing/components/testing-review.component.d.ts +60 -0
  292. package/dist/Testing/components/testing-review.component.d.ts.map +1 -0
  293. package/dist/Testing/components/testing-review.component.js +985 -0
  294. package/dist/Testing/components/testing-review.component.js.map +1 -0
  295. package/dist/Testing/components/testing-runs-resource.component.d.ts +16 -0
  296. package/dist/Testing/components/testing-runs-resource.component.d.ts.map +1 -0
  297. package/dist/Testing/components/testing-runs-resource.component.js +47 -0
  298. package/dist/Testing/components/testing-runs-resource.component.js.map +1 -0
  299. package/dist/Testing/components/testing-runs.component.d.ts +82 -0
  300. package/dist/Testing/components/testing-runs.component.d.ts.map +1 -0
  301. package/dist/Testing/components/testing-runs.component.js +1067 -0
  302. package/dist/Testing/components/testing-runs.component.js.map +1 -0
  303. package/dist/Testing/testing-dashboard.component.d.ts +12 -15
  304. package/dist/Testing/testing-dashboard.component.d.ts.map +1 -1
  305. package/dist/Testing/testing-dashboard.component.js +46 -68
  306. package/dist/Testing/testing-dashboard.component.js.map +1 -1
  307. package/dist/module.d.ts +121 -97
  308. package/dist/module.d.ts.map +1 -1
  309. package/dist/module.js +227 -95
  310. package/dist/module.js.map +1 -1
  311. package/dist/public-api.d.ts +12 -3
  312. package/dist/public-api.d.ts.map +1 -1
  313. package/dist/public-api.js +47 -16
  314. package/dist/public-api.js.map +1 -1
  315. package/dist/shared/pipes/highlight-search.pipe.d.ts +17 -0
  316. package/dist/shared/pipes/highlight-search.pipe.d.ts.map +1 -0
  317. package/dist/shared/pipes/highlight-search.pipe.js +40 -0
  318. package/dist/shared/pipes/highlight-search.pipe.js.map +1 -0
  319. package/dist/shared/pipes/index.d.ts +2 -0
  320. package/dist/shared/pipes/index.d.ts.map +1 -0
  321. package/dist/shared/pipes/index.js +2 -0
  322. package/dist/shared/pipes/index.js.map +1 -0
  323. package/dist/shared/shared-pipes.module.d.ts +11 -0
  324. package/dist/shared/shared-pipes.module.d.ts.map +1 -0
  325. package/dist/shared/shared-pipes.module.js +24 -0
  326. package/dist/shared/shared-pipes.module.js.map +1 -0
  327. package/package.json +39 -32
  328. package/dist/Credentials/components/credential-category-edit-panel.component.d.ts +0 -44
  329. package/dist/Credentials/components/credential-category-edit-panel.component.d.ts.map +0 -1
  330. package/dist/Credentials/components/credential-category-edit-panel.component.js +0 -456
  331. package/dist/Credentials/components/credential-category-edit-panel.component.js.map +0 -1
  332. package/dist/Credentials/components/credential-edit-panel.component.d.ts +0 -70
  333. package/dist/Credentials/components/credential-edit-panel.component.d.ts.map +0 -1
  334. package/dist/Credentials/components/credential-edit-panel.component.js +0 -694
  335. package/dist/Credentials/components/credential-edit-panel.component.js.map +0 -1
  336. package/dist/Credentials/components/credential-type-edit-panel.component.d.ts +0 -56
  337. package/dist/Credentials/components/credential-type-edit-panel.component.d.ts.map +0 -1
  338. package/dist/Credentials/components/credential-type-edit-panel.component.js +0 -563
  339. package/dist/Credentials/components/credential-type-edit-panel.component.js.map +0 -1
  340. package/dist/Scheduling/components/scheduling-health-resource.component.d.ts +0 -20
  341. package/dist/Scheduling/components/scheduling-health-resource.component.d.ts.map +0 -1
  342. package/dist/Scheduling/components/scheduling-health-resource.component.js +0 -55
  343. package/dist/Scheduling/components/scheduling-health-resource.component.js.map +0 -1
  344. package/dist/Scheduling/components/scheduling-health.component.d.ts +0 -30
  345. package/dist/Scheduling/components/scheduling-health.component.d.ts.map +0 -1
  346. package/dist/Scheduling/components/scheduling-health.component.js +0 -315
  347. package/dist/Scheduling/components/scheduling-health.component.js.map +0 -1
  348. package/dist/Scheduling/components/scheduling-history-resource.component.d.ts +0 -20
  349. package/dist/Scheduling/components/scheduling-history-resource.component.d.ts.map +0 -1
  350. package/dist/Scheduling/components/scheduling-history-resource.component.js +0 -55
  351. package/dist/Scheduling/components/scheduling-history-resource.component.js.map +0 -1
  352. package/dist/Scheduling/components/scheduling-history.component.d.ts +0 -48
  353. package/dist/Scheduling/components/scheduling-history.component.d.ts.map +0 -1
  354. package/dist/Scheduling/components/scheduling-history.component.js +0 -377
  355. package/dist/Scheduling/components/scheduling-history.component.js.map +0 -1
  356. package/dist/Scheduling/components/scheduling-monitor-resource.component.d.ts +0 -20
  357. package/dist/Scheduling/components/scheduling-monitor-resource.component.d.ts.map +0 -1
  358. package/dist/Scheduling/components/scheduling-monitor-resource.component.js +0 -55
  359. package/dist/Scheduling/components/scheduling-monitor-resource.component.js.map +0 -1
  360. package/dist/Scheduling/components/scheduling-monitoring.component.d.ts +0 -37
  361. package/dist/Scheduling/components/scheduling-monitoring.component.d.ts.map +0 -1
  362. package/dist/Scheduling/components/scheduling-monitoring.component.js +0 -488
  363. package/dist/Scheduling/components/scheduling-monitoring.component.js.map +0 -1
  364. package/dist/Scheduling/components/scheduling-types-resource.component.d.ts.map +0 -1
  365. package/dist/Scheduling/components/scheduling-types-resource.component.js +0 -55
  366. package/dist/Scheduling/components/scheduling-types-resource.component.js.map +0 -1
  367. package/dist/Scheduling/components/scheduling-types.component.d.ts +0 -22
  368. package/dist/Scheduling/components/scheduling-types.component.d.ts.map +0 -1
  369. package/dist/Scheduling/components/scheduling-types.component.js +0 -165
  370. package/dist/Scheduling/components/scheduling-types.component.js.map +0 -1
  371. package/dist/Testing/components/testing-execution-resource.component.d.ts +0 -20
  372. package/dist/Testing/components/testing-execution-resource.component.d.ts.map +0 -1
  373. package/dist/Testing/components/testing-execution-resource.component.js +0 -55
  374. package/dist/Testing/components/testing-execution-resource.component.js.map +0 -1
  375. package/dist/Testing/components/testing-execution.component.d.ts +0 -71
  376. package/dist/Testing/components/testing-execution.component.d.ts.map +0 -1
  377. package/dist/Testing/components/testing-execution.component.js +0 -845
  378. package/dist/Testing/components/testing-execution.component.js.map +0 -1
  379. package/dist/Testing/components/testing-feedback-resource.component.d.ts +0 -20
  380. package/dist/Testing/components/testing-feedback-resource.component.d.ts.map +0 -1
  381. package/dist/Testing/components/testing-feedback-resource.component.js +0 -55
  382. package/dist/Testing/components/testing-feedback-resource.component.js.map +0 -1
  383. package/dist/Testing/components/testing-feedback.component.d.ts +0 -111
  384. package/dist/Testing/components/testing-feedback.component.d.ts.map +0 -1
  385. package/dist/Testing/components/testing-feedback.component.js +0 -1486
  386. package/dist/Testing/components/testing-feedback.component.js.map +0 -1
  387. package/dist/Testing/components/testing-overview-resource.component.d.ts +0 -20
  388. package/dist/Testing/components/testing-overview-resource.component.d.ts.map +0 -1
  389. package/dist/Testing/components/testing-overview-resource.component.js +0 -55
  390. package/dist/Testing/components/testing-overview-resource.component.js.map +0 -1
  391. package/dist/Testing/components/testing-overview.component.d.ts +0 -30
  392. package/dist/Testing/components/testing-overview.component.d.ts.map +0 -1
  393. package/dist/Testing/components/testing-overview.component.js +0 -361
  394. package/dist/Testing/components/testing-overview.component.js.map +0 -1
  395. package/dist/Testing/components/testing-version-comparison.component.d.ts +0 -62
  396. package/dist/Testing/components/testing-version-comparison.component.d.ts.map +0 -1
  397. package/dist/Testing/components/testing-version-comparison.component.js +0 -815
  398. package/dist/Testing/components/testing-version-comparison.component.js.map +0 -1
  399. package/dist/Testing/components/testing-version-resource.component.d.ts +0 -20
  400. package/dist/Testing/components/testing-version-resource.component.d.ts.map +0 -1
  401. package/dist/Testing/components/testing-version-resource.component.js +0 -55
  402. package/dist/Testing/components/testing-version-resource.component.js.map +0 -1
@@ -0,0 +1,636 @@
1
+ import { Component, Output, EventEmitter } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "../../services/component-studio-state.service";
4
+ import * as i2 from "@angular/common";
5
+ import * as i3 from "@progress/kendo-angular-inputs";
6
+ import * as i4 from "@progress/kendo-angular-buttons";
7
+ import * as i5 from "@memberjunction/ng-shared-generic";
8
+ function ComponentBrowserComponent_Conditional_11_Template(rf, ctx) { if (rf & 1) {
9
+ const _r1 = i0.ɵɵgetCurrentView();
10
+ i0.ɵɵelementStart(0, "div", 8)(1, "button", 21);
11
+ i0.ɵɵlistener("click", function ComponentBrowserComponent_Conditional_11_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.OnImportFromArtifact()); });
12
+ i0.ɵɵelement(2, "i", 22);
13
+ i0.ɵɵtext(3, " From Artifact ");
14
+ i0.ɵɵelementEnd();
15
+ i0.ɵɵelementStart(4, "button", 21);
16
+ i0.ɵɵlistener("click", function ComponentBrowserComponent_Conditional_11_Template_button_click_4_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.OnImportFromFile()); });
17
+ i0.ɵɵelement(5, "i", 23);
18
+ i0.ɵɵtext(6, " From File ");
19
+ i0.ɵɵelementEnd();
20
+ i0.ɵɵelementStart(7, "button", 21);
21
+ i0.ɵɵlistener("click", function ComponentBrowserComponent_Conditional_11_Template_button_click_7_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.OnImportFromText()); });
22
+ i0.ɵɵelement(8, "i", 24);
23
+ i0.ɵɵtext(9, " From Text ");
24
+ i0.ɵɵelementEnd()();
25
+ } }
26
+ function ComponentBrowserComponent_Conditional_15_Template(rf, ctx) { if (rf & 1) {
27
+ i0.ɵɵelementStart(0, "span", 12);
28
+ i0.ɵɵtext(1);
29
+ i0.ɵɵelementEnd();
30
+ } if (rf & 2) {
31
+ const ctx_r1 = i0.ɵɵnextContext();
32
+ i0.ɵɵadvance();
33
+ i0.ɵɵtextInterpolate(ctx_r1.State.GetActiveFilterCount());
34
+ } }
35
+ function ComponentBrowserComponent_ng_template_20_Template(rf, ctx) { if (rf & 1) {
36
+ i0.ɵɵelement(0, "i", 25);
37
+ } }
38
+ function ComponentBrowserComponent_Conditional_21_Conditional_16_Template(rf, ctx) { if (rf & 1) {
39
+ i0.ɵɵelementStart(0, "span", 34);
40
+ i0.ɵɵtext(1);
41
+ i0.ɵɵelementEnd();
42
+ } if (rf & 2) {
43
+ const ctx_r1 = i0.ɵɵnextContext(2);
44
+ i0.ɵɵadvance();
45
+ i0.ɵɵtextInterpolate1("(", ctx_r1.State.GetDeprecatedCount(), ")");
46
+ } }
47
+ function ComponentBrowserComponent_Conditional_21_Conditional_17_For_5_Template(rf, ctx) { if (rf & 1) {
48
+ const _r4 = i0.ɵɵgetCurrentView();
49
+ i0.ɵɵelementStart(0, "button", 39);
50
+ i0.ɵɵlistener("click", function ComponentBrowserComponent_Conditional_21_Conditional_17_For_5_Template_button_click_0_listener() { const category_r5 = i0.ɵɵrestoreView(_r4).$implicit; const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.State.ToggleCategory(category_r5.name)); });
51
+ i0.ɵɵelementStart(1, "span", 40);
52
+ i0.ɵɵtext(2);
53
+ i0.ɵɵelementEnd();
54
+ i0.ɵɵelementStart(3, "span", 41);
55
+ i0.ɵɵtext(4);
56
+ i0.ɵɵelementEnd()();
57
+ } if (rf & 2) {
58
+ const category_r5 = ctx.$implicit;
59
+ const ctx_r1 = i0.ɵɵnextContext(3);
60
+ i0.ɵɵstyleProp("--pill-color", category_r5.color);
61
+ i0.ɵɵclassProp("active", ctx_r1.State.IsCategorySelected(category_r5.name));
62
+ i0.ɵɵadvance(2);
63
+ i0.ɵɵtextInterpolate(category_r5.name);
64
+ i0.ɵɵadvance(2);
65
+ i0.ɵɵtextInterpolate(category_r5.count);
66
+ } }
67
+ function ComponentBrowserComponent_Conditional_21_Conditional_17_Conditional_6_Conditional_1_Template(rf, ctx) { if (rf & 1) {
68
+ i0.ɵɵelement(0, "i", 43);
69
+ i0.ɵɵtext(1, " Show less ");
70
+ } }
71
+ function ComponentBrowserComponent_Conditional_21_Conditional_17_Conditional_6_Conditional_2_Template(rf, ctx) { if (rf & 1) {
72
+ i0.ɵɵelement(0, "i", 44);
73
+ i0.ɵɵtext(1);
74
+ } if (rf & 2) {
75
+ const ctx_r1 = i0.ɵɵnextContext(4);
76
+ i0.ɵɵadvance();
77
+ i0.ɵɵtextInterpolate1(" Show ", ctx_r1.State.AvailableCategories.length - 5, " more ");
78
+ } }
79
+ function ComponentBrowserComponent_Conditional_21_Conditional_17_Conditional_6_Template(rf, ctx) { if (rf & 1) {
80
+ const _r6 = i0.ɵɵgetCurrentView();
81
+ i0.ɵɵelementStart(0, "button", 42);
82
+ i0.ɵɵlistener("click", function ComponentBrowserComponent_Conditional_21_Conditional_17_Conditional_6_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r6); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.State.ToggleShowAllCategories()); });
83
+ i0.ɵɵtemplate(1, ComponentBrowserComponent_Conditional_21_Conditional_17_Conditional_6_Conditional_1_Template, 2, 0)(2, ComponentBrowserComponent_Conditional_21_Conditional_17_Conditional_6_Conditional_2_Template, 2, 1);
84
+ i0.ɵɵelementEnd();
85
+ } if (rf & 2) {
86
+ const ctx_r1 = i0.ɵɵnextContext(3);
87
+ i0.ɵɵadvance();
88
+ i0.ɵɵconditional(ctx_r1.State.ShowAllCategories ? 1 : 2);
89
+ } }
90
+ function ComponentBrowserComponent_Conditional_21_Conditional_17_Template(rf, ctx) { if (rf & 1) {
91
+ i0.ɵɵelementStart(0, "div", 27)(1, "label", 28);
92
+ i0.ɵɵtext(2, "Categories");
93
+ i0.ɵɵelementEnd();
94
+ i0.ɵɵelementStart(3, "div", 36);
95
+ i0.ɵɵrepeaterCreate(4, ComponentBrowserComponent_Conditional_21_Conditional_17_For_5_Template, 5, 6, "button", 37, i0.ɵɵcomponentInstance().TrackByCategoryName, true);
96
+ i0.ɵɵelementEnd();
97
+ i0.ɵɵtemplate(6, ComponentBrowserComponent_Conditional_21_Conditional_17_Conditional_6_Template, 3, 1, "button", 38);
98
+ i0.ɵɵelementEnd();
99
+ } if (rf & 2) {
100
+ const ctx_r1 = i0.ɵɵnextContext(2);
101
+ i0.ɵɵadvance(4);
102
+ i0.ɵɵrepeater(ctx_r1.State.GetVisibleCategories());
103
+ i0.ɵɵadvance(2);
104
+ i0.ɵɵconditional(ctx_r1.State.AvailableCategories.length > 5 ? 6 : -1);
105
+ } }
106
+ function ComponentBrowserComponent_Conditional_21_Conditional_18_Template(rf, ctx) { if (rf & 1) {
107
+ const _r7 = i0.ɵɵgetCurrentView();
108
+ i0.ɵɵelementStart(0, "div", 35)(1, "button", 45);
109
+ i0.ɵɵlistener("click", function ComponentBrowserComponent_Conditional_21_Conditional_18_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r7); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.State.ClearAllFilters()); });
110
+ i0.ɵɵelement(2, "i", 46);
111
+ i0.ɵɵtext(3, " Clear All Filters ");
112
+ i0.ɵɵelementEnd()();
113
+ } }
114
+ function ComponentBrowserComponent_Conditional_21_Template(rf, ctx) { if (rf & 1) {
115
+ const _r3 = i0.ɵɵgetCurrentView();
116
+ i0.ɵɵelementStart(0, "div", 17)(1, "div", 26)(2, "div", 27)(3, "label", 28);
117
+ i0.ɵɵtext(4, "Quick Filters");
118
+ i0.ɵɵelementEnd();
119
+ i0.ɵɵelementStart(5, "div", 29)(6, "label", 30)(7, "input", 31);
120
+ i0.ɵɵlistener("change", function ComponentBrowserComponent_Conditional_21_Template_input_change_7_listener() { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.State.ToggleShowOnlyFavorites()); });
121
+ i0.ɵɵelementEnd();
122
+ i0.ɵɵelement(8, "i", 32);
123
+ i0.ɵɵelementStart(9, "span");
124
+ i0.ɵɵtext(10, "Favorites only");
125
+ i0.ɵɵelementEnd()();
126
+ i0.ɵɵelementStart(11, "label", 30)(12, "input", 31);
127
+ i0.ɵɵlistener("change", function ComponentBrowserComponent_Conditional_21_Template_input_change_12_listener() { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.State.ToggleShowDeprecatedComponents()); });
128
+ i0.ɵɵelementEnd();
129
+ i0.ɵɵelement(13, "i", 33);
130
+ i0.ɵɵelementStart(14, "span");
131
+ i0.ɵɵtext(15, "Show deprecated ");
132
+ i0.ɵɵtemplate(16, ComponentBrowserComponent_Conditional_21_Conditional_16_Template, 2, 1, "span", 34);
133
+ i0.ɵɵelementEnd()()()();
134
+ i0.ɵɵtemplate(17, ComponentBrowserComponent_Conditional_21_Conditional_17_Template, 7, 1, "div", 27)(18, ComponentBrowserComponent_Conditional_21_Conditional_18_Template, 4, 0, "div", 35);
135
+ i0.ɵɵelementEnd()();
136
+ } if (rf & 2) {
137
+ const ctx_r1 = i0.ɵɵnextContext();
138
+ i0.ɵɵadvance(7);
139
+ i0.ɵɵproperty("checked", ctx_r1.State.ShowOnlyFavorites);
140
+ i0.ɵɵadvance(5);
141
+ i0.ɵɵproperty("checked", ctx_r1.State.ShowDeprecatedComponents);
142
+ i0.ɵɵadvance(4);
143
+ i0.ɵɵconditional(ctx_r1.State.GetDeprecatedCount() > 0 ? 16 : -1);
144
+ i0.ɵɵadvance();
145
+ i0.ɵɵconditional(ctx_r1.State.AvailableCategories.length > 0 ? 17 : -1);
146
+ i0.ɵɵadvance();
147
+ i0.ɵɵconditional(ctx_r1.State.GetActiveFilterCount() > 0 ? 18 : -1);
148
+ } }
149
+ function ComponentBrowserComponent_Conditional_23_Template(rf, ctx) { if (rf & 1) {
150
+ i0.ɵɵelementStart(0, "div", 19);
151
+ i0.ɵɵelement(1, "mj-loading", 47);
152
+ i0.ɵɵelementEnd();
153
+ } }
154
+ function ComponentBrowserComponent_Conditional_24_Conditional_1_Template(rf, ctx) { if (rf & 1) {
155
+ i0.ɵɵelement(0, "i", 48);
156
+ i0.ɵɵelementStart(1, "p", 49);
157
+ i0.ɵɵtext(2, "No components found");
158
+ i0.ɵɵelementEnd();
159
+ i0.ɵɵelementStart(3, "p", 50);
160
+ i0.ɵɵtext(4, "Create a new component or import one to get started.");
161
+ i0.ɵɵelementEnd();
162
+ } }
163
+ function ComponentBrowserComponent_Conditional_24_Conditional_2_Template(rf, ctx) { if (rf & 1) {
164
+ i0.ɵɵelement(0, "i", 51);
165
+ i0.ɵɵelementStart(1, "p", 49);
166
+ i0.ɵɵtext(2, "No matching components");
167
+ i0.ɵɵelementEnd();
168
+ i0.ɵɵelementStart(3, "p", 50);
169
+ i0.ɵɵtext(4, "Try adjusting your search or filters.");
170
+ i0.ɵɵelementEnd();
171
+ } }
172
+ function ComponentBrowserComponent_Conditional_24_Template(rf, ctx) { if (rf & 1) {
173
+ i0.ɵɵelementStart(0, "div", 20);
174
+ i0.ɵɵtemplate(1, ComponentBrowserComponent_Conditional_24_Conditional_1_Template, 5, 0)(2, ComponentBrowserComponent_Conditional_24_Conditional_2_Template, 5, 0);
175
+ i0.ɵɵelementEnd();
176
+ } if (rf & 2) {
177
+ const ctx_r1 = i0.ɵɵnextContext();
178
+ i0.ɵɵadvance();
179
+ i0.ɵɵconditional(ctx_r1.State.AllComponents.length === 0 ? 1 : 2);
180
+ } }
181
+ function ComponentBrowserComponent_Conditional_25_For_1_Conditional_8_Template(rf, ctx) { if (rf & 1) {
182
+ i0.ɵɵelementStart(0, "span", 60);
183
+ i0.ɵɵelement(1, "i", 56);
184
+ i0.ɵɵtext(2);
185
+ i0.ɵɵelementEnd();
186
+ } if (rf & 2) {
187
+ const component_r9 = i0.ɵɵnextContext().$implicit;
188
+ const ctx_r1 = i0.ɵɵnextContext(2);
189
+ i0.ɵɵproperty("title", ctx_r1.GetFileBadgeTooltip(component_r9));
190
+ i0.ɵɵadvance();
191
+ i0.ɵɵproperty("ngClass", ctx_r1.GetFileBadgeIcon(component_r9));
192
+ i0.ɵɵadvance();
193
+ i0.ɵɵtextInterpolate1(" ", ctx_r1.GetFileBadgeLabel(component_r9), " ");
194
+ } }
195
+ function ComponentBrowserComponent_Conditional_25_For_1_Conditional_18_Conditional_1_Template(rf, ctx) { if (rf & 1) {
196
+ i0.ɵɵelement(0, "i", 72);
197
+ } }
198
+ function ComponentBrowserComponent_Conditional_25_For_1_Conditional_18_Conditional_2_Template(rf, ctx) { if (rf & 1) {
199
+ i0.ɵɵelement(0, "i", 73);
200
+ } }
201
+ function ComponentBrowserComponent_Conditional_25_For_1_Conditional_18_Template(rf, ctx) { if (rf & 1) {
202
+ const _r10 = i0.ɵɵgetCurrentView();
203
+ i0.ɵɵelementStart(0, "button", 71);
204
+ i0.ɵɵlistener("click", function ComponentBrowserComponent_Conditional_25_For_1_Conditional_18_Template_button_click_0_listener($event) { i0.ɵɵrestoreView(_r10); const component_r9 = i0.ɵɵnextContext().$implicit; const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.OnToggleFavorite(component_r9, $event)); });
205
+ i0.ɵɵtemplate(1, ComponentBrowserComponent_Conditional_25_For_1_Conditional_18_Conditional_1_Template, 1, 0, "i", 72)(2, ComponentBrowserComponent_Conditional_25_For_1_Conditional_18_Conditional_2_Template, 1, 0, "i", 73);
206
+ i0.ɵɵelementEnd();
207
+ } if (rf & 2) {
208
+ const component_r9 = i0.ɵɵnextContext().$implicit;
209
+ const ctx_r1 = i0.ɵɵnextContext(2);
210
+ i0.ɵɵclassProp("is-favorite", ctx_r1.State.IsFavorite(component_r9));
211
+ i0.ɵɵproperty("title", ctx_r1.State.IsFavorite(component_r9) ? "Remove from favorites" : "Add to favorites");
212
+ i0.ɵɵadvance();
213
+ i0.ɵɵconditional(ctx_r1.State.IsFavorite(component_r9) ? 1 : 2);
214
+ } }
215
+ function ComponentBrowserComponent_Conditional_25_For_1_Conditional_19_Template(rf, ctx) { if (rf & 1) {
216
+ const _r11 = i0.ɵɵgetCurrentView();
217
+ i0.ɵɵelementStart(0, "button", 74);
218
+ i0.ɵɵlistener("click", function ComponentBrowserComponent_Conditional_25_For_1_Conditional_19_Template_button_click_0_listener($event) { i0.ɵɵrestoreView(_r11); const component_r9 = i0.ɵɵnextContext().$implicit; const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.OnRemoveFileComponent(component_r9, $event)); });
219
+ i0.ɵɵelement(1, "i", 46);
220
+ i0.ɵɵelementEnd();
221
+ } }
222
+ function ComponentBrowserComponent_Conditional_25_For_1_Conditional_21_Template(rf, ctx) { if (rf & 1) {
223
+ i0.ɵɵelement(0, "i", 43);
224
+ } }
225
+ function ComponentBrowserComponent_Conditional_25_For_1_Conditional_22_Template(rf, ctx) { if (rf & 1) {
226
+ i0.ɵɵelement(0, "i", 44);
227
+ } }
228
+ function ComponentBrowserComponent_Conditional_25_For_1_Conditional_23_Conditional_1_Template(rf, ctx) { if (rf & 1) {
229
+ i0.ɵɵelementStart(0, "div", 75)(1, "p");
230
+ i0.ɵɵtext(2);
231
+ i0.ɵɵelementEnd()();
232
+ } if (rf & 2) {
233
+ const component_r9 = i0.ɵɵnextContext(2).$implicit;
234
+ const ctx_r1 = i0.ɵɵnextContext(2);
235
+ i0.ɵɵadvance(2);
236
+ i0.ɵɵtextInterpolate(ctx_r1.State.GetComponentDescription(component_r9));
237
+ } }
238
+ function ComponentBrowserComponent_Conditional_25_For_1_Conditional_23_Conditional_18_Template(rf, ctx) { if (rf & 1) {
239
+ i0.ɵɵelementStart(0, "div", 77)(1, "span", 78);
240
+ i0.ɵɵtext(2, "Loaded");
241
+ i0.ɵɵelementEnd();
242
+ i0.ɵɵelementStart(3, "span", 79);
243
+ i0.ɵɵtext(4);
244
+ i0.ɵɵpipe(5, "date");
245
+ i0.ɵɵelementEnd()();
246
+ } if (rf & 2) {
247
+ const component_r9 = i0.ɵɵnextContext(2).$implicit;
248
+ const ctx_r1 = i0.ɵɵnextContext(2);
249
+ i0.ɵɵadvance(4);
250
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind2(5, 1, ctx_r1.State.GetComponentLoadedAt(component_r9), "short"));
251
+ } }
252
+ function ComponentBrowserComponent_Conditional_25_For_1_Conditional_23_Conditional_19_Template(rf, ctx) { if (rf & 1) {
253
+ i0.ɵɵelementStart(0, "div", 77)(1, "span", 78);
254
+ i0.ɵɵtext(2, "Updated");
255
+ i0.ɵɵelementEnd();
256
+ i0.ɵɵelementStart(3, "span", 79);
257
+ i0.ɵɵtext(4);
258
+ i0.ɵɵpipe(5, "date");
259
+ i0.ɵɵelementEnd()();
260
+ } if (rf & 2) {
261
+ const component_r9 = i0.ɵɵnextContext(2).$implicit;
262
+ const ctx_r1 = i0.ɵɵnextContext(2);
263
+ i0.ɵɵadvance(4);
264
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind2(5, 1, ctx_r1.State.GetComponentUpdatedAt(component_r9), "short"));
265
+ } }
266
+ function ComponentBrowserComponent_Conditional_25_For_1_Conditional_23_Conditional_21_Template(rf, ctx) { if (rf & 1) {
267
+ const _r12 = i0.ɵɵgetCurrentView();
268
+ i0.ɵɵelementStart(0, "button", 3);
269
+ i0.ɵɵlistener("click", function ComponentBrowserComponent_Conditional_25_For_1_Conditional_23_Conditional_21_Template_button_click_0_listener($event) { i0.ɵɵrestoreView(_r12); const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.OnStopComponent($event)); });
270
+ i0.ɵɵelement(1, "i", 83);
271
+ i0.ɵɵtext(2, " Stop ");
272
+ i0.ɵɵelementEnd();
273
+ } if (rf & 2) {
274
+ i0.ɵɵproperty("themeColor", "error");
275
+ } }
276
+ function ComponentBrowserComponent_Conditional_25_For_1_Conditional_23_Conditional_22_Template(rf, ctx) { if (rf & 1) {
277
+ const _r13 = i0.ɵɵgetCurrentView();
278
+ i0.ɵɵelementStart(0, "button", 84);
279
+ i0.ɵɵlistener("click", function ComponentBrowserComponent_Conditional_25_For_1_Conditional_23_Conditional_22_Template_button_click_0_listener($event) { i0.ɵɵrestoreView(_r13); const component_r9 = i0.ɵɵnextContext(2).$implicit; const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.OnSwitchComponent(component_r9, $event)); });
280
+ i0.ɵɵelement(1, "i", 85);
281
+ i0.ɵɵtext(2, " Switch To This ");
282
+ i0.ɵɵelementEnd();
283
+ } if (rf & 2) {
284
+ i0.ɵɵproperty("themeColor", "base");
285
+ } }
286
+ function ComponentBrowserComponent_Conditional_25_For_1_Conditional_23_Conditional_23_Template(rf, ctx) { if (rf & 1) {
287
+ const _r14 = i0.ɵɵgetCurrentView();
288
+ i0.ɵɵelementStart(0, "button", 3);
289
+ i0.ɵɵlistener("click", function ComponentBrowserComponent_Conditional_25_For_1_Conditional_23_Conditional_23_Template_button_click_0_listener($event) { i0.ɵɵrestoreView(_r14); const component_r9 = i0.ɵɵnextContext(2).$implicit; const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.OnRunComponent(component_r9, $event)); });
290
+ i0.ɵɵelement(1, "i", 86);
291
+ i0.ɵɵtext(2, " Run ");
292
+ i0.ɵɵelementEnd();
293
+ } if (rf & 2) {
294
+ i0.ɵɵproperty("themeColor", "primary");
295
+ } }
296
+ function ComponentBrowserComponent_Conditional_25_For_1_Conditional_23_Template(rf, ctx) { if (rf & 1) {
297
+ i0.ɵɵelementStart(0, "div", 70);
298
+ i0.ɵɵtemplate(1, ComponentBrowserComponent_Conditional_25_For_1_Conditional_23_Conditional_1_Template, 3, 1, "div", 75);
299
+ i0.ɵɵelementStart(2, "div", 76)(3, "div", 77)(4, "span", 78);
300
+ i0.ɵɵtext(5, "Type");
301
+ i0.ɵɵelementEnd();
302
+ i0.ɵɵelementStart(6, "span", 79);
303
+ i0.ɵɵtext(7);
304
+ i0.ɵɵelementEnd()();
305
+ i0.ɵɵelementStart(8, "div", 77)(9, "span", 78);
306
+ i0.ɵɵtext(10, "Version");
307
+ i0.ɵɵelementEnd();
308
+ i0.ɵɵelementStart(11, "span", 79);
309
+ i0.ɵɵtext(12);
310
+ i0.ɵɵelementEnd()();
311
+ i0.ɵɵelementStart(13, "div", 77)(14, "span", 78);
312
+ i0.ɵɵtext(15, "Status");
313
+ i0.ɵɵelementEnd();
314
+ i0.ɵɵelementStart(16, "span", 79);
315
+ i0.ɵɵtext(17);
316
+ i0.ɵɵelementEnd()();
317
+ i0.ɵɵtemplate(18, ComponentBrowserComponent_Conditional_25_For_1_Conditional_23_Conditional_18_Template, 6, 4, "div", 77)(19, ComponentBrowserComponent_Conditional_25_For_1_Conditional_23_Conditional_19_Template, 6, 4, "div", 77);
318
+ i0.ɵɵelementEnd();
319
+ i0.ɵɵelementStart(20, "div", 80);
320
+ i0.ɵɵtemplate(21, ComponentBrowserComponent_Conditional_25_For_1_Conditional_23_Conditional_21_Template, 3, 1, "button", 81)(22, ComponentBrowserComponent_Conditional_25_For_1_Conditional_23_Conditional_22_Template, 3, 1, "button", 82)(23, ComponentBrowserComponent_Conditional_25_For_1_Conditional_23_Conditional_23_Template, 3, 1, "button", 81);
321
+ i0.ɵɵelementEnd()();
322
+ } if (rf & 2) {
323
+ const component_r9 = i0.ɵɵnextContext().$implicit;
324
+ const ctx_r1 = i0.ɵɵnextContext(2);
325
+ i0.ɵɵadvance();
326
+ i0.ɵɵconditional(ctx_r1.State.GetComponentDescription(component_r9) ? 1 : -1);
327
+ i0.ɵɵadvance(6);
328
+ i0.ɵɵtextInterpolate(ctx_r1.State.GetComponentType(component_r9) || "Unknown");
329
+ i0.ɵɵadvance(5);
330
+ i0.ɵɵtextInterpolate(ctx_r1.State.GetComponentVersion(component_r9));
331
+ i0.ɵɵadvance(5);
332
+ i0.ɵɵtextInterpolate(ctx_r1.State.GetComponentStatus(component_r9) || "Draft");
333
+ i0.ɵɵadvance();
334
+ i0.ɵɵconditional(ctx_r1.State.IsFileLoadedComponent(component_r9) ? 18 : ctx_r1.State.GetComponentUpdatedAt(component_r9) ? 19 : -1);
335
+ i0.ɵɵadvance(3);
336
+ i0.ɵɵconditional(ctx_r1.IsComponentRunning(component_r9) ? 21 : ctx_r1.IsAnotherComponentRunning(component_r9) ? 22 : 23);
337
+ } }
338
+ function ComponentBrowserComponent_Conditional_25_For_1_Template(rf, ctx) { if (rf & 1) {
339
+ const _r8 = i0.ɵɵgetCurrentView();
340
+ i0.ɵɵelementStart(0, "div", 53)(1, "div", 54);
341
+ i0.ɵɵlistener("click", function ComponentBrowserComponent_Conditional_25_For_1_Template_div_click_1_listener() { const component_r9 = i0.ɵɵrestoreView(_r8).$implicit; const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.ToggleComponentExpansion(component_r9)); });
342
+ i0.ɵɵelementStart(2, "div", 55);
343
+ i0.ɵɵelement(3, "i", 56);
344
+ i0.ɵɵelementEnd();
345
+ i0.ɵɵelementStart(4, "div", 57)(5, "div", 58)(6, "span", 59);
346
+ i0.ɵɵtext(7);
347
+ i0.ɵɵelementEnd();
348
+ i0.ɵɵtemplate(8, ComponentBrowserComponent_Conditional_25_For_1_Conditional_8_Template, 3, 3, "span", 60);
349
+ i0.ɵɵelementEnd();
350
+ i0.ɵɵelementStart(9, "div", 61)(10, "span", 62);
351
+ i0.ɵɵtext(11);
352
+ i0.ɵɵelementEnd();
353
+ i0.ɵɵelementStart(12, "span", 63);
354
+ i0.ɵɵtext(13);
355
+ i0.ɵɵelementEnd();
356
+ i0.ɵɵelementStart(14, "span", 64);
357
+ i0.ɵɵelement(15, "i", 65);
358
+ i0.ɵɵtext(16);
359
+ i0.ɵɵelementEnd()()();
360
+ i0.ɵɵelementStart(17, "div", 66);
361
+ i0.ɵɵtemplate(18, ComponentBrowserComponent_Conditional_25_For_1_Conditional_18_Template, 3, 4, "button", 67)(19, ComponentBrowserComponent_Conditional_25_For_1_Conditional_19_Template, 2, 0, "button", 68);
362
+ i0.ɵɵelementStart(20, "div", 69);
363
+ i0.ɵɵtemplate(21, ComponentBrowserComponent_Conditional_25_For_1_Conditional_21_Template, 1, 0, "i", 43)(22, ComponentBrowserComponent_Conditional_25_For_1_Conditional_22_Template, 1, 0, "i", 44);
364
+ i0.ɵɵelementEnd()()();
365
+ i0.ɵɵtemplate(23, ComponentBrowserComponent_Conditional_25_For_1_Conditional_23_Template, 24, 6, "div", 70);
366
+ i0.ɵɵelementEnd();
367
+ } if (rf & 2) {
368
+ const component_r9 = ctx.$implicit;
369
+ const ctx_r1 = i0.ɵɵnextContext(2);
370
+ i0.ɵɵclassProp("expanded", ctx_r1.IsExpanded(component_r9))("running", ctx_r1.IsComponentRunning(component_r9))("file-loaded", ctx_r1.State.IsFileLoadedComponent(component_r9));
371
+ i0.ɵɵadvance(2);
372
+ i0.ɵɵstyleProp("color", ctx_r1.State.GetComponentTypeColor(ctx_r1.State.GetComponentType(component_r9)));
373
+ i0.ɵɵadvance();
374
+ i0.ɵɵproperty("ngClass", ctx_r1.State.GetComponentTypeIcon(ctx_r1.State.GetComponentType(component_r9)));
375
+ i0.ɵɵadvance(4);
376
+ i0.ɵɵtextInterpolate(ctx_r1.State.GetComponentName(component_r9));
377
+ i0.ɵɵadvance();
378
+ i0.ɵɵconditional(ctx_r1.State.IsFileLoadedComponent(component_r9) ? 8 : -1);
379
+ i0.ɵɵadvance(3);
380
+ i0.ɵɵtextInterpolate1("v", ctx_r1.State.GetComponentVersion(component_r9), "");
381
+ i0.ɵɵadvance();
382
+ i0.ɵɵproperty("ngClass", ctx_r1.GetStatusBadgeClass(component_r9));
383
+ i0.ɵɵadvance();
384
+ i0.ɵɵtextInterpolate1(" ", ctx_r1.GetStatusLabel(component_r9), " ");
385
+ i0.ɵɵadvance();
386
+ i0.ɵɵstyleProp("background-color", ctx_r1.State.GetNamespaceColor(ctx_r1.State.GetComponentNamespace(component_r9)));
387
+ i0.ɵɵproperty("title", ctx_r1.State.GetComponentNamespace(component_r9) || "Uncategorized");
388
+ i0.ɵɵadvance(2);
389
+ i0.ɵɵtextInterpolate1(" ", ctx_r1.State.FormatNamespace(ctx_r1.State.GetComponentNamespace(component_r9)), " ");
390
+ i0.ɵɵadvance(2);
391
+ i0.ɵɵconditional(!ctx_r1.State.IsFileLoadedComponent(component_r9) ? 18 : -1);
392
+ i0.ɵɵadvance();
393
+ i0.ɵɵconditional(ctx_r1.State.IsFileLoadedComponent(component_r9) ? 19 : -1);
394
+ i0.ɵɵadvance(2);
395
+ i0.ɵɵconditional(ctx_r1.IsExpanded(component_r9) ? 21 : 22);
396
+ i0.ɵɵadvance(2);
397
+ i0.ɵɵconditional(ctx_r1.IsExpanded(component_r9) ? 23 : -1);
398
+ } }
399
+ function ComponentBrowserComponent_Conditional_25_Template(rf, ctx) { if (rf & 1) {
400
+ i0.ɵɵrepeaterCreate(0, ComponentBrowserComponent_Conditional_25_For_1_Template, 24, 22, "div", 52, i0.ɵɵcomponentInstance().TrackByComponentId, true);
401
+ } if (rf & 2) {
402
+ const ctx_r1 = i0.ɵɵnextContext();
403
+ i0.ɵɵrepeater(ctx_r1.State.FilteredComponents);
404
+ } }
405
+ export class ComponentBrowserComponent {
406
+ State;
407
+ cdr;
408
+ NewComponent = new EventEmitter();
409
+ ImportFromFile = new EventEmitter();
410
+ ImportFromText = new EventEmitter();
411
+ ImportFromArtifact = new EventEmitter();
412
+ ImportDropdownOpen = false;
413
+ stateChangedSub = null;
414
+ constructor(State, cdr) {
415
+ this.State = State;
416
+ this.cdr = cdr;
417
+ }
418
+ ngOnInit() {
419
+ this.stateChangedSub = this.State.StateChanged.subscribe(() => {
420
+ this.cdr.detectChanges();
421
+ });
422
+ }
423
+ ngOnDestroy() {
424
+ if (this.stateChangedSub) {
425
+ this.stateChangedSub.unsubscribe();
426
+ this.stateChangedSub = null;
427
+ }
428
+ }
429
+ // ============================================================
430
+ // SEARCH
431
+ // ============================================================
432
+ OnSearchChange(value) {
433
+ this.State.SearchQuery = value;
434
+ }
435
+ // ============================================================
436
+ // CARD EXPANSION
437
+ // ============================================================
438
+ ToggleComponentExpansion(component) {
439
+ const componentId = this.State.GetComponentId(component);
440
+ const expandedId = this.State.ExpandedComponent
441
+ ? this.State.GetComponentId(this.State.ExpandedComponent)
442
+ : null;
443
+ this.State.ExpandedComponent = expandedId === componentId ? null : component;
444
+ this.cdr.detectChanges();
445
+ }
446
+ IsExpanded(component) {
447
+ if (!this.State.ExpandedComponent)
448
+ return false;
449
+ return this.State.GetComponentId(this.State.ExpandedComponent) === this.State.GetComponentId(component);
450
+ }
451
+ // ============================================================
452
+ // RUNNING STATE CHECKS
453
+ // ============================================================
454
+ IsComponentRunning(component) {
455
+ if (!this.State.SelectedComponent || !this.State.IsRunning)
456
+ return false;
457
+ return this.State.GetComponentId(this.State.SelectedComponent) === this.State.GetComponentId(component);
458
+ }
459
+ IsAnotherComponentRunning(component) {
460
+ if (!this.State.SelectedComponent || !this.State.IsRunning)
461
+ return false;
462
+ return this.State.GetComponentId(this.State.SelectedComponent) !== this.State.GetComponentId(component);
463
+ }
464
+ // ============================================================
465
+ // ACTIONS
466
+ // ============================================================
467
+ OnRunComponent(component, event) {
468
+ event.stopPropagation();
469
+ this.State.RunComponent(component);
470
+ }
471
+ OnStopComponent(event) {
472
+ event.stopPropagation();
473
+ this.State.StopComponent();
474
+ }
475
+ OnSwitchComponent(component, event) {
476
+ event.stopPropagation();
477
+ this.State.RunComponent(component);
478
+ }
479
+ OnToggleFavorite(component, event) {
480
+ event.stopPropagation();
481
+ this.State.ToggleFavorite(component);
482
+ }
483
+ OnRemoveFileComponent(component, event) {
484
+ event.stopPropagation();
485
+ this.State.RemoveFileLoadedComponent(component);
486
+ }
487
+ // ============================================================
488
+ // IMPORT DROPDOWN
489
+ // ============================================================
490
+ ToggleImportDropdown() {
491
+ this.ImportDropdownOpen = !this.ImportDropdownOpen;
492
+ }
493
+ CloseImportDropdown() {
494
+ this.ImportDropdownOpen = false;
495
+ }
496
+ OnImportFromFile() {
497
+ this.CloseImportDropdown();
498
+ this.ImportFromFile.emit();
499
+ }
500
+ OnImportFromText() {
501
+ this.CloseImportDropdown();
502
+ this.ImportFromText.emit();
503
+ }
504
+ OnImportFromArtifact() {
505
+ this.CloseImportDropdown();
506
+ this.ImportFromArtifact.emit();
507
+ }
508
+ OnNewComponent() {
509
+ this.NewComponent.emit();
510
+ }
511
+ // ============================================================
512
+ // UI HELPERS
513
+ // ============================================================
514
+ GetStatusBadgeClass(component) {
515
+ if (this.State.IsFileLoadedComponent(component)) {
516
+ const status = this.State.GetComponentStatus(component);
517
+ if (status === 'Text')
518
+ return 'text';
519
+ if (status === 'Artifact')
520
+ return 'artifact';
521
+ return 'file';
522
+ }
523
+ const status = this.State.GetComponentStatus(component);
524
+ if (status === 'Deprecated')
525
+ return 'deprecated';
526
+ if (status === 'Published')
527
+ return 'published';
528
+ return 'draft';
529
+ }
530
+ GetStatusLabel(component) {
531
+ if (this.State.IsFileLoadedComponent(component)) {
532
+ const status = this.State.GetComponentStatus(component);
533
+ return status || 'File';
534
+ }
535
+ return this.State.GetComponentStatus(component) || 'Draft';
536
+ }
537
+ GetFileBadgeTooltip(component) {
538
+ const status = this.State.GetComponentStatus(component);
539
+ if (status === 'Text')
540
+ return 'Imported from text input';
541
+ if (status === 'Artifact')
542
+ return 'Loaded from artifact';
543
+ const filename = this.State.GetComponentFilename(component);
544
+ return filename ? `Loaded from ${filename}` : 'Loaded from file';
545
+ }
546
+ GetFileBadgeLabel(component) {
547
+ const status = this.State.GetComponentStatus(component);
548
+ if (status === 'Text')
549
+ return 'Text Import';
550
+ if (status === 'Artifact')
551
+ return 'Artifact';
552
+ return this.State.GetComponentFilename(component) || 'File';
553
+ }
554
+ GetFileBadgeIcon(component) {
555
+ const status = this.State.GetComponentStatus(component);
556
+ if (status === 'Text')
557
+ return 'fa-keyboard';
558
+ if (status === 'Artifact')
559
+ return 'fa-database';
560
+ return 'fa-file';
561
+ }
562
+ TrackByComponentId(_index, component) {
563
+ return this.State.GetComponentId(component);
564
+ }
565
+ TrackByCategoryName(_index, category) {
566
+ return category.name;
567
+ }
568
+ static ɵfac = function ComponentBrowserComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || ComponentBrowserComponent)(i0.ɵɵdirectiveInject(i1.ComponentStudioStateService), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef)); };
569
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ComponentBrowserComponent, selectors: [["mj-component-browser"]], outputs: { NewComponent: "NewComponent", ImportFromFile: "ImportFromFile", ImportFromText: "ImportFromText", ImportFromArtifact: "ImportFromArtifact" }, decls: 26, vars: 15, consts: [[1, "component-browser"], [1, "browser-header"], [1, "header-top-row"], ["kendoButton", "", 3, "click", "themeColor"], [1, "fa-solid", "fa-plus"], [1, "import-dropdown"], [1, "fa-solid", "fa-file-import"], [1, "fa-solid", "fa-chevron-down", "dropdown-chevron"], [1, "dropdown-menu"], [1, "header-controls-row"], [1, "filter-toggle-btn", 3, "click", "title"], [1, "fa-solid", "fa-sliders"], [1, "filter-count-badge"], [1, "component-count"], [1, "search-box"], ["placeholder", "Search components...", 3, "valueChange", "value", "clearButton"], ["kendoTextBoxPrefixTemplate", ""], [1, "filter-panel"], [1, "component-list"], [1, "loading-state"], [1, "empty-state"], [1, "dropdown-item", 3, "click"], [1, "fa-solid", "fa-database"], [1, "fa-solid", "fa-file"], [1, "fa-solid", "fa-keyboard"], [1, "fa-solid", "fa-search", "search-icon"], [1, "filter-panel-content"], [1, "filter-section"], [1, "filter-section-label"], [1, "filter-options"], [1, "filter-checkbox"], ["type", "checkbox", 3, "change", "checked"], [1, "fa-solid", "fa-star", "filter-icon", "favorites-icon"], [1, "fa-solid", "fa-archive", "filter-icon", "deprecated-icon"], [1, "deprecated-count"], [1, "filter-panel-footer"], [1, "category-pills"], [1, "category-pill", 3, "active", "--pill-color"], [1, "show-more-btn"], [1, "category-pill", 3, "click"], [1, "pill-name"], [1, "pill-count"], [1, "show-more-btn", 3, "click"], [1, "fa-solid", "fa-chevron-up"], [1, "fa-solid", "fa-chevron-down"], [1, "clear-all-btn", 3, "click"], [1, "fa-solid", "fa-times"], ["text", "Loading components...", "size", "small"], [1, "fa-solid", "fa-puzzle-piece", "empty-icon"], [1, "empty-title"], [1, "empty-subtitle"], [1, "fa-solid", "fa-filter", "empty-icon"], [1, "component-card", 3, "expanded", "running", "file-loaded"], [1, "component-card"], [1, "card-header", 3, "click"], [1, "card-type-icon"], [1, "fa-solid", 3, "ngClass"], [1, "card-body"], [1, "card-title-row"], [1, "card-name"], [1, "file-badge", 3, "title"], [1, "card-meta-row"], [1, "version-badge"], [1, "status-badge", 3, "ngClass"], [1, "namespace-chip", 3, "title"], [1, "fa-solid", "fa-folder-tree"], [1, "card-end"], [1, "favorite-btn", 3, "is-favorite", "title"], ["title", "Remove imported component", 1, "remove-btn"], [1, "card-chevron"], [1, "card-details"], [1, "favorite-btn", 3, "click", "title"], [1, "fa-solid", "fa-star"], [1, "fa-regular", "fa-star"], ["title", "Remove imported component", 1, "remove-btn", 3, "click"], [1, "detail-description"], [1, "detail-info-grid"], [1, "info-item"], [1, "info-label"], [1, "info-value"], [1, "detail-actions"], ["kendoButton", "", 3, "themeColor"], ["kendoButton", "", "title", "Stop current component and run this one", 3, "themeColor"], [1, "fa-solid", "fa-stop"], ["kendoButton", "", "title", "Stop current component and run this one", 3, "click", "themeColor"], [1, "fa-solid", "fa-exchange-alt"], [1, "fa-solid", "fa-play"]], template: function ComponentBrowserComponent_Template(rf, ctx) { if (rf & 1) {
570
+ i0.ɵɵelementStart(0, "div", 0)(1, "div", 1)(2, "div", 2)(3, "button", 3);
571
+ i0.ɵɵlistener("click", function ComponentBrowserComponent_Template_button_click_3_listener() { return ctx.OnNewComponent(); });
572
+ i0.ɵɵelement(4, "i", 4);
573
+ i0.ɵɵtext(5, " New Component ");
574
+ i0.ɵɵelementEnd();
575
+ i0.ɵɵelementStart(6, "div", 5)(7, "button", 3);
576
+ i0.ɵɵlistener("click", function ComponentBrowserComponent_Template_button_click_7_listener() { return ctx.ToggleImportDropdown(); });
577
+ i0.ɵɵelement(8, "i", 6);
578
+ i0.ɵɵtext(9, " Import ");
579
+ i0.ɵɵelement(10, "i", 7);
580
+ i0.ɵɵelementEnd();
581
+ i0.ɵɵtemplate(11, ComponentBrowserComponent_Conditional_11_Template, 10, 0, "div", 8);
582
+ i0.ɵɵelementEnd()();
583
+ i0.ɵɵelementStart(12, "div", 9)(13, "button", 10);
584
+ i0.ɵɵlistener("click", function ComponentBrowserComponent_Template_button_click_13_listener() { return ctx.State.ToggleFilterPanel(); });
585
+ i0.ɵɵelement(14, "i", 11);
586
+ i0.ɵɵtemplate(15, ComponentBrowserComponent_Conditional_15_Template, 2, 1, "span", 12);
587
+ i0.ɵɵelementEnd();
588
+ i0.ɵɵelementStart(16, "span", 13);
589
+ i0.ɵɵtext(17);
590
+ i0.ɵɵelementEnd()()();
591
+ i0.ɵɵelementStart(18, "div", 14)(19, "kendo-textbox", 15);
592
+ i0.ɵɵlistener("valueChange", function ComponentBrowserComponent_Template_kendo_textbox_valueChange_19_listener($event) { return ctx.OnSearchChange($event); });
593
+ i0.ɵɵtemplate(20, ComponentBrowserComponent_ng_template_20_Template, 1, 0, "ng-template", 16);
594
+ i0.ɵɵelementEnd()();
595
+ i0.ɵɵtemplate(21, ComponentBrowserComponent_Conditional_21_Template, 19, 5, "div", 17);
596
+ i0.ɵɵelementStart(22, "div", 18);
597
+ i0.ɵɵtemplate(23, ComponentBrowserComponent_Conditional_23_Template, 2, 0, "div", 19)(24, ComponentBrowserComponent_Conditional_24_Template, 3, 1, "div", 20)(25, ComponentBrowserComponent_Conditional_25_Template, 2, 0);
598
+ i0.ɵɵelementEnd()();
599
+ } if (rf & 2) {
600
+ i0.ɵɵadvance(3);
601
+ i0.ɵɵproperty("themeColor", "primary");
602
+ i0.ɵɵadvance(3);
603
+ i0.ɵɵclassProp("open", ctx.ImportDropdownOpen);
604
+ i0.ɵɵadvance();
605
+ i0.ɵɵproperty("themeColor", "base");
606
+ i0.ɵɵadvance(4);
607
+ i0.ɵɵconditional(ctx.ImportDropdownOpen ? 11 : -1);
608
+ i0.ɵɵadvance(2);
609
+ i0.ɵɵclassProp("active", ctx.State.IsFilterPanelExpanded || ctx.State.GetActiveFilterCount() > 0);
610
+ i0.ɵɵproperty("title", ctx.State.IsFilterPanelExpanded ? "Hide filters" : "Show filters");
611
+ i0.ɵɵadvance(2);
612
+ i0.ɵɵconditional(ctx.State.GetActiveFilterCount() > 0 ? 15 : -1);
613
+ i0.ɵɵadvance(2);
614
+ i0.ɵɵtextInterpolate2(" ", ctx.State.FilteredComponents.length, " of ", ctx.State.AllComponents.length, " ");
615
+ i0.ɵɵadvance(2);
616
+ i0.ɵɵproperty("value", ctx.State.SearchQuery)("clearButton", true);
617
+ i0.ɵɵadvance(2);
618
+ i0.ɵɵconditional(ctx.State.IsFilterPanelExpanded ? 21 : -1);
619
+ i0.ɵɵadvance(2);
620
+ i0.ɵɵconditional(ctx.State.IsLoading ? 23 : ctx.State.FilteredComponents.length === 0 ? 24 : 25);
621
+ } }, dependencies: [i2.NgClass, i3.TextBoxComponent, i3.TextBoxPrefixTemplateDirective, i4.ButtonComponent, i5.LoadingComponent, i2.DatePipe], styles: ["\n\n\n\n\n\n\n[_nghost-%COMP%] {\n display: flex;\n flex-direction: column;\n height: 100%;\n overflow: hidden;\n}\n\n.component-browser[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n height: 100%;\n background: var(--mat-sys-surface-container-low);\n overflow: hidden;\n}\n\n\n\n\n\n\n\n\n.browser-header[_ngcontent-%COMP%] {\n padding: 12px 14px 8px;\n border-bottom: 1px solid var(--mat-sys-outline);\n background: var(--mat-sys-surface);\n flex-shrink: 0;\n}\n\n.browser-header[_ngcontent-%COMP%] .header-top-row[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n margin-bottom: 8px;\n}\n\n.browser-header[_ngcontent-%COMP%] .header-controls-row[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.browser-header[_ngcontent-%COMP%] .component-count[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mat-sys-on-surface-variant);\n margin-left: auto;\n}\n\n\n\n\n\n\n\n\n.import-dropdown[_ngcontent-%COMP%] {\n position: relative;\n}\n\n.import-dropdown[_ngcontent-%COMP%] .dropdown-chevron[_ngcontent-%COMP%] {\n margin-left: 4px;\n font-size: 10px;\n}\n\n.import-dropdown[_ngcontent-%COMP%] .dropdown-menu[_ngcontent-%COMP%] {\n position: absolute;\n top: 100%;\n left: 0;\n z-index: 1000;\n min-width: 180px;\n margin-top: 4px;\n background: var(--mat-sys-surface);\n border: 1px solid var(--mat-sys-outline);\n border-radius: var(--mat-sys-corner-extra-small);\n box-shadow: var(--mat-sys-elevation-2);\n overflow: hidden;\n}\n\n.import-dropdown[_ngcontent-%COMP%] .dropdown-menu[_ngcontent-%COMP%] .dropdown-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n width: 100%;\n padding: 8px 14px;\n border: none;\n background: none;\n font-size: 13px;\n color: var(--mat-sys-on-surface);\n cursor: pointer;\n text-align: left;\n transition: background 0.15s;\n}\n\n.import-dropdown[_ngcontent-%COMP%] .dropdown-menu[_ngcontent-%COMP%] .dropdown-item[_ngcontent-%COMP%]:hover {\n background: var(--mat-sys-surface-variant);\n}\n\n.import-dropdown[_ngcontent-%COMP%] .dropdown-menu[_ngcontent-%COMP%] .dropdown-item[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n width: 16px;\n text-align: center;\n color: var(--mat-sys-on-surface-variant);\n}\n\n\n\n\n\n\n\n\n.filter-toggle-btn[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 4px;\n padding: 5px 10px;\n border: 1px solid var(--mat-sys-outline);\n border-radius: var(--mat-sys-corner-extra-small);\n background: var(--mat-sys-surface);\n color: var(--mat-sys-on-surface-variant);\n font-size: 13px;\n cursor: pointer;\n transition: all 0.15s;\n position: relative;\n}\n\n.filter-toggle-btn[_ngcontent-%COMP%]:hover {\n border-color: var(--mat-sys-on-surface-variant);\n color: var(--mat-sys-on-surface);\n}\n\n.filter-toggle-btn.active[_ngcontent-%COMP%] {\n border-color: var(--mat-sys-primary);\n color: var(--mat-sys-primary);\n background: #eff6ff;\n}\n\n.filter-toggle-btn[_ngcontent-%COMP%] .filter-count-badge[_ngcontent-%COMP%] {\n position: absolute;\n top: -6px;\n right: -6px;\n min-width: 16px;\n height: 16px;\n padding: 0 4px;\n border-radius: 8px;\n background: var(--mat-sys-primary);\n color: #fff;\n font-size: 10px;\n font-weight: 600;\n line-height: 16px;\n text-align: center;\n}\n\n\n\n\n\n\n\n\n.search-box[_ngcontent-%COMP%] {\n padding: 8px 14px;\n flex-shrink: 0;\n}\n\n.search-box[_ngcontent-%COMP%] .search-icon[_ngcontent-%COMP%] {\n color: var(--mat-sys-on-surface-variant);\n margin-left: 6px;\n}\n\n\n\n\n\n\n\n\n.filter-panel[_ngcontent-%COMP%] {\n border-bottom: 1px solid var(--mat-sys-outline);\n background: var(--mat-sys-surface);\n flex-shrink: 0;\n}\n\n.filter-panel[_ngcontent-%COMP%] .filter-panel-content[_ngcontent-%COMP%] {\n padding: 8px 14px 12px;\n}\n\n.filter-section[_ngcontent-%COMP%] {\n margin-bottom: 10px;\n}\n\n.filter-section[_ngcontent-%COMP%]:last-child {\n margin-bottom: 0;\n}\n\n.filter-section[_ngcontent-%COMP%] .filter-section-label[_ngcontent-%COMP%] {\n display: block;\n font-size: 11px;\n font-weight: 600;\n color: var(--mat-sys-on-surface-variant);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n margin-bottom: 6px;\n}\n\n.filter-options[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.filter-checkbox[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 4px 6px;\n border-radius: 4px;\n cursor: pointer;\n font-size: 13px;\n color: var(--mat-sys-on-surface-variant);\n transition: background 0.15s;\n}\n\n.filter-checkbox[_ngcontent-%COMP%]:hover {\n background: var(--mat-sys-surface-variant);\n}\n\n.filter-checkbox[_ngcontent-%COMP%] input[type=\"checkbox\"][_ngcontent-%COMP%] {\n width: 14px;\n height: 14px;\n accent-color: var(--mat-sys-primary);\n cursor: pointer;\n}\n\n.filter-checkbox[_ngcontent-%COMP%] .filter-icon[_ngcontent-%COMP%] {\n font-size: 12px;\n}\n\n.filter-checkbox[_ngcontent-%COMP%] .favorites-icon[_ngcontent-%COMP%] {\n color: #eab308;\n}\n\n.filter-checkbox[_ngcontent-%COMP%] .deprecated-icon[_ngcontent-%COMP%] {\n color: #94a3b8;\n}\n\n.filter-checkbox[_ngcontent-%COMP%] .deprecated-count[_ngcontent-%COMP%] {\n color: #94a3b8;\n font-size: 12px;\n}\n\n\n\n\n\n\n\n\n.category-pills[_ngcontent-%COMP%] {\n display: flex;\n flex-wrap: wrap;\n gap: 6px;\n}\n\n.category-pill[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n padding: 3px 10px;\n border: 1px solid var(--mat-sys-outline);\n border-radius: 14px;\n background: var(--mat-sys-surface);\n font-size: 12px;\n color: var(--mat-sys-on-surface-variant);\n cursor: pointer;\n transition: all 0.15s;\n}\n\n.category-pill[_ngcontent-%COMP%] .pill-name[_ngcontent-%COMP%] {\n max-width: 120px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.category-pill[_ngcontent-%COMP%] .pill-count[_ngcontent-%COMP%] {\n font-size: 10px;\n font-weight: 600;\n color: var(--mat-sys-on-surface-variant);\n background: var(--mat-sys-surface-variant);\n padding: 0 5px;\n border-radius: 8px;\n line-height: 16px;\n}\n\n.category-pill[_ngcontent-%COMP%]:hover {\n border-color: var(--pill-color, var(--mat-sys-primary));\n background: var(--mat-sys-surface-container-lowest);\n}\n\n.category-pill.active[_ngcontent-%COMP%] {\n border-color: var(--pill-color, var(--mat-sys-primary));\n background: var(--pill-color, var(--mat-sys-primary));\n color: #fff;\n}\n\n.category-pill.active[_ngcontent-%COMP%] .pill-count[_ngcontent-%COMP%] {\n background: rgba(255, 255, 255, 0.25);\n color: #fff;\n}\n\n.show-more-btn[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n margin-top: 6px;\n padding: 2px 0;\n border: none;\n background: none;\n font-size: 12px;\n color: var(--mat-sys-primary);\n cursor: pointer;\n}\n\n.show-more-btn[_ngcontent-%COMP%]:hover {\n color: var(--mat-sys-primary);\n text-decoration: underline;\n}\n\n.filter-panel-footer[_ngcontent-%COMP%] {\n margin-top: 8px;\n padding-top: 8px;\n border-top: 1px solid var(--mat-sys-outline-variant);\n}\n\n.clear-all-btn[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n padding: 4px 10px;\n border: none;\n border-radius: 4px;\n background: none;\n font-size: 12px;\n color: #ef4444;\n cursor: pointer;\n transition: background 0.15s;\n}\n\n.clear-all-btn[_ngcontent-%COMP%]:hover {\n background: #fef2f2;\n}\n\n\n\n\n\n\n\n\n.component-list[_ngcontent-%COMP%] {\n flex: 1;\n overflow-y: auto;\n padding: 8px 10px;\n}\n\n\n\n\n\n\n\n\n.loading-state[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 40px 20px;\n}\n\n.empty-state[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 40px 20px;\n text-align: center;\n}\n\n.empty-state[_ngcontent-%COMP%] .empty-icon[_ngcontent-%COMP%] {\n font-size: 32px;\n color: var(--mat-sys-outline);\n margin-bottom: 12px;\n}\n\n.empty-state[_ngcontent-%COMP%] .empty-title[_ngcontent-%COMP%] {\n font-size: 14px;\n font-weight: 600;\n color: var(--mat-sys-on-surface-variant);\n margin: 0 0 4px;\n}\n\n.empty-state[_ngcontent-%COMP%] .empty-subtitle[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--mat-sys-on-surface-variant);\n margin: 0;\n}\n\n\n\n\n\n\n\n\n.component-card[_ngcontent-%COMP%] {\n margin-bottom: 6px;\n border: 1px solid var(--mat-sys-outline);\n border-radius: var(--mat-sys-corner-small);\n background: var(--mat-sys-surface);\n transition: all 0.15s;\n overflow: hidden;\n}\n\n.component-card[_ngcontent-%COMP%]:hover {\n box-shadow: var(--mat-sys-elevation-1);\n border-color: var(--mat-sys-outline);\n}\n\n\n\n.component-card.running[_ngcontent-%COMP%] {\n border-left: 3px solid #10b981;\n}\n\n\n\n.component-card.file-loaded[_ngcontent-%COMP%] {\n border-style: dashed;\n border-color: #94a3b8;\n}\n\n.component-card.file-loaded[_ngcontent-%COMP%]:hover {\n border-color: #64748b;\n}\n\n\n\n.component-card.expanded[_ngcontent-%COMP%] {\n border-color: var(--mat-sys-primary);\n box-shadow: 0 2px 12px rgba(59, 130, 246, 0.1);\n}\n\n.component-card.expanded.running[_ngcontent-%COMP%] {\n border-color: var(--mat-sys-primary);\n border-left: 3px solid #10b981;\n}\n\n.component-card.expanded.file-loaded[_ngcontent-%COMP%] {\n border-style: solid;\n border-color: var(--mat-sys-primary);\n}\n\n\n\n\n\n\n\n\n.card-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: flex-start;\n gap: 10px;\n padding: 10px 12px;\n cursor: pointer;\n user-select: none;\n}\n\n.card-header[_ngcontent-%COMP%]:hover {\n background: var(--mat-sys-surface-container-lowest);\n}\n\n.card-type-icon[_ngcontent-%COMP%] {\n flex-shrink: 0;\n width: 32px;\n height: 32px;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 16px;\n background: var(--mat-sys-surface-variant);\n border-radius: var(--mat-sys-corner-extra-small);\n margin-top: 2px;\n}\n\n.card-body[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n}\n\n.card-title-row[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n flex-wrap: wrap;\n margin-bottom: 4px;\n}\n\n.card-name[_ngcontent-%COMP%] {\n font-size: 13px;\n font-weight: 600;\n color: var(--mat-sys-on-surface);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.file-badge[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 3px;\n padding: 1px 6px;\n border-radius: 4px;\n background: #f0f9ff;\n color: #0284c7;\n font-size: 10px;\n font-weight: 500;\n white-space: nowrap;\n max-width: 120px;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.card-meta-row[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n flex-wrap: wrap;\n}\n\n.version-badge[_ngcontent-%COMP%] {\n font-size: 11px;\n font-weight: 500;\n color: var(--mat-sys-on-surface-variant);\n background: var(--mat-sys-surface-variant);\n padding: 1px 6px;\n border-radius: 4px;\n}\n\n.status-badge[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n padding: 1px 7px;\n border-radius: 4px;\n font-size: 10px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.3px;\n}\n\n.status-badge.published[_ngcontent-%COMP%] {\n background: #d1fae5;\n color: #065f46;\n}\n\n.status-badge.draft[_ngcontent-%COMP%] {\n background: #e0e7ff;\n color: #3730a3;\n}\n\n.status-badge.deprecated[_ngcontent-%COMP%] {\n background: #fee2e2;\n color: #991b1b;\n}\n\n.status-badge.file[_ngcontent-%COMP%] {\n background: #fef3c7;\n color: #92400e;\n}\n\n.status-badge.text[_ngcontent-%COMP%] {\n background: #ede9fe;\n color: #5b21b6;\n}\n\n.status-badge.artifact[_ngcontent-%COMP%] {\n background: #cffafe;\n color: #155e75;\n}\n\n.namespace-chip[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 3px;\n padding: 1px 7px;\n border-radius: 10px;\n font-size: 10px;\n font-weight: 500;\n color: #fff;\n max-width: 160px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.namespace-chip[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 9px;\n opacity: 0.8;\n}\n\n\n\n\n\n\n\n\n.card-end[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 2px;\n flex-shrink: 0;\n margin-top: 2px;\n}\n\n.favorite-btn[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 28px;\n height: 28px;\n border: none;\n border-radius: 4px;\n background: none;\n color: var(--mat-sys-outline);\n font-size: 14px;\n cursor: pointer;\n transition: all 0.15s;\n}\n\n.favorite-btn[_ngcontent-%COMP%]:hover {\n color: #eab308;\n background: #fefce8;\n}\n\n.favorite-btn.is-favorite[_ngcontent-%COMP%] {\n color: #eab308;\n}\n\n.remove-btn[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 28px;\n height: 28px;\n border: none;\n border-radius: 4px;\n background: none;\n color: var(--mat-sys-outline);\n font-size: 12px;\n cursor: pointer;\n transition: all 0.15s;\n}\n\n.remove-btn[_ngcontent-%COMP%]:hover {\n color: #ef4444;\n background: #fef2f2;\n}\n\n.card-chevron[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 24px;\n height: 24px;\n color: var(--mat-sys-on-surface-variant);\n font-size: 11px;\n}\n\n\n\n\n\n\n\n\n.card-details[_ngcontent-%COMP%] {\n padding: 0 12px 12px;\n border-top: 1px solid var(--mat-sys-outline-variant);\n}\n\n.detail-description[_ngcontent-%COMP%] {\n padding: 8px 0;\n}\n\n.detail-description[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 13px;\n color: var(--mat-sys-on-surface-variant);\n line-height: 1.5;\n}\n\n.detail-info-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: 6px 16px;\n padding: 8px 0;\n}\n\n.detail-info-grid[_ngcontent-%COMP%] .info-item[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 1px;\n}\n\n.detail-info-grid[_ngcontent-%COMP%] .info-label[_ngcontent-%COMP%] {\n font-size: 10px;\n font-weight: 600;\n color: var(--mat-sys-on-surface-variant);\n text-transform: uppercase;\n letter-spacing: 0.4px;\n}\n\n.detail-info-grid[_ngcontent-%COMP%] .info-value[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--mat-sys-on-surface);\n}\n\n.detail-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n padding-top: 8px;\n border-top: 1px solid var(--mat-sys-outline-variant);\n}"] });
622
+ }
623
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ComponentBrowserComponent, [{
624
+ type: Component,
625
+ args: [{ selector: 'mj-component-browser', template: "<div class=\"component-browser\">\n\n <!-- Header -->\n <div class=\"browser-header\">\n <div class=\"header-top-row\">\n <button kendoButton\n [themeColor]=\"'primary'\"\n (click)=\"OnNewComponent()\">\n <i class=\"fa-solid fa-plus\"></i> New Component\n </button>\n <div class=\"import-dropdown\" [class.open]=\"ImportDropdownOpen\">\n <button kendoButton\n [themeColor]=\"'base'\"\n (click)=\"ToggleImportDropdown()\">\n <i class=\"fa-solid fa-file-import\"></i> Import\n <i class=\"fa-solid fa-chevron-down dropdown-chevron\"></i>\n </button>\n @if (ImportDropdownOpen) {\n <div class=\"dropdown-menu\">\n <button class=\"dropdown-item\" (click)=\"OnImportFromArtifact()\">\n <i class=\"fa-solid fa-database\"></i> From Artifact\n </button>\n <button class=\"dropdown-item\" (click)=\"OnImportFromFile()\">\n <i class=\"fa-solid fa-file\"></i> From File\n </button>\n <button class=\"dropdown-item\" (click)=\"OnImportFromText()\">\n <i class=\"fa-solid fa-keyboard\"></i> From Text\n </button>\n </div>\n }\n </div>\n </div>\n\n <div class=\"header-controls-row\">\n <button\n class=\"filter-toggle-btn\"\n [class.active]=\"State.IsFilterPanelExpanded || State.GetActiveFilterCount() > 0\"\n (click)=\"State.ToggleFilterPanel()\"\n [title]=\"State.IsFilterPanelExpanded ? 'Hide filters' : 'Show filters'\">\n <i class=\"fa-solid fa-sliders\"></i>\n @if (State.GetActiveFilterCount() > 0) {\n <span class=\"filter-count-badge\">{{ State.GetActiveFilterCount() }}</span>\n }\n </button>\n <span class=\"component-count\">\n {{ State.FilteredComponents.length }} of {{ State.AllComponents.length }}\n </span>\n </div>\n </div>\n\n <!-- Search -->\n <div class=\"search-box\">\n <kendo-textbox\n [value]=\"State.SearchQuery\"\n (valueChange)=\"OnSearchChange($event)\"\n placeholder=\"Search components...\"\n [clearButton]=\"true\">\n <ng-template kendoTextBoxPrefixTemplate>\n <i class=\"fa-solid fa-search search-icon\"></i>\n </ng-template>\n </kendo-textbox>\n </div>\n\n <!-- Collapsible Filter Panel -->\n @if (State.IsFilterPanelExpanded) {\n <div class=\"filter-panel\">\n <div class=\"filter-panel-content\">\n\n <!-- Quick Filters -->\n <div class=\"filter-section\">\n <label class=\"filter-section-label\">Quick Filters</label>\n <div class=\"filter-options\">\n <label class=\"filter-checkbox\">\n <input type=\"checkbox\"\n [checked]=\"State.ShowOnlyFavorites\"\n (change)=\"State.ToggleShowOnlyFavorites()\">\n <i class=\"fa-solid fa-star filter-icon favorites-icon\"></i>\n <span>Favorites only</span>\n </label>\n <label class=\"filter-checkbox\">\n <input type=\"checkbox\"\n [checked]=\"State.ShowDeprecatedComponents\"\n (change)=\"State.ToggleShowDeprecatedComponents()\">\n <i class=\"fa-solid fa-archive filter-icon deprecated-icon\"></i>\n <span>Show deprecated\n @if (State.GetDeprecatedCount() > 0) {\n <span class=\"deprecated-count\">({{ State.GetDeprecatedCount() }})</span>\n }\n </span>\n </label>\n </div>\n </div>\n\n <!-- Category Pills -->\n @if (State.AvailableCategories.length > 0) {\n <div class=\"filter-section\">\n <label class=\"filter-section-label\">Categories</label>\n <div class=\"category-pills\">\n @for (category of State.GetVisibleCategories(); track TrackByCategoryName($index, category)) {\n <button\n class=\"category-pill\"\n [class.active]=\"State.IsCategorySelected(category.name)\"\n [style.--pill-color]=\"category.color\"\n (click)=\"State.ToggleCategory(category.name)\">\n <span class=\"pill-name\">{{ category.name }}</span>\n <span class=\"pill-count\">{{ category.count }}</span>\n </button>\n }\n </div>\n @if (State.AvailableCategories.length > 5) {\n <button\n class=\"show-more-btn\"\n (click)=\"State.ToggleShowAllCategories()\">\n @if (State.ShowAllCategories) {\n <i class=\"fa-solid fa-chevron-up\"></i> Show less\n } @else {\n <i class=\"fa-solid fa-chevron-down\"></i> Show {{ State.AvailableCategories.length - 5 }} more\n }\n </button>\n }\n </div>\n }\n\n <!-- Clear All -->\n @if (State.GetActiveFilterCount() > 0) {\n <div class=\"filter-panel-footer\">\n <button class=\"clear-all-btn\" (click)=\"State.ClearAllFilters()\">\n <i class=\"fa-solid fa-times\"></i> Clear All Filters\n </button>\n </div>\n }\n </div>\n </div>\n }\n\n <!-- Component Card List -->\n <div class=\"component-list\">\n @if (State.IsLoading) {\n <div class=\"loading-state\">\n <mj-loading text=\"Loading components...\" size=\"small\"></mj-loading>\n </div>\n } @else if (State.FilteredComponents.length === 0) {\n <div class=\"empty-state\">\n @if (State.AllComponents.length === 0) {\n <i class=\"fa-solid fa-puzzle-piece empty-icon\"></i>\n <p class=\"empty-title\">No components found</p>\n <p class=\"empty-subtitle\">Create a new component or import one to get started.</p>\n } @else {\n <i class=\"fa-solid fa-filter empty-icon\"></i>\n <p class=\"empty-title\">No matching components</p>\n <p class=\"empty-subtitle\">Try adjusting your search or filters.</p>\n }\n </div>\n } @else {\n @for (component of State.FilteredComponents; track TrackByComponentId($index, component)) {\n <div class=\"component-card\"\n [class.expanded]=\"IsExpanded(component)\"\n [class.running]=\"IsComponentRunning(component)\"\n [class.file-loaded]=\"State.IsFileLoadedComponent(component)\">\n\n <!-- Card Header (always visible) -->\n <div class=\"card-header\" (click)=\"ToggleComponentExpansion(component)\">\n <div class=\"card-type-icon\"\n [style.color]=\"State.GetComponentTypeColor(State.GetComponentType(component))\">\n <i class=\"fa-solid\"\n [ngClass]=\"State.GetComponentTypeIcon(State.GetComponentType(component))\"></i>\n </div>\n\n <div class=\"card-body\">\n <div class=\"card-title-row\">\n <span class=\"card-name\">{{ State.GetComponentName(component) }}</span>\n @if (State.IsFileLoadedComponent(component)) {\n <span class=\"file-badge\" [title]=\"GetFileBadgeTooltip(component)\">\n <i class=\"fa-solid\" [ngClass]=\"GetFileBadgeIcon(component)\"></i>\n {{ GetFileBadgeLabel(component) }}\n </span>\n }\n </div>\n <div class=\"card-meta-row\">\n <span class=\"version-badge\">v{{ State.GetComponentVersion(component) }}</span>\n <span class=\"status-badge\" [ngClass]=\"GetStatusBadgeClass(component)\">\n {{ GetStatusLabel(component) }}\n </span>\n <span class=\"namespace-chip\"\n [style.background-color]=\"State.GetNamespaceColor(State.GetComponentNamespace(component))\"\n [title]=\"State.GetComponentNamespace(component) || 'Uncategorized'\">\n <i class=\"fa-solid fa-folder-tree\"></i>\n {{ State.FormatNamespace(State.GetComponentNamespace(component)) }}\n </span>\n </div>\n </div>\n\n <div class=\"card-end\">\n @if (!State.IsFileLoadedComponent(component)) {\n <button\n class=\"favorite-btn\"\n [class.is-favorite]=\"State.IsFavorite(component)\"\n (click)=\"OnToggleFavorite(component, $event)\"\n [title]=\"State.IsFavorite(component) ? 'Remove from favorites' : 'Add to favorites'\">\n @if (State.IsFavorite(component)) {\n <i class=\"fa-solid fa-star\"></i>\n } @else {\n <i class=\"fa-regular fa-star\"></i>\n }\n </button>\n }\n @if (State.IsFileLoadedComponent(component)) {\n <button\n class=\"remove-btn\"\n (click)=\"OnRemoveFileComponent($any(component), $event)\"\n title=\"Remove imported component\">\n <i class=\"fa-solid fa-times\"></i>\n </button>\n }\n <div class=\"card-chevron\">\n @if (IsExpanded(component)) {\n <i class=\"fa-solid fa-chevron-up\"></i>\n } @else {\n <i class=\"fa-solid fa-chevron-down\"></i>\n }\n </div>\n </div>\n </div>\n\n <!-- Card Details (expanded) -->\n @if (IsExpanded(component)) {\n <div class=\"card-details\">\n @if (State.GetComponentDescription(component)) {\n <div class=\"detail-description\">\n <p>{{ State.GetComponentDescription(component) }}</p>\n </div>\n }\n\n <div class=\"detail-info-grid\">\n <div class=\"info-item\">\n <span class=\"info-label\">Type</span>\n <span class=\"info-value\">{{ State.GetComponentType(component) || 'Unknown' }}</span>\n </div>\n <div class=\"info-item\">\n <span class=\"info-label\">Version</span>\n <span class=\"info-value\">{{ State.GetComponentVersion(component) }}</span>\n </div>\n <div class=\"info-item\">\n <span class=\"info-label\">Status</span>\n <span class=\"info-value\">{{ State.GetComponentStatus(component) || 'Draft' }}</span>\n </div>\n @if (State.IsFileLoadedComponent(component)) {\n <div class=\"info-item\">\n <span class=\"info-label\">Loaded</span>\n <span class=\"info-value\">{{ State.GetComponentLoadedAt(component) | date:'short' }}</span>\n </div>\n } @else if (State.GetComponentUpdatedAt(component)) {\n <div class=\"info-item\">\n <span class=\"info-label\">Updated</span>\n <span class=\"info-value\">{{ State.GetComponentUpdatedAt(component) | date:'short' }}</span>\n </div>\n }\n </div>\n\n <div class=\"detail-actions\">\n @if (IsComponentRunning(component)) {\n <button kendoButton\n [themeColor]=\"'error'\"\n (click)=\"OnStopComponent($event)\">\n <i class=\"fa-solid fa-stop\"></i> Stop\n </button>\n } @else if (IsAnotherComponentRunning(component)) {\n <button kendoButton\n [themeColor]=\"'base'\"\n title=\"Stop current component and run this one\"\n (click)=\"OnSwitchComponent(component, $event)\">\n <i class=\"fa-solid fa-exchange-alt\"></i> Switch To This\n </button>\n } @else {\n <button kendoButton\n [themeColor]=\"'primary'\"\n (click)=\"OnRunComponent(component, $event)\">\n <i class=\"fa-solid fa-play\"></i> Run\n </button>\n }\n </div>\n </div>\n }\n </div>\n }\n }\n </div>\n</div>\n", styles: ["/* ============================================================ */\n/* Component Browser - Left Panel */\n/* ============================================================ */\n\n:host {\n display: flex;\n flex-direction: column;\n height: 100%;\n overflow: hidden;\n}\n\n.component-browser {\n display: flex;\n flex-direction: column;\n height: 100%;\n background: var(--mat-sys-surface-container-low);\n overflow: hidden;\n}\n\n/* ============================================================ */\n/* Header */\n/* ============================================================ */\n\n.browser-header {\n padding: 12px 14px 8px;\n border-bottom: 1px solid var(--mat-sys-outline);\n background: var(--mat-sys-surface);\n flex-shrink: 0;\n}\n\n.browser-header .header-top-row {\n display: flex;\n align-items: center;\n gap: 8px;\n margin-bottom: 8px;\n}\n\n.browser-header .header-controls-row {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.browser-header .component-count {\n font-size: 12px;\n color: var(--mat-sys-on-surface-variant);\n margin-left: auto;\n}\n\n/* ============================================================ */\n/* Import Dropdown */\n/* ============================================================ */\n\n.import-dropdown {\n position: relative;\n}\n\n.import-dropdown .dropdown-chevron {\n margin-left: 4px;\n font-size: 10px;\n}\n\n.import-dropdown .dropdown-menu {\n position: absolute;\n top: 100%;\n left: 0;\n z-index: 1000;\n min-width: 180px;\n margin-top: 4px;\n background: var(--mat-sys-surface);\n border: 1px solid var(--mat-sys-outline);\n border-radius: var(--mat-sys-corner-extra-small);\n box-shadow: var(--mat-sys-elevation-2);\n overflow: hidden;\n}\n\n.import-dropdown .dropdown-menu .dropdown-item {\n display: flex;\n align-items: center;\n gap: 8px;\n width: 100%;\n padding: 8px 14px;\n border: none;\n background: none;\n font-size: 13px;\n color: var(--mat-sys-on-surface);\n cursor: pointer;\n text-align: left;\n transition: background 0.15s;\n}\n\n.import-dropdown .dropdown-menu .dropdown-item:hover {\n background: var(--mat-sys-surface-variant);\n}\n\n.import-dropdown .dropdown-menu .dropdown-item i {\n width: 16px;\n text-align: center;\n color: var(--mat-sys-on-surface-variant);\n}\n\n/* ============================================================ */\n/* Filter Toggle Button */\n/* ============================================================ */\n\n.filter-toggle-btn {\n display: flex;\n align-items: center;\n gap: 4px;\n padding: 5px 10px;\n border: 1px solid var(--mat-sys-outline);\n border-radius: var(--mat-sys-corner-extra-small);\n background: var(--mat-sys-surface);\n color: var(--mat-sys-on-surface-variant);\n font-size: 13px;\n cursor: pointer;\n transition: all 0.15s;\n position: relative;\n}\n\n.filter-toggle-btn:hover {\n border-color: var(--mat-sys-on-surface-variant);\n color: var(--mat-sys-on-surface);\n}\n\n.filter-toggle-btn.active {\n border-color: var(--mat-sys-primary);\n color: var(--mat-sys-primary);\n background: #eff6ff;\n}\n\n.filter-toggle-btn .filter-count-badge {\n position: absolute;\n top: -6px;\n right: -6px;\n min-width: 16px;\n height: 16px;\n padding: 0 4px;\n border-radius: 8px;\n background: var(--mat-sys-primary);\n color: #fff;\n font-size: 10px;\n font-weight: 600;\n line-height: 16px;\n text-align: center;\n}\n\n/* ============================================================ */\n/* Search Box */\n/* ============================================================ */\n\n.search-box {\n padding: 8px 14px;\n flex-shrink: 0;\n}\n\n.search-box .search-icon {\n color: var(--mat-sys-on-surface-variant);\n margin-left: 6px;\n}\n\n/* ============================================================ */\n/* Filter Panel */\n/* ============================================================ */\n\n.filter-panel {\n border-bottom: 1px solid var(--mat-sys-outline);\n background: var(--mat-sys-surface);\n flex-shrink: 0;\n}\n\n.filter-panel .filter-panel-content {\n padding: 8px 14px 12px;\n}\n\n.filter-section {\n margin-bottom: 10px;\n}\n\n.filter-section:last-child {\n margin-bottom: 0;\n}\n\n.filter-section .filter-section-label {\n display: block;\n font-size: 11px;\n font-weight: 600;\n color: var(--mat-sys-on-surface-variant);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n margin-bottom: 6px;\n}\n\n.filter-options {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.filter-checkbox {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 4px 6px;\n border-radius: 4px;\n cursor: pointer;\n font-size: 13px;\n color: var(--mat-sys-on-surface-variant);\n transition: background 0.15s;\n}\n\n.filter-checkbox:hover {\n background: var(--mat-sys-surface-variant);\n}\n\n.filter-checkbox input[type=\"checkbox\"] {\n width: 14px;\n height: 14px;\n accent-color: var(--mat-sys-primary);\n cursor: pointer;\n}\n\n.filter-checkbox .filter-icon {\n font-size: 12px;\n}\n\n.filter-checkbox .favorites-icon {\n color: #eab308;\n}\n\n.filter-checkbox .deprecated-icon {\n color: #94a3b8;\n}\n\n.filter-checkbox .deprecated-count {\n color: #94a3b8;\n font-size: 12px;\n}\n\n/* ============================================================ */\n/* Category Pills */\n/* ============================================================ */\n\n.category-pills {\n display: flex;\n flex-wrap: wrap;\n gap: 6px;\n}\n\n.category-pill {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n padding: 3px 10px;\n border: 1px solid var(--mat-sys-outline);\n border-radius: 14px;\n background: var(--mat-sys-surface);\n font-size: 12px;\n color: var(--mat-sys-on-surface-variant);\n cursor: pointer;\n transition: all 0.15s;\n}\n\n.category-pill .pill-name {\n max-width: 120px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.category-pill .pill-count {\n font-size: 10px;\n font-weight: 600;\n color: var(--mat-sys-on-surface-variant);\n background: var(--mat-sys-surface-variant);\n padding: 0 5px;\n border-radius: 8px;\n line-height: 16px;\n}\n\n.category-pill:hover {\n border-color: var(--pill-color, var(--mat-sys-primary));\n background: var(--mat-sys-surface-container-lowest);\n}\n\n.category-pill.active {\n border-color: var(--pill-color, var(--mat-sys-primary));\n background: var(--pill-color, var(--mat-sys-primary));\n color: #fff;\n}\n\n.category-pill.active .pill-count {\n background: rgba(255, 255, 255, 0.25);\n color: #fff;\n}\n\n.show-more-btn {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n margin-top: 6px;\n padding: 2px 0;\n border: none;\n background: none;\n font-size: 12px;\n color: var(--mat-sys-primary);\n cursor: pointer;\n}\n\n.show-more-btn:hover {\n color: var(--mat-sys-primary);\n text-decoration: underline;\n}\n\n.filter-panel-footer {\n margin-top: 8px;\n padding-top: 8px;\n border-top: 1px solid var(--mat-sys-outline-variant);\n}\n\n.clear-all-btn {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n padding: 4px 10px;\n border: none;\n border-radius: 4px;\n background: none;\n font-size: 12px;\n color: #ef4444;\n cursor: pointer;\n transition: background 0.15s;\n}\n\n.clear-all-btn:hover {\n background: #fef2f2;\n}\n\n/* ============================================================ */\n/* Component List (scrollable) */\n/* ============================================================ */\n\n.component-list {\n flex: 1;\n overflow-y: auto;\n padding: 8px 10px;\n}\n\n/* ============================================================ */\n/* Loading & Empty States */\n/* ============================================================ */\n\n.loading-state {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 40px 20px;\n}\n\n.empty-state {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 40px 20px;\n text-align: center;\n}\n\n.empty-state .empty-icon {\n font-size: 32px;\n color: var(--mat-sys-outline);\n margin-bottom: 12px;\n}\n\n.empty-state .empty-title {\n font-size: 14px;\n font-weight: 600;\n color: var(--mat-sys-on-surface-variant);\n margin: 0 0 4px;\n}\n\n.empty-state .empty-subtitle {\n font-size: 13px;\n color: var(--mat-sys-on-surface-variant);\n margin: 0;\n}\n\n/* ============================================================ */\n/* Component Card */\n/* ============================================================ */\n\n.component-card {\n margin-bottom: 6px;\n border: 1px solid var(--mat-sys-outline);\n border-radius: var(--mat-sys-corner-small);\n background: var(--mat-sys-surface);\n transition: all 0.15s;\n overflow: hidden;\n}\n\n.component-card:hover {\n box-shadow: var(--mat-sys-elevation-1);\n border-color: var(--mat-sys-outline);\n}\n\n/* Running state: green left border */\n.component-card.running {\n border-left: 3px solid #10b981;\n}\n\n/* File-loaded state: dashed border */\n.component-card.file-loaded {\n border-style: dashed;\n border-color: #94a3b8;\n}\n\n.component-card.file-loaded:hover {\n border-color: #64748b;\n}\n\n/* Expanded state: blue border */\n.component-card.expanded {\n border-color: var(--mat-sys-primary);\n box-shadow: 0 2px 12px rgba(59, 130, 246, 0.1);\n}\n\n.component-card.expanded.running {\n border-color: var(--mat-sys-primary);\n border-left: 3px solid #10b981;\n}\n\n.component-card.expanded.file-loaded {\n border-style: solid;\n border-color: var(--mat-sys-primary);\n}\n\n/* ============================================================ */\n/* Card Header */\n/* ============================================================ */\n\n.card-header {\n display: flex;\n align-items: flex-start;\n gap: 10px;\n padding: 10px 12px;\n cursor: pointer;\n user-select: none;\n}\n\n.card-header:hover {\n background: var(--mat-sys-surface-container-lowest);\n}\n\n.card-type-icon {\n flex-shrink: 0;\n width: 32px;\n height: 32px;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 16px;\n background: var(--mat-sys-surface-variant);\n border-radius: var(--mat-sys-corner-extra-small);\n margin-top: 2px;\n}\n\n.card-body {\n flex: 1;\n min-width: 0;\n}\n\n.card-title-row {\n display: flex;\n align-items: center;\n gap: 6px;\n flex-wrap: wrap;\n margin-bottom: 4px;\n}\n\n.card-name {\n font-size: 13px;\n font-weight: 600;\n color: var(--mat-sys-on-surface);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.file-badge {\n display: inline-flex;\n align-items: center;\n gap: 3px;\n padding: 1px 6px;\n border-radius: 4px;\n background: #f0f9ff;\n color: #0284c7;\n font-size: 10px;\n font-weight: 500;\n white-space: nowrap;\n max-width: 120px;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.card-meta-row {\n display: flex;\n align-items: center;\n gap: 6px;\n flex-wrap: wrap;\n}\n\n.version-badge {\n font-size: 11px;\n font-weight: 500;\n color: var(--mat-sys-on-surface-variant);\n background: var(--mat-sys-surface-variant);\n padding: 1px 6px;\n border-radius: 4px;\n}\n\n.status-badge {\n display: inline-flex;\n align-items: center;\n padding: 1px 7px;\n border-radius: 4px;\n font-size: 10px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.3px;\n}\n\n.status-badge.published {\n background: #d1fae5;\n color: #065f46;\n}\n\n.status-badge.draft {\n background: #e0e7ff;\n color: #3730a3;\n}\n\n.status-badge.deprecated {\n background: #fee2e2;\n color: #991b1b;\n}\n\n.status-badge.file {\n background: #fef3c7;\n color: #92400e;\n}\n\n.status-badge.text {\n background: #ede9fe;\n color: #5b21b6;\n}\n\n.status-badge.artifact {\n background: #cffafe;\n color: #155e75;\n}\n\n.namespace-chip {\n display: inline-flex;\n align-items: center;\n gap: 3px;\n padding: 1px 7px;\n border-radius: 10px;\n font-size: 10px;\n font-weight: 500;\n color: #fff;\n max-width: 160px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.namespace-chip i {\n font-size: 9px;\n opacity: 0.8;\n}\n\n/* ============================================================ */\n/* Card End (favorite, remove, chevron) */\n/* ============================================================ */\n\n.card-end {\n display: flex;\n align-items: center;\n gap: 2px;\n flex-shrink: 0;\n margin-top: 2px;\n}\n\n.favorite-btn {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 28px;\n height: 28px;\n border: none;\n border-radius: 4px;\n background: none;\n color: var(--mat-sys-outline);\n font-size: 14px;\n cursor: pointer;\n transition: all 0.15s;\n}\n\n.favorite-btn:hover {\n color: #eab308;\n background: #fefce8;\n}\n\n.favorite-btn.is-favorite {\n color: #eab308;\n}\n\n.remove-btn {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 28px;\n height: 28px;\n border: none;\n border-radius: 4px;\n background: none;\n color: var(--mat-sys-outline);\n font-size: 12px;\n cursor: pointer;\n transition: all 0.15s;\n}\n\n.remove-btn:hover {\n color: #ef4444;\n background: #fef2f2;\n}\n\n.card-chevron {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 24px;\n height: 24px;\n color: var(--mat-sys-on-surface-variant);\n font-size: 11px;\n}\n\n/* ============================================================ */\n/* Card Details (expanded content) */\n/* ============================================================ */\n\n.card-details {\n padding: 0 12px 12px;\n border-top: 1px solid var(--mat-sys-outline-variant);\n}\n\n.detail-description {\n padding: 8px 0;\n}\n\n.detail-description p {\n margin: 0;\n font-size: 13px;\n color: var(--mat-sys-on-surface-variant);\n line-height: 1.5;\n}\n\n.detail-info-grid {\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: 6px 16px;\n padding: 8px 0;\n}\n\n.detail-info-grid .info-item {\n display: flex;\n flex-direction: column;\n gap: 1px;\n}\n\n.detail-info-grid .info-label {\n font-size: 10px;\n font-weight: 600;\n color: var(--mat-sys-on-surface-variant);\n text-transform: uppercase;\n letter-spacing: 0.4px;\n}\n\n.detail-info-grid .info-value {\n font-size: 13px;\n color: var(--mat-sys-on-surface);\n}\n\n.detail-actions {\n display: flex;\n gap: 8px;\n padding-top: 8px;\n border-top: 1px solid var(--mat-sys-outline-variant);\n}\n"] }]
626
+ }], () => [{ type: i1.ComponentStudioStateService }, { type: i0.ChangeDetectorRef }], { NewComponent: [{
627
+ type: Output
628
+ }], ImportFromFile: [{
629
+ type: Output
630
+ }], ImportFromText: [{
631
+ type: Output
632
+ }], ImportFromArtifact: [{
633
+ type: Output
634
+ }] }); })();
635
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ComponentBrowserComponent, { className: "ComponentBrowserComponent", filePath: "src/ComponentStudio/components/browser/component-browser.component.ts", lineNumber: 21 }); })();
636
+ //# sourceMappingURL=component-browser.component.js.map