@memberjunction/ng-dashboards 5.34.1 → 5.35.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (346) hide show
  1. package/dist/AI/components/agents/agent-configuration.component.d.ts +51 -0
  2. package/dist/AI/components/agents/agent-configuration.component.d.ts.map +1 -1
  3. package/dist/AI/components/agents/agent-configuration.component.js +399 -292
  4. package/dist/AI/components/agents/agent-configuration.component.js.map +1 -1
  5. package/dist/AI/components/analytics/agent-runs/agent-run-analysis.component.d.ts +8 -2
  6. package/dist/AI/components/analytics/agent-runs/agent-run-analysis.component.d.ts.map +1 -1
  7. package/dist/AI/components/analytics/agent-runs/agent-run-analysis.component.js +87 -85
  8. package/dist/AI/components/analytics/agent-runs/agent-run-analysis.component.js.map +1 -1
  9. package/dist/AI/components/analytics/ai-analytics-resource.component.d.ts +75 -0
  10. package/dist/AI/components/analytics/ai-analytics-resource.component.d.ts.map +1 -1
  11. package/dist/AI/components/analytics/ai-analytics-resource.component.js +400 -89
  12. package/dist/AI/components/analytics/ai-analytics-resource.component.js.map +1 -1
  13. package/dist/AI/components/analytics/analytics-filter-bar.component.d.ts +5 -0
  14. package/dist/AI/components/analytics/analytics-filter-bar.component.d.ts.map +1 -1
  15. package/dist/AI/components/analytics/analytics-filter-bar.component.js +184 -135
  16. package/dist/AI/components/analytics/analytics-filter-bar.component.js.map +1 -1
  17. package/dist/AI/components/analytics/cost-budget/cost-budget.component.d.ts +8 -2
  18. package/dist/AI/components/analytics/cost-budget/cost-budget.component.d.ts.map +1 -1
  19. package/dist/AI/components/analytics/cost-budget/cost-budget.component.js +104 -103
  20. package/dist/AI/components/analytics/cost-budget/cost-budget.component.js.map +1 -1
  21. package/dist/AI/components/analytics/error-analysis/error-analysis.component.d.ts +8 -2
  22. package/dist/AI/components/analytics/error-analysis/error-analysis.component.d.ts.map +1 -1
  23. package/dist/AI/components/analytics/error-analysis/error-analysis.component.js +76 -74
  24. package/dist/AI/components/analytics/error-analysis/error-analysis.component.js.map +1 -1
  25. package/dist/AI/components/analytics/executive-summary/executive-summary.component.d.ts.map +1 -1
  26. package/dist/AI/components/analytics/executive-summary/executive-summary.component.js +67 -87
  27. package/dist/AI/components/analytics/executive-summary/executive-summary.component.js.map +1 -1
  28. package/dist/AI/components/analytics/model-performance/model-performance.component.d.ts +12 -19
  29. package/dist/AI/components/analytics/model-performance/model-performance.component.d.ts.map +1 -1
  30. package/dist/AI/components/analytics/model-performance/model-performance.component.js +96 -203
  31. package/dist/AI/components/analytics/model-performance/model-performance.component.js.map +1 -1
  32. package/dist/AI/components/analytics/prompt-runs/prompt-run-analysis.component.d.ts.map +1 -1
  33. package/dist/AI/components/analytics/prompt-runs/prompt-run-analysis.component.js +110 -126
  34. package/dist/AI/components/analytics/prompt-runs/prompt-run-analysis.component.js.map +1 -1
  35. package/dist/AI/components/analytics/usage-patterns/usage-patterns.component.d.ts.map +1 -1
  36. package/dist/AI/components/analytics/usage-patterns/usage-patterns.component.js +61 -77
  37. package/dist/AI/components/analytics/usage-patterns/usage-patterns.component.js.map +1 -1
  38. package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.js +990 -992
  39. package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.js.map +1 -1
  40. package/dist/AI/components/duplicates/duplicate-detection-resource.component.d.ts +6 -3
  41. package/dist/AI/components/duplicates/duplicate-detection-resource.component.d.ts.map +1 -1
  42. package/dist/AI/components/duplicates/duplicate-detection-resource.component.js +493 -490
  43. package/dist/AI/components/duplicates/duplicate-detection-resource.component.js.map +1 -1
  44. package/dist/AI/components/models/model-management.component.d.ts +17 -0
  45. package/dist/AI/components/models/model-management.component.d.ts.map +1 -1
  46. package/dist/AI/components/models/model-management.component.js +370 -425
  47. package/dist/AI/components/models/model-management.component.js.map +1 -1
  48. package/dist/AI/components/prompts/prompt-management.component.d.ts +17 -0
  49. package/dist/AI/components/prompts/prompt-management.component.d.ts.map +1 -1
  50. package/dist/AI/components/prompts/prompt-management.component.js +317 -357
  51. package/dist/AI/components/prompts/prompt-management.component.js.map +1 -1
  52. package/dist/AI/components/requests/agent-requests-resource.component.d.ts +11 -0
  53. package/dist/AI/components/requests/agent-requests-resource.component.d.ts.map +1 -1
  54. package/dist/AI/components/requests/agent-requests-resource.component.js +170 -175
  55. package/dist/AI/components/requests/agent-requests-resource.component.js.map +1 -1
  56. package/dist/AI/components/system/system-configuration.component.d.ts +19 -0
  57. package/dist/AI/components/system/system-configuration.component.d.ts.map +1 -1
  58. package/dist/AI/components/system/system-configuration.component.js +403 -362
  59. package/dist/AI/components/system/system-configuration.component.js.map +1 -1
  60. package/dist/AI/components/tags/tags-resource.component.js +781 -783
  61. package/dist/AI/components/tags/tags-resource.component.js.map +1 -1
  62. package/dist/AI/components/vectors/vector-management-resource.component.d.ts +8 -3
  63. package/dist/AI/components/vectors/vector-management-resource.component.d.ts.map +1 -1
  64. package/dist/AI/components/vectors/vector-management-resource.component.js +547 -521
  65. package/dist/AI/components/vectors/vector-management-resource.component.js.map +1 -1
  66. package/dist/Actions/components/actions-overview.component.d.ts +6 -0
  67. package/dist/Actions/components/actions-overview.component.d.ts.map +1 -1
  68. package/dist/Actions/components/actions-overview.component.js +79 -30
  69. package/dist/Actions/components/actions-overview.component.js.map +1 -1
  70. package/dist/Actions/components/execution-monitoring.component.d.ts +9 -3
  71. package/dist/Actions/components/execution-monitoring.component.d.ts.map +1 -1
  72. package/dist/Actions/components/execution-monitoring.component.js +196 -142
  73. package/dist/Actions/components/execution-monitoring.component.js.map +1 -1
  74. package/dist/Actions/components/explorer/action-explorer.component.d.ts +41 -1
  75. package/dist/Actions/components/explorer/action-explorer.component.d.ts.map +1 -1
  76. package/dist/Actions/components/explorer/action-explorer.component.js +388 -94
  77. package/dist/Actions/components/explorer/action-explorer.component.js.map +1 -1
  78. package/dist/Actions/components/explorer/index.d.ts +0 -1
  79. package/dist/Actions/components/explorer/index.d.ts.map +1 -1
  80. package/dist/Actions/components/explorer/index.js +0 -1
  81. package/dist/Actions/components/explorer/index.js.map +1 -1
  82. package/dist/Admin/admin-data-schema.component.js +32 -40
  83. package/dist/Admin/admin-data-schema.component.js.map +1 -1
  84. package/dist/Admin/admin-dev-tools-resource.component.js +32 -40
  85. package/dist/Admin/admin-dev-tools-resource.component.js.map +1 -1
  86. package/dist/Admin/admin-identity-access.component.js +32 -40
  87. package/dist/Admin/admin-identity-access.component.js.map +1 -1
  88. package/dist/Admin/admin-monitoring.component.js +32 -40
  89. package/dist/Admin/admin-monitoring.component.js.map +1 -1
  90. package/dist/ApplicationRoles/application-roles-resource.component.js +76 -82
  91. package/dist/ApplicationRoles/application-roles-resource.component.js.map +1 -1
  92. package/dist/Archiving/components/archive-config-resource.component.d.ts.map +1 -1
  93. package/dist/Archiving/components/archive-config-resource.component.js +24 -5
  94. package/dist/Archiving/components/archive-config-resource.component.js.map +1 -1
  95. package/dist/Archiving/components/archive-runs-resource.component.d.ts.map +1 -1
  96. package/dist/Archiving/components/archive-runs-resource.component.js +24 -5
  97. package/dist/Archiving/components/archive-runs-resource.component.js.map +1 -1
  98. package/dist/Communication/communication-logs-resource.component.d.ts +1 -1
  99. package/dist/Communication/communication-logs-resource.component.d.ts.map +1 -1
  100. package/dist/Communication/communication-logs-resource.component.js +80 -99
  101. package/dist/Communication/communication-logs-resource.component.js.map +1 -1
  102. package/dist/Communication/communication-monitor-resource.component.d.ts.map +1 -1
  103. package/dist/Communication/communication-monitor-resource.component.js +127 -106
  104. package/dist/Communication/communication-monitor-resource.component.js.map +1 -1
  105. package/dist/Communication/communication-providers-resource.component.d.ts.map +1 -1
  106. package/dist/Communication/communication-providers-resource.component.js +44 -45
  107. package/dist/Communication/communication-providers-resource.component.js.map +1 -1
  108. package/dist/Communication/communication-runs-resource.component.d.ts.map +1 -1
  109. package/dist/Communication/communication-runs-resource.component.js +60 -58
  110. package/dist/Communication/communication-runs-resource.component.js.map +1 -1
  111. package/dist/Communication/communication-templates-resource.component.d.ts +1 -1
  112. package/dist/Communication/communication-templates-resource.component.d.ts.map +1 -1
  113. package/dist/Communication/communication-templates-resource.component.js +139 -162
  114. package/dist/Communication/communication-templates-resource.component.js.map +1 -1
  115. package/dist/Credentials/components/credentials-audit-resource.component.d.ts +7 -0
  116. package/dist/Credentials/components/credentials-audit-resource.component.d.ts.map +1 -1
  117. package/dist/Credentials/components/credentials-audit-resource.component.js +310 -297
  118. package/dist/Credentials/components/credentials-audit-resource.component.js.map +1 -1
  119. package/dist/Credentials/components/credentials-categories-resource.component.js +245 -266
  120. package/dist/Credentials/components/credentials-categories-resource.component.js.map +1 -1
  121. package/dist/Credentials/components/credentials-list-resource.component.d.ts +7 -0
  122. package/dist/Credentials/components/credentials-list-resource.component.d.ts.map +1 -1
  123. package/dist/Credentials/components/credentials-list-resource.component.js +381 -399
  124. package/dist/Credentials/components/credentials-list-resource.component.js.map +1 -1
  125. package/dist/Credentials/components/credentials-overview-resource.component.js +222 -228
  126. package/dist/Credentials/components/credentials-overview-resource.component.js.map +1 -1
  127. package/dist/Credentials/components/credentials-types-resource.component.d.ts +6 -0
  128. package/dist/Credentials/components/credentials-types-resource.component.d.ts.map +1 -1
  129. package/dist/Credentials/components/credentials-types-resource.component.js +294 -305
  130. package/dist/Credentials/components/credentials-types-resource.component.js.map +1 -1
  131. package/dist/DatabaseDesigner/components/database-designer-dashboard.component.d.ts +8 -0
  132. package/dist/DatabaseDesigner/components/database-designer-dashboard.component.d.ts.map +1 -1
  133. package/dist/DatabaseDesigner/components/database-designer-dashboard.component.js +21 -0
  134. package/dist/DatabaseDesigner/components/database-designer-dashboard.component.js.map +1 -1
  135. package/dist/DatabaseDesigner/components/entity-list.component.js +147 -160
  136. package/dist/DatabaseDesigner/components/entity-list.component.js.map +1 -1
  137. package/dist/DatabaseDesigner/database-designer-dashboards.module.d.ts +1 -1
  138. package/dist/DatabaseDesigner/database-designer-dashboards.module.d.ts.map +1 -1
  139. package/dist/DatabaseDesigner/database-designer-dashboards.module.js +19 -1
  140. package/dist/DatabaseDesigner/database-designer-dashboards.module.js.map +1 -1
  141. package/dist/EntityAdmin/entity-admin-dashboard.component.js +20 -16
  142. package/dist/EntityAdmin/entity-admin-dashboard.component.js.map +1 -1
  143. package/dist/Home/home-dashboard.component.d.ts +6 -0
  144. package/dist/Home/home-dashboard.component.d.ts.map +1 -1
  145. package/dist/Home/home-dashboard.component.js +521 -485
  146. package/dist/Home/home-dashboard.component.js.map +1 -1
  147. package/dist/Integration/components/activity/activity.component.d.ts +8 -0
  148. package/dist/Integration/components/activity/activity.component.d.ts.map +1 -1
  149. package/dist/Integration/components/activity/activity.component.js +309 -318
  150. package/dist/Integration/components/activity/activity.component.js.map +1 -1
  151. package/dist/Integration/components/connections/connections.component.js +866 -847
  152. package/dist/Integration/components/connections/connections.component.js.map +1 -1
  153. package/dist/Integration/components/mapping-workspace/mapping-workspace.component.js +234 -233
  154. package/dist/Integration/components/mapping-workspace/mapping-workspace.component.js.map +1 -1
  155. package/dist/Integration/components/overview/overview.component.js +182 -163
  156. package/dist/Integration/components/overview/overview.component.js.map +1 -1
  157. package/dist/Integration/components/pipelines/pipelines.component.d.ts +2 -0
  158. package/dist/Integration/components/pipelines/pipelines.component.d.ts.map +1 -1
  159. package/dist/Integration/components/pipelines/pipelines.component.js +610 -606
  160. package/dist/Integration/components/pipelines/pipelines.component.js.map +1 -1
  161. package/dist/Integration/components/schedules/schedules.component.js +241 -241
  162. package/dist/Integration/components/schedules/schedules.component.js.map +1 -1
  163. package/dist/Integration/integration.module.d.ts +1 -1
  164. package/dist/Integration/integration.module.d.ts.map +1 -1
  165. package/dist/Integration/integration.module.js +28 -1
  166. package/dist/Integration/integration.module.js.map +1 -1
  167. package/dist/KnowledgeHub/components/analytics/analytics-resource.component.js +673 -674
  168. package/dist/KnowledgeHub/components/analytics/analytics-resource.component.js.map +1 -1
  169. package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.js +54 -51
  170. package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.js.map +1 -1
  171. package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.js +745 -703
  172. package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.js.map +1 -1
  173. package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.d.ts +12 -1
  174. package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.d.ts.map +1 -1
  175. package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.js +191 -120
  176. package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.js.map +1 -1
  177. package/dist/Lists/components/lists-browse-resource.component.d.ts +18 -1
  178. package/dist/Lists/components/lists-browse-resource.component.d.ts.map +1 -1
  179. package/dist/Lists/components/lists-browse-resource.component.js +486 -532
  180. package/dist/Lists/components/lists-browse-resource.component.js.map +1 -1
  181. package/dist/Lists/components/lists-categories-resource.component.d.ts.map +1 -1
  182. package/dist/Lists/components/lists-categories-resource.component.js +152 -160
  183. package/dist/Lists/components/lists-categories-resource.component.js.map +1 -1
  184. package/dist/Lists/components/lists-my-lists-resource.component.d.ts.map +1 -1
  185. package/dist/Lists/components/lists-my-lists-resource.component.js +302 -319
  186. package/dist/Lists/components/lists-my-lists-resource.component.js.map +1 -1
  187. package/dist/Lists/components/lists-operations-resource.component.d.ts.map +1 -1
  188. package/dist/Lists/components/lists-operations-resource.component.js +234 -246
  189. package/dist/Lists/components/lists-operations-resource.component.js.map +1 -1
  190. package/dist/MCP/mcp-dashboard.component.d.ts +20 -0
  191. package/dist/MCP/mcp-dashboard.component.d.ts.map +1 -1
  192. package/dist/MCP/mcp-dashboard.component.js +1248 -1338
  193. package/dist/MCP/mcp-dashboard.component.js.map +1 -1
  194. package/dist/MCP/mcp.module.d.ts +1 -1
  195. package/dist/MCP/mcp.module.d.ts.map +1 -1
  196. package/dist/MCP/mcp.module.js +34 -1
  197. package/dist/MCP/mcp.module.js.map +1 -1
  198. package/dist/Permissions/audit-log-resource.component.js +76 -85
  199. package/dist/Permissions/audit-log-resource.component.js.map +1 -1
  200. package/dist/Permissions/resource-access-resource.component.js +64 -69
  201. package/dist/Permissions/resource-access-resource.component.js.map +1 -1
  202. package/dist/Permissions/user-access-resource.component.js +63 -74
  203. package/dist/Permissions/user-access-resource.component.js.map +1 -1
  204. package/dist/QueryBrowser/query-browser-resource.component.js +2 -2
  205. package/dist/QueryBrowser/query-browser-resource.component.js.map +1 -1
  206. package/dist/Scheduling/components/scheduling-activity-resource.component.d.ts +2 -1
  207. package/dist/Scheduling/components/scheduling-activity-resource.component.d.ts.map +1 -1
  208. package/dist/Scheduling/components/scheduling-activity-resource.component.js +11 -12
  209. package/dist/Scheduling/components/scheduling-activity-resource.component.js.map +1 -1
  210. package/dist/Scheduling/components/scheduling-activity.component.d.ts +9 -1
  211. package/dist/Scheduling/components/scheduling-activity.component.d.ts.map +1 -1
  212. package/dist/Scheduling/components/scheduling-activity.component.js +250 -197
  213. package/dist/Scheduling/components/scheduling-activity.component.js.map +1 -1
  214. package/dist/Scheduling/components/scheduling-jobs-resource.component.d.ts +2 -1
  215. package/dist/Scheduling/components/scheduling-jobs-resource.component.d.ts.map +1 -1
  216. package/dist/Scheduling/components/scheduling-jobs-resource.component.js +11 -12
  217. package/dist/Scheduling/components/scheduling-jobs-resource.component.js.map +1 -1
  218. package/dist/Scheduling/components/scheduling-jobs.component.d.ts +9 -1
  219. package/dist/Scheduling/components/scheduling-jobs.component.d.ts.map +1 -1
  220. package/dist/Scheduling/components/scheduling-jobs.component.js +203 -147
  221. package/dist/Scheduling/components/scheduling-jobs.component.js.map +1 -1
  222. package/dist/Scheduling/components/scheduling-overview-resource.component.d.ts +2 -1
  223. package/dist/Scheduling/components/scheduling-overview-resource.component.d.ts.map +1 -1
  224. package/dist/Scheduling/components/scheduling-overview-resource.component.js +11 -12
  225. package/dist/Scheduling/components/scheduling-overview-resource.component.js.map +1 -1
  226. package/dist/Scheduling/components/scheduling-overview.component.d.ts +3 -1
  227. package/dist/Scheduling/components/scheduling-overview.component.d.ts.map +1 -1
  228. package/dist/Scheduling/components/scheduling-overview.component.js +224 -190
  229. package/dist/Scheduling/components/scheduling-overview.component.js.map +1 -1
  230. package/dist/Scheduling/scheduling-dashboard.component.d.ts +19 -6
  231. package/dist/Scheduling/scheduling-dashboard.component.d.ts.map +1 -1
  232. package/dist/Scheduling/scheduling-dashboard.component.js +262 -104
  233. package/dist/Scheduling/scheduling-dashboard.component.js.map +1 -1
  234. package/dist/SystemDiagnostics/system-diagnostics.component.js +773 -783
  235. package/dist/SystemDiagnostics/system-diagnostics.component.js.map +1 -1
  236. package/dist/Testing/components/testing-analytics-resource.component.d.ts +2 -1
  237. package/dist/Testing/components/testing-analytics-resource.component.d.ts.map +1 -1
  238. package/dist/Testing/components/testing-analytics-resource.component.js +7 -14
  239. package/dist/Testing/components/testing-analytics-resource.component.js.map +1 -1
  240. package/dist/Testing/components/testing-analytics.component.d.ts +3 -1
  241. package/dist/Testing/components/testing-analytics.component.d.ts.map +1 -1
  242. package/dist/Testing/components/testing-analytics.component.js +420 -393
  243. package/dist/Testing/components/testing-analytics.component.js.map +1 -1
  244. package/dist/Testing/components/testing-dashboard-tab-resource.component.d.ts +2 -1
  245. package/dist/Testing/components/testing-dashboard-tab-resource.component.d.ts.map +1 -1
  246. package/dist/Testing/components/testing-dashboard-tab-resource.component.js +16 -19
  247. package/dist/Testing/components/testing-dashboard-tab-resource.component.js.map +1 -1
  248. package/dist/Testing/components/testing-dashboard-tab.component.d.ts +3 -1
  249. package/dist/Testing/components/testing-dashboard-tab.component.d.ts.map +1 -1
  250. package/dist/Testing/components/testing-dashboard-tab.component.js +157 -122
  251. package/dist/Testing/components/testing-dashboard-tab.component.js.map +1 -1
  252. package/dist/Testing/components/testing-explorer-resource.component.d.ts +2 -1
  253. package/dist/Testing/components/testing-explorer-resource.component.d.ts.map +1 -1
  254. package/dist/Testing/components/testing-explorer-resource.component.js +7 -12
  255. package/dist/Testing/components/testing-explorer-resource.component.js.map +1 -1
  256. package/dist/Testing/components/testing-explorer.component.d.ts +8 -1
  257. package/dist/Testing/components/testing-explorer.component.d.ts.map +1 -1
  258. package/dist/Testing/components/testing-explorer.component.js +587 -608
  259. package/dist/Testing/components/testing-explorer.component.js.map +1 -1
  260. package/dist/Testing/components/testing-review-resource.component.d.ts +4 -1
  261. package/dist/Testing/components/testing-review-resource.component.d.ts.map +1 -1
  262. package/dist/Testing/components/testing-review-resource.component.js +9 -12
  263. package/dist/Testing/components/testing-review-resource.component.js.map +1 -1
  264. package/dist/Testing/components/testing-review.component.d.ts +3 -1
  265. package/dist/Testing/components/testing-review.component.d.ts.map +1 -1
  266. package/dist/Testing/components/testing-review.component.js +310 -274
  267. package/dist/Testing/components/testing-review.component.js.map +1 -1
  268. package/dist/Testing/components/testing-runs-resource.component.d.ts +2 -1
  269. package/dist/Testing/components/testing-runs-resource.component.d.ts.map +1 -1
  270. package/dist/Testing/components/testing-runs-resource.component.js +16 -19
  271. package/dist/Testing/components/testing-runs-resource.component.js.map +1 -1
  272. package/dist/Testing/components/testing-runs.component.d.ts +3 -1
  273. package/dist/Testing/components/testing-runs.component.d.ts.map +1 -1
  274. package/dist/Testing/components/testing-runs.component.js +307 -273
  275. package/dist/Testing/components/testing-runs.component.js.map +1 -1
  276. package/dist/Testing/testing-dashboard.component.d.ts +2 -0
  277. package/dist/Testing/testing-dashboard.component.d.ts.map +1 -1
  278. package/dist/Testing/testing-dashboard.component.js +107 -93
  279. package/dist/Testing/testing-dashboard.component.js.map +1 -1
  280. package/dist/VersionHistory/components/diff-resource.component.js +185 -188
  281. package/dist/VersionHistory/components/diff-resource.component.js.map +1 -1
  282. package/dist/VersionHistory/components/graph-resource.component.js +154 -184
  283. package/dist/VersionHistory/components/graph-resource.component.js.map +1 -1
  284. package/dist/VersionHistory/components/labels-resource.component.d.ts +7 -0
  285. package/dist/VersionHistory/components/labels-resource.component.d.ts.map +1 -1
  286. package/dist/VersionHistory/components/labels-resource.component.js +350 -354
  287. package/dist/VersionHistory/components/labels-resource.component.js.map +1 -1
  288. package/dist/VersionHistory/components/restore-resource.component.js +163 -169
  289. package/dist/VersionHistory/components/restore-resource.component.js.map +1 -1
  290. package/dist/actions-dashboards.module.d.ts +15 -16
  291. package/dist/actions-dashboards.module.d.ts.map +1 -1
  292. package/dist/actions-dashboards.module.js +34 -11
  293. package/dist/actions-dashboards.module.js.map +1 -1
  294. package/dist/ai-dashboards.module.d.ts +45 -48
  295. package/dist/ai-dashboards.module.d.ts.map +1 -1
  296. package/dist/ai-dashboards.module.js +36 -10
  297. package/dist/ai-dashboards.module.js.map +1 -1
  298. package/dist/archiving-dashboards.module.d.ts +2 -1
  299. package/dist/archiving-dashboards.module.d.ts.map +1 -1
  300. package/dist/archiving-dashboards.module.js +12 -2
  301. package/dist/archiving-dashboards.module.js.map +1 -1
  302. package/dist/communication-dashboards.module.d.ts +2 -1
  303. package/dist/communication-dashboards.module.d.ts.map +1 -1
  304. package/dist/communication-dashboards.module.js +24 -3
  305. package/dist/communication-dashboards.module.js.map +1 -1
  306. package/dist/core-dashboards.module.d.ts +1 -1
  307. package/dist/core-dashboards.module.d.ts.map +1 -1
  308. package/dist/core-dashboards.module.js +31 -1
  309. package/dist/core-dashboards.module.js.map +1 -1
  310. package/dist/credentials-dashboards.module.d.ts +1 -1
  311. package/dist/credentials-dashboards.module.d.ts.map +1 -1
  312. package/dist/credentials-dashboards.module.js +28 -1
  313. package/dist/credentials-dashboards.module.js.map +1 -1
  314. package/dist/lists-dashboards.module.d.ts +1 -1
  315. package/dist/lists-dashboards.module.d.ts.map +1 -1
  316. package/dist/lists-dashboards.module.js +28 -1
  317. package/dist/lists-dashboards.module.js.map +1 -1
  318. package/dist/public-api.d.ts +2 -2
  319. package/dist/public-api.d.ts.map +1 -1
  320. package/dist/public-api.js +3 -3
  321. package/dist/public-api.js.map +1 -1
  322. package/dist/scheduling-dashboards.module.d.ts +1 -1
  323. package/dist/scheduling-dashboards.module.d.ts.map +1 -1
  324. package/dist/scheduling-dashboards.module.js +31 -1
  325. package/dist/scheduling-dashboards.module.js.map +1 -1
  326. package/dist/testing-dashboards.module.d.ts +8 -7
  327. package/dist/testing-dashboards.module.d.ts.map +1 -1
  328. package/dist/testing-dashboards.module.js +30 -0
  329. package/dist/testing-dashboards.module.js.map +1 -1
  330. package/package.json +52 -52
  331. package/dist/AI/components/agents/agent-filter-panel.component.d.ts +0 -56
  332. package/dist/AI/components/agents/agent-filter-panel.component.d.ts.map +0 -1
  333. package/dist/AI/components/agents/agent-filter-panel.component.js +0 -285
  334. package/dist/AI/components/agents/agent-filter-panel.component.js.map +0 -1
  335. package/dist/AI/components/prompts/prompt-filter-panel.component.d.ts +0 -49
  336. package/dist/AI/components/prompts/prompt-filter-panel.component.d.ts.map +0 -1
  337. package/dist/AI/components/prompts/prompt-filter-panel.component.js +0 -184
  338. package/dist/AI/components/prompts/prompt-filter-panel.component.js.map +0 -1
  339. package/dist/AI/components/system/system-config-filter-panel.component.d.ts +0 -33
  340. package/dist/AI/components/system/system-config-filter-panel.component.d.ts.map +0 -1
  341. package/dist/AI/components/system/system-config-filter-panel.component.js +0 -144
  342. package/dist/AI/components/system/system-config-filter-panel.component.js.map +0 -1
  343. package/dist/Actions/components/explorer/action-toolbar.component.d.ts +0 -63
  344. package/dist/Actions/components/explorer/action-toolbar.component.d.ts.map +0 -1
  345. package/dist/Actions/components/explorer/action-toolbar.component.js +0 -463
  346. package/dist/Actions/components/explorer/action-toolbar.component.js.map +0 -1
@@ -14,31 +14,24 @@ import * as i0 from "@angular/core";
14
14
  import * as i1 from "@angular/forms";
15
15
  import * as i2 from "@memberjunction/ng-ui-components";
16
16
  const _c0 = () => [1, 2, 3, 4];
17
- function EntityListComponent_Conditional_12_Template(rf, ctx) { if (rf & 1) {
18
- const _r1 = i0.ɵɵgetCurrentView();
19
- i0.ɵɵelementStart(0, "button", 16);
20
- i0.ɵɵlistener("click", function EntityListComponent_Conditional_12_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.SearchTerm = ""); });
21
- i0.ɵɵelement(1, "i", 17);
22
- i0.ɵɵelementEnd();
23
- } }
24
- function EntityListComponent_Conditional_13_For_4_Template(rf, ctx) { if (rf & 1) {
25
- i0.ɵɵelementStart(0, "option", 20);
17
+ function EntityListComponent_Conditional_11_For_4_Template(rf, ctx) { if (rf & 1) {
18
+ i0.ɵɵelementStart(0, "option", 14);
26
19
  i0.ɵɵtext(1);
27
20
  i0.ɵɵelementEnd();
28
21
  } if (rf & 2) {
29
- const schema_r4 = ctx.$implicit;
30
- i0.ɵɵproperty("value", schema_r4);
22
+ const schema_r3 = ctx.$implicit;
23
+ i0.ɵɵproperty("value", schema_r3);
31
24
  i0.ɵɵadvance();
32
- i0.ɵɵtextInterpolate(schema_r4);
25
+ i0.ɵɵtextInterpolate(schema_r3);
33
26
  } }
34
- function EntityListComponent_Conditional_13_Template(rf, ctx) { if (rf & 1) {
35
- const _r3 = i0.ɵɵgetCurrentView();
36
- i0.ɵɵelementStart(0, "select", 18);
37
- i0.ɵɵlistener("change", function EntityListComponent_Conditional_13_Template_select_change_0_listener($event) { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.SelectedSchema = $event.target.value); });
38
- i0.ɵɵelementStart(1, "option", 19);
27
+ function EntityListComponent_Conditional_11_Template(rf, ctx) { if (rf & 1) {
28
+ const _r1 = i0.ɵɵgetCurrentView();
29
+ i0.ɵɵelementStart(0, "select", 12);
30
+ i0.ɵɵlistener("change", function EntityListComponent_Conditional_11_Template_select_change_0_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.SelectedSchema = $event.target.value); });
31
+ i0.ɵɵelementStart(1, "option", 13);
39
32
  i0.ɵɵtext(2, "All Schemas");
40
33
  i0.ɵɵelementEnd();
41
- i0.ɵɵrepeaterCreate(3, EntityListComponent_Conditional_13_For_4_Template, 2, 2, "option", 20, i0.ɵɵrepeaterTrackByIdentity);
34
+ i0.ɵɵrepeaterCreate(3, EntityListComponent_Conditional_11_For_4_Template, 2, 2, "option", 14, i0.ɵɵrepeaterTrackByIdentity);
42
35
  i0.ɵɵelementEnd();
43
36
  } if (rf & 2) {
44
37
  const ctx_r1 = i0.ɵɵnextContext();
@@ -46,9 +39,9 @@ function EntityListComponent_Conditional_13_Template(rf, ctx) { if (rf & 1) {
46
39
  i0.ɵɵadvance(3);
47
40
  i0.ɵɵrepeater(ctx_r1.AvailableFilterSchemas);
48
41
  } }
49
- function EntityListComponent_Conditional_16_Template(rf, ctx) { if (rf & 1) {
50
- i0.ɵɵelementStart(0, "div", 14);
51
- i0.ɵɵelement(1, "i", 21);
42
+ function EntityListComponent_Conditional_13_Template(rf, ctx) { if (rf & 1) {
43
+ i0.ɵɵelementStart(0, "div", 10);
44
+ i0.ɵɵelement(1, "i", 15);
52
45
  i0.ɵɵtext(2);
53
46
  i0.ɵɵelementEnd();
54
47
  } if (rf & 2) {
@@ -56,176 +49,176 @@ function EntityListComponent_Conditional_16_Template(rf, ctx) { if (rf & 1) {
56
49
  i0.ɵɵadvance(2);
57
50
  i0.ɵɵtextInterpolate1(" ", ctx_r1.ErrorMessage, " ");
58
51
  } }
59
- function EntityListComponent_Conditional_17_For_2_Template(rf, ctx) { if (rf & 1) {
60
- i0.ɵɵelementStart(0, "div", 22);
61
- i0.ɵɵelement(1, "div", 23)(2, "div", 24)(3, "div", 25)(4, "div", 25)(5, "div", 24)(6, "div", 25);
52
+ function EntityListComponent_Conditional_14_For_2_Template(rf, ctx) { if (rf & 1) {
53
+ i0.ɵɵelementStart(0, "div", 16);
54
+ i0.ɵɵelement(1, "div", 17)(2, "div", 18)(3, "div", 19)(4, "div", 19)(5, "div", 18)(6, "div", 19);
62
55
  i0.ɵɵelementEnd();
63
56
  } }
64
- function EntityListComponent_Conditional_17_Template(rf, ctx) { if (rf & 1) {
65
- i0.ɵɵelementStart(0, "div", 15);
66
- i0.ɵɵrepeaterCreate(1, EntityListComponent_Conditional_17_For_2_Template, 7, 0, "div", 22, i0.ɵɵrepeaterTrackByIndex);
57
+ function EntityListComponent_Conditional_14_Template(rf, ctx) { if (rf & 1) {
58
+ i0.ɵɵelementStart(0, "div", 11);
59
+ i0.ɵɵrepeaterCreate(1, EntityListComponent_Conditional_14_For_2_Template, 7, 0, "div", 16, i0.ɵɵrepeaterTrackByIndex);
67
60
  i0.ɵɵelementEnd();
68
61
  } if (rf & 2) {
69
62
  i0.ɵɵadvance();
70
63
  i0.ɵɵrepeater(i0.ɵɵpureFunction0(0, _c0));
71
64
  } }
72
- function EntityListComponent_Conditional_18_Conditional_0_Conditional_7_Template(rf, ctx) { if (rf & 1) {
73
- i0.ɵɵelement(0, "i", 40);
65
+ function EntityListComponent_Conditional_15_Conditional_0_Conditional_7_Template(rf, ctx) { if (rf & 1) {
66
+ i0.ɵɵelement(0, "i", 34);
74
67
  } if (rf & 2) {
75
68
  const ctx_r1 = i0.ɵɵnextContext(3);
76
69
  i0.ɵɵclassProp("fa-chevron-up", ctx_r1.SortDirection === "asc")("fa-chevron-down", ctx_r1.SortDirection === "desc");
77
70
  } }
78
- function EntityListComponent_Conditional_18_Conditional_0_Conditional_8_Template(rf, ctx) { if (rf & 1) {
79
- i0.ɵɵelement(0, "i", 32);
71
+ function EntityListComponent_Conditional_15_Conditional_0_Conditional_8_Template(rf, ctx) { if (rf & 1) {
72
+ i0.ɵɵelement(0, "i", 26);
80
73
  } }
81
- function EntityListComponent_Conditional_18_Conditional_0_Conditional_12_Template(rf, ctx) { if (rf & 1) {
82
- i0.ɵɵelement(0, "i", 40);
74
+ function EntityListComponent_Conditional_15_Conditional_0_Conditional_12_Template(rf, ctx) { if (rf & 1) {
75
+ i0.ɵɵelement(0, "i", 34);
83
76
  } if (rf & 2) {
84
77
  const ctx_r1 = i0.ɵɵnextContext(3);
85
78
  i0.ɵɵclassProp("fa-chevron-up", ctx_r1.SortDirection === "asc")("fa-chevron-down", ctx_r1.SortDirection === "desc");
86
79
  } }
87
- function EntityListComponent_Conditional_18_Conditional_0_Conditional_13_Template(rf, ctx) { if (rf & 1) {
88
- i0.ɵɵelement(0, "i", 32);
80
+ function EntityListComponent_Conditional_15_Conditional_0_Conditional_13_Template(rf, ctx) { if (rf & 1) {
81
+ i0.ɵɵelement(0, "i", 26);
89
82
  } }
90
- function EntityListComponent_Conditional_18_Conditional_0_Conditional_17_Template(rf, ctx) { if (rf & 1) {
91
- i0.ɵɵelement(0, "i", 40);
83
+ function EntityListComponent_Conditional_15_Conditional_0_Conditional_17_Template(rf, ctx) { if (rf & 1) {
84
+ i0.ɵɵelement(0, "i", 34);
92
85
  } if (rf & 2) {
93
86
  const ctx_r1 = i0.ɵɵnextContext(3);
94
87
  i0.ɵɵclassProp("fa-chevron-up", ctx_r1.SortDirection === "asc")("fa-chevron-down", ctx_r1.SortDirection === "desc");
95
88
  } }
96
- function EntityListComponent_Conditional_18_Conditional_0_Conditional_18_Template(rf, ctx) { if (rf & 1) {
97
- i0.ɵɵelement(0, "i", 32);
89
+ function EntityListComponent_Conditional_15_Conditional_0_Conditional_18_Template(rf, ctx) { if (rf & 1) {
90
+ i0.ɵɵelement(0, "i", 26);
98
91
  } }
99
- function EntityListComponent_Conditional_18_Conditional_0_Conditional_22_Template(rf, ctx) { if (rf & 1) {
100
- i0.ɵɵelement(0, "i", 40);
92
+ function EntityListComponent_Conditional_15_Conditional_0_Conditional_22_Template(rf, ctx) { if (rf & 1) {
93
+ i0.ɵɵelement(0, "i", 34);
101
94
  } if (rf & 2) {
102
95
  const ctx_r1 = i0.ɵɵnextContext(3);
103
96
  i0.ɵɵclassProp("fa-chevron-up", ctx_r1.SortDirection === "asc")("fa-chevron-down", ctx_r1.SortDirection === "desc");
104
97
  } }
105
- function EntityListComponent_Conditional_18_Conditional_0_Conditional_23_Template(rf, ctx) { if (rf & 1) {
106
- i0.ɵɵelement(0, "i", 32);
98
+ function EntityListComponent_Conditional_15_Conditional_0_Conditional_23_Template(rf, ctx) { if (rf & 1) {
99
+ i0.ɵɵelement(0, "i", 26);
107
100
  } }
108
- function EntityListComponent_Conditional_18_Conditional_0_Conditional_27_Template(rf, ctx) { if (rf & 1) {
109
- i0.ɵɵelement(0, "i", 40);
101
+ function EntityListComponent_Conditional_15_Conditional_0_Conditional_27_Template(rf, ctx) { if (rf & 1) {
102
+ i0.ɵɵelement(0, "i", 34);
110
103
  } if (rf & 2) {
111
104
  const ctx_r1 = i0.ɵɵnextContext(3);
112
105
  i0.ɵɵclassProp("fa-chevron-up", ctx_r1.SortDirection === "asc")("fa-chevron-down", ctx_r1.SortDirection === "desc");
113
106
  } }
114
- function EntityListComponent_Conditional_18_Conditional_0_Conditional_28_Template(rf, ctx) { if (rf & 1) {
115
- i0.ɵɵelement(0, "i", 32);
107
+ function EntityListComponent_Conditional_15_Conditional_0_Conditional_28_Template(rf, ctx) { if (rf & 1) {
108
+ i0.ɵɵelement(0, "i", 26);
116
109
  } }
117
- function EntityListComponent_Conditional_18_Conditional_0_For_33_Conditional_5_Template(rf, ctx) { if (rf & 1) {
118
- i0.ɵɵelementStart(0, "span", 44);
110
+ function EntityListComponent_Conditional_15_Conditional_0_For_33_Conditional_5_Template(rf, ctx) { if (rf & 1) {
111
+ i0.ɵɵelementStart(0, "span", 38);
119
112
  i0.ɵɵtext(1, "You");
120
113
  i0.ɵɵelementEnd();
121
114
  } }
122
- function EntityListComponent_Conditional_18_Conditional_0_For_33_Conditional_13_Template(rf, ctx) { if (rf & 1) {
123
- i0.ɵɵelementStart(0, "span", 50);
124
- i0.ɵɵelement(1, "i", 58);
115
+ function EntityListComponent_Conditional_15_Conditional_0_For_33_Conditional_13_Template(rf, ctx) { if (rf & 1) {
116
+ i0.ɵɵelementStart(0, "span", 44);
117
+ i0.ɵɵelement(1, "i", 52);
125
118
  i0.ɵɵtext(2, " You ");
126
119
  i0.ɵɵelementEnd();
127
120
  } }
128
- function EntityListComponent_Conditional_18_Conditional_0_For_33_Conditional_14_Template(rf, ctx) { if (rf & 1) {
129
- i0.ɵɵelementStart(0, "span", 51);
121
+ function EntityListComponent_Conditional_15_Conditional_0_For_33_Conditional_14_Template(rf, ctx) { if (rf & 1) {
122
+ i0.ɵɵelementStart(0, "span", 45);
130
123
  i0.ɵɵtext(1);
131
124
  i0.ɵɵelementEnd();
132
125
  } if (rf & 2) {
133
- const entity_r7 = i0.ɵɵnextContext().$implicit;
126
+ const entity_r6 = i0.ɵɵnextContext().$implicit;
134
127
  i0.ɵɵadvance();
135
- i0.ɵɵtextInterpolate(entity_r7.ownerDisplayName);
128
+ i0.ɵɵtextInterpolate(entity_r6.ownerDisplayName);
136
129
  } }
137
- function EntityListComponent_Conditional_18_Conditional_0_For_33_Conditional_15_Template(rf, ctx) { if (rf & 1) {
138
- i0.ɵɵelementStart(0, "span", 52);
130
+ function EntityListComponent_Conditional_15_Conditional_0_For_33_Conditional_15_Template(rf, ctx) { if (rf & 1) {
131
+ i0.ɵɵelementStart(0, "span", 46);
139
132
  i0.ɵɵtext(1, "\u2014");
140
133
  i0.ɵɵelementEnd();
141
134
  } }
142
- function EntityListComponent_Conditional_18_Conditional_0_For_33_Template(rf, ctx) { if (rf & 1) {
143
- const _r6 = i0.ɵɵgetCurrentView();
144
- i0.ɵɵelementStart(0, "tr", 38)(1, "td", 41)(2, "div", 42)(3, "span", 43);
135
+ function EntityListComponent_Conditional_15_Conditional_0_For_33_Template(rf, ctx) { if (rf & 1) {
136
+ const _r5 = i0.ɵɵgetCurrentView();
137
+ i0.ɵɵelementStart(0, "tr", 32)(1, "td", 35)(2, "div", 36)(3, "span", 37);
145
138
  i0.ɵɵtext(4);
146
139
  i0.ɵɵelementEnd();
147
- i0.ɵɵconditionalCreate(5, EntityListComponent_Conditional_18_Conditional_0_For_33_Conditional_5_Template, 2, 0, "span", 44);
140
+ i0.ɵɵconditionalCreate(5, EntityListComponent_Conditional_15_Conditional_0_For_33_Conditional_5_Template, 2, 0, "span", 38);
148
141
  i0.ɵɵelementEnd()();
149
- i0.ɵɵelementStart(6, "td", 45)(7, "span", 46);
142
+ i0.ɵɵelementStart(6, "td", 39)(7, "span", 40);
150
143
  i0.ɵɵtext(8);
151
144
  i0.ɵɵelementEnd()();
152
- i0.ɵɵelementStart(9, "td", 47)(10, "code", 48);
145
+ i0.ɵɵelementStart(9, "td", 41)(10, "code", 42);
153
146
  i0.ɵɵtext(11);
154
147
  i0.ɵɵelementEnd()();
155
- i0.ɵɵelementStart(12, "td", 49);
156
- i0.ɵɵconditionalCreate(13, EntityListComponent_Conditional_18_Conditional_0_For_33_Conditional_13_Template, 3, 0, "span", 50)(14, EntityListComponent_Conditional_18_Conditional_0_For_33_Conditional_14_Template, 2, 1, "span", 51)(15, EntityListComponent_Conditional_18_Conditional_0_For_33_Conditional_15_Template, 2, 0, "span", 52);
148
+ i0.ɵɵelementStart(12, "td", 43);
149
+ i0.ɵɵconditionalCreate(13, EntityListComponent_Conditional_15_Conditional_0_For_33_Conditional_13_Template, 3, 0, "span", 44)(14, EntityListComponent_Conditional_15_Conditional_0_For_33_Conditional_14_Template, 2, 1, "span", 45)(15, EntityListComponent_Conditional_15_Conditional_0_For_33_Conditional_15_Template, 2, 0, "span", 46);
157
150
  i0.ɵɵelementEnd();
158
- i0.ɵɵelementStart(16, "td", 53);
151
+ i0.ɵɵelementStart(16, "td", 47);
159
152
  i0.ɵɵtext(17);
160
153
  i0.ɵɵelementEnd();
161
- i0.ɵɵelementStart(18, "td", 54)(19, "div", 55)(20, "button", 56);
162
- i0.ɵɵlistener("click", function EntityListComponent_Conditional_18_Conditional_0_For_33_Template_button_click_20_listener() { const entity_r7 = i0.ɵɵrestoreView(_r6).$implicit; const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.OnEditEntity(entity_r7)); });
163
- i0.ɵɵelement(21, "i", 57);
154
+ i0.ɵɵelementStart(18, "td", 48)(19, "div", 49)(20, "button", 50);
155
+ i0.ɵɵlistener("click", function EntityListComponent_Conditional_15_Conditional_0_For_33_Template_button_click_20_listener() { const entity_r6 = i0.ɵɵrestoreView(_r5).$implicit; const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.OnEditEntity(entity_r6)); });
156
+ i0.ɵɵelement(21, "i", 51);
164
157
  i0.ɵɵtext(22, " Edit ");
165
158
  i0.ɵɵelementEnd()()()();
166
159
  } if (rf & 2) {
167
- const entity_r7 = ctx.$implicit;
160
+ const entity_r6 = ctx.$implicit;
168
161
  const ctx_r1 = i0.ɵɵnextContext(3);
169
162
  i0.ɵɵadvance(4);
170
- i0.ɵɵtextInterpolate(entity_r7.entityName);
163
+ i0.ɵɵtextInterpolate(entity_r6.entityName);
171
164
  i0.ɵɵadvance();
172
- i0.ɵɵconditional(entity_r7.isOwner ? 5 : -1);
165
+ i0.ɵɵconditional(entity_r6.isOwner ? 5 : -1);
173
166
  i0.ɵɵadvance(3);
174
- i0.ɵɵtextInterpolate(entity_r7.schemaName);
167
+ i0.ɵɵtextInterpolate(entity_r6.schemaName);
175
168
  i0.ɵɵadvance(3);
176
- i0.ɵɵtextInterpolate(entity_r7.tableName);
169
+ i0.ɵɵtextInterpolate(entity_r6.tableName);
177
170
  i0.ɵɵadvance(2);
178
- i0.ɵɵconditional(entity_r7.isOwner ? 13 : entity_r7.ownerDisplayName ? 14 : 15);
171
+ i0.ɵɵconditional(entity_r6.isOwner ? 13 : entity_r6.ownerDisplayName ? 14 : 15);
179
172
  i0.ɵɵadvance(4);
180
- i0.ɵɵtextInterpolate(ctx_r1.FormatDate(entity_r7.createdAt));
173
+ i0.ɵɵtextInterpolate(ctx_r1.FormatDate(entity_r6.createdAt));
181
174
  } }
182
- function EntityListComponent_Conditional_18_Conditional_0_Conditional_36_Template(rf, ctx) { if (rf & 1) {
175
+ function EntityListComponent_Conditional_15_Conditional_0_Conditional_36_Template(rf, ctx) { if (rf & 1) {
183
176
  i0.ɵɵtext(0);
184
177
  } if (rf & 2) {
185
178
  const ctx_r1 = i0.ɵɵnextContext(3);
186
179
  i0.ɵɵtextInterpolate1(" matching \"", ctx_r1.SearchTerm, "\" ");
187
180
  } }
188
- function EntityListComponent_Conditional_18_Conditional_0_Template(rf, ctx) { if (rf & 1) {
189
- const _r5 = i0.ɵɵgetCurrentView();
190
- i0.ɵɵelementStart(0, "div", 27)(1, "table", 28)(2, "thead")(3, "tr")(4, "th", 29);
191
- i0.ɵɵlistener("click", function EntityListComponent_Conditional_18_Conditional_0_Template_th_click_4_listener() { i0.ɵɵrestoreView(_r5); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.OnSortChange("entityName")); });
181
+ function EntityListComponent_Conditional_15_Conditional_0_Template(rf, ctx) { if (rf & 1) {
182
+ const _r4 = i0.ɵɵgetCurrentView();
183
+ i0.ɵɵelementStart(0, "div", 21)(1, "table", 22)(2, "thead")(3, "tr")(4, "th", 23);
184
+ i0.ɵɵlistener("click", function EntityListComponent_Conditional_15_Conditional_0_Template_th_click_4_listener() { i0.ɵɵrestoreView(_r4); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.OnSortChange("entityName")); });
192
185
  i0.ɵɵtext(5, " Entity Name ");
193
- i0.ɵɵelementStart(6, "span", 30);
194
- i0.ɵɵconditionalCreate(7, EntityListComponent_Conditional_18_Conditional_0_Conditional_7_Template, 1, 4, "i", 31)(8, EntityListComponent_Conditional_18_Conditional_0_Conditional_8_Template, 1, 0, "i", 32);
186
+ i0.ɵɵelementStart(6, "span", 24);
187
+ i0.ɵɵconditionalCreate(7, EntityListComponent_Conditional_15_Conditional_0_Conditional_7_Template, 1, 4, "i", 25)(8, EntityListComponent_Conditional_15_Conditional_0_Conditional_8_Template, 1, 0, "i", 26);
195
188
  i0.ɵɵelementEnd()();
196
- i0.ɵɵelementStart(9, "th", 33);
197
- i0.ɵɵlistener("click", function EntityListComponent_Conditional_18_Conditional_0_Template_th_click_9_listener() { i0.ɵɵrestoreView(_r5); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.OnSortChange("schemaName")); });
189
+ i0.ɵɵelementStart(9, "th", 27);
190
+ i0.ɵɵlistener("click", function EntityListComponent_Conditional_15_Conditional_0_Template_th_click_9_listener() { i0.ɵɵrestoreView(_r4); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.OnSortChange("schemaName")); });
198
191
  i0.ɵɵtext(10, " Schema ");
199
- i0.ɵɵelementStart(11, "span", 30);
200
- i0.ɵɵconditionalCreate(12, EntityListComponent_Conditional_18_Conditional_0_Conditional_12_Template, 1, 4, "i", 31)(13, EntityListComponent_Conditional_18_Conditional_0_Conditional_13_Template, 1, 0, "i", 32);
192
+ i0.ɵɵelementStart(11, "span", 24);
193
+ i0.ɵɵconditionalCreate(12, EntityListComponent_Conditional_15_Conditional_0_Conditional_12_Template, 1, 4, "i", 25)(13, EntityListComponent_Conditional_15_Conditional_0_Conditional_13_Template, 1, 0, "i", 26);
201
194
  i0.ɵɵelementEnd()();
202
- i0.ɵɵelementStart(14, "th", 34);
203
- i0.ɵɵlistener("click", function EntityListComponent_Conditional_18_Conditional_0_Template_th_click_14_listener() { i0.ɵɵrestoreView(_r5); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.OnSortChange("tableName")); });
195
+ i0.ɵɵelementStart(14, "th", 28);
196
+ i0.ɵɵlistener("click", function EntityListComponent_Conditional_15_Conditional_0_Template_th_click_14_listener() { i0.ɵɵrestoreView(_r4); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.OnSortChange("tableName")); });
204
197
  i0.ɵɵtext(15, " Table ");
205
- i0.ɵɵelementStart(16, "span", 30);
206
- i0.ɵɵconditionalCreate(17, EntityListComponent_Conditional_18_Conditional_0_Conditional_17_Template, 1, 4, "i", 31)(18, EntityListComponent_Conditional_18_Conditional_0_Conditional_18_Template, 1, 0, "i", 32);
198
+ i0.ɵɵelementStart(16, "span", 24);
199
+ i0.ɵɵconditionalCreate(17, EntityListComponent_Conditional_15_Conditional_0_Conditional_17_Template, 1, 4, "i", 25)(18, EntityListComponent_Conditional_15_Conditional_0_Conditional_18_Template, 1, 0, "i", 26);
207
200
  i0.ɵɵelementEnd()();
208
- i0.ɵɵelementStart(19, "th", 35);
209
- i0.ɵɵlistener("click", function EntityListComponent_Conditional_18_Conditional_0_Template_th_click_19_listener() { i0.ɵɵrestoreView(_r5); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.OnSortChange("owner")); });
201
+ i0.ɵɵelementStart(19, "th", 29);
202
+ i0.ɵɵlistener("click", function EntityListComponent_Conditional_15_Conditional_0_Template_th_click_19_listener() { i0.ɵɵrestoreView(_r4); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.OnSortChange("owner")); });
210
203
  i0.ɵɵtext(20, " Owner ");
211
- i0.ɵɵelementStart(21, "span", 30);
212
- i0.ɵɵconditionalCreate(22, EntityListComponent_Conditional_18_Conditional_0_Conditional_22_Template, 1, 4, "i", 31)(23, EntityListComponent_Conditional_18_Conditional_0_Conditional_23_Template, 1, 0, "i", 32);
204
+ i0.ɵɵelementStart(21, "span", 24);
205
+ i0.ɵɵconditionalCreate(22, EntityListComponent_Conditional_15_Conditional_0_Conditional_22_Template, 1, 4, "i", 25)(23, EntityListComponent_Conditional_15_Conditional_0_Conditional_23_Template, 1, 0, "i", 26);
213
206
  i0.ɵɵelementEnd()();
214
- i0.ɵɵelementStart(24, "th", 36);
215
- i0.ɵɵlistener("click", function EntityListComponent_Conditional_18_Conditional_0_Template_th_click_24_listener() { i0.ɵɵrestoreView(_r5); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.OnSortChange("createdAt")); });
207
+ i0.ɵɵelementStart(24, "th", 30);
208
+ i0.ɵɵlistener("click", function EntityListComponent_Conditional_15_Conditional_0_Template_th_click_24_listener() { i0.ɵɵrestoreView(_r4); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.OnSortChange("createdAt")); });
216
209
  i0.ɵɵtext(25, " Created ");
217
- i0.ɵɵelementStart(26, "span", 30);
218
- i0.ɵɵconditionalCreate(27, EntityListComponent_Conditional_18_Conditional_0_Conditional_27_Template, 1, 4, "i", 31)(28, EntityListComponent_Conditional_18_Conditional_0_Conditional_28_Template, 1, 0, "i", 32);
210
+ i0.ɵɵelementStart(26, "span", 24);
211
+ i0.ɵɵconditionalCreate(27, EntityListComponent_Conditional_15_Conditional_0_Conditional_27_Template, 1, 4, "i", 25)(28, EntityListComponent_Conditional_15_Conditional_0_Conditional_28_Template, 1, 0, "i", 26);
219
212
  i0.ɵɵelementEnd()();
220
- i0.ɵɵelementStart(29, "th", 37);
213
+ i0.ɵɵelementStart(29, "th", 31);
221
214
  i0.ɵɵtext(30, "Actions");
222
215
  i0.ɵɵelementEnd()()();
223
216
  i0.ɵɵelementStart(31, "tbody");
224
- i0.ɵɵrepeaterCreate(32, EntityListComponent_Conditional_18_Conditional_0_For_33_Template, 23, 6, "tr", 38, i0.ɵɵcomponentInstance().TrackByEntityId, true);
217
+ i0.ɵɵrepeaterCreate(32, EntityListComponent_Conditional_15_Conditional_0_For_33_Template, 23, 6, "tr", 32, i0.ɵɵcomponentInstance().TrackByEntityId, true);
225
218
  i0.ɵɵelementEnd()()();
226
- i0.ɵɵelementStart(34, "div", 39);
219
+ i0.ɵɵelementStart(34, "div", 33);
227
220
  i0.ɵɵtext(35);
228
- i0.ɵɵconditionalCreate(36, EntityListComponent_Conditional_18_Conditional_0_Conditional_36_Template, 1, 1);
221
+ i0.ɵɵconditionalCreate(36, EntityListComponent_Conditional_15_Conditional_0_Conditional_36_Template, 1, 1);
229
222
  i0.ɵɵelementEnd();
230
223
  } if (rf & 2) {
231
224
  const ctx_r1 = i0.ɵɵnextContext(2);
@@ -246,16 +239,16 @@ function EntityListComponent_Conditional_18_Conditional_0_Template(rf, ctx) { if
246
239
  i0.ɵɵadvance();
247
240
  i0.ɵɵconditional(ctx_r1.SearchTerm ? 36 : -1);
248
241
  } }
249
- function EntityListComponent_Conditional_18_Conditional_1_Conditional_3_Template(rf, ctx) { if (rf & 1) {
250
- const _r8 = i0.ɵɵgetCurrentView();
251
- i0.ɵɵelementStart(0, "h3", 61);
242
+ function EntityListComponent_Conditional_15_Conditional_1_Conditional_3_Template(rf, ctx) { if (rf & 1) {
243
+ const _r7 = i0.ɵɵgetCurrentView();
244
+ i0.ɵɵelementStart(0, "h3", 55);
252
245
  i0.ɵɵtext(1);
253
246
  i0.ɵɵelementEnd();
254
- i0.ɵɵelementStart(2, "p", 62);
247
+ i0.ɵɵelementStart(2, "p", 56);
255
248
  i0.ɵɵtext(3, "Try a different search term or clear the filter.");
256
249
  i0.ɵɵelementEnd();
257
- i0.ɵɵelementStart(4, "button", 63);
258
- i0.ɵɵlistener("click", function EntityListComponent_Conditional_18_Conditional_1_Conditional_3_Template_button_click_4_listener() { i0.ɵɵrestoreView(_r8); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.SearchTerm = ""); });
250
+ i0.ɵɵelementStart(4, "button", 57);
251
+ i0.ɵɵlistener("click", function EntityListComponent_Conditional_15_Conditional_1_Conditional_3_Template_button_click_4_listener() { i0.ɵɵrestoreView(_r7); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.SearchTerm = ""); });
259
252
  i0.ɵɵtext(5, " Clear search ");
260
253
  i0.ɵɵelementEnd();
261
254
  } if (rf & 2) {
@@ -263,33 +256,33 @@ function EntityListComponent_Conditional_18_Conditional_1_Conditional_3_Template
263
256
  i0.ɵɵadvance();
264
257
  i0.ɵɵtextInterpolate1("No entities match \"", ctx_r1.SearchTerm, "\"");
265
258
  } }
266
- function EntityListComponent_Conditional_18_Conditional_1_Conditional_4_Template(rf, ctx) { if (rf & 1) {
267
- const _r9 = i0.ɵɵgetCurrentView();
268
- i0.ɵɵelementStart(0, "h3", 61);
259
+ function EntityListComponent_Conditional_15_Conditional_1_Conditional_4_Template(rf, ctx) { if (rf & 1) {
260
+ const _r8 = i0.ɵɵgetCurrentView();
261
+ i0.ɵɵelementStart(0, "h3", 55);
269
262
  i0.ɵɵtext(1, "No entities yet");
270
263
  i0.ɵɵelementEnd();
271
- i0.ɵɵelementStart(2, "p", 62);
264
+ i0.ɵɵelementStart(2, "p", 56);
272
265
  i0.ɵɵtext(3, " Create your first user-defined entity. You can also use the Database Designer agent in a conversation for guided design. ");
273
266
  i0.ɵɵelementEnd();
274
- i0.ɵɵelementStart(4, "button", 64);
275
- i0.ɵɵlistener("click", function EntityListComponent_Conditional_18_Conditional_1_Conditional_4_Template_button_click_4_listener() { i0.ɵɵrestoreView(_r9); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.OnNewEntity()); });
276
- i0.ɵɵelement(5, "i", 5);
267
+ i0.ɵɵelementStart(4, "button", 58);
268
+ i0.ɵɵlistener("click", function EntityListComponent_Conditional_15_Conditional_1_Conditional_4_Template_button_click_4_listener() { i0.ɵɵrestoreView(_r8); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.OnNewEntity()); });
269
+ i0.ɵɵelement(5, "i", 6);
277
270
  i0.ɵɵtext(6, " Create Entity ");
278
271
  i0.ɵɵelementEnd();
279
272
  } }
280
- function EntityListComponent_Conditional_18_Conditional_1_Template(rf, ctx) { if (rf & 1) {
281
- i0.ɵɵelementStart(0, "div", 26)(1, "div", 59);
282
- i0.ɵɵelement(2, "i", 60);
273
+ function EntityListComponent_Conditional_15_Conditional_1_Template(rf, ctx) { if (rf & 1) {
274
+ i0.ɵɵelementStart(0, "div", 20)(1, "div", 53);
275
+ i0.ɵɵelement(2, "i", 54);
283
276
  i0.ɵɵelementEnd();
284
- i0.ɵɵconditionalCreate(3, EntityListComponent_Conditional_18_Conditional_1_Conditional_3_Template, 6, 1)(4, EntityListComponent_Conditional_18_Conditional_1_Conditional_4_Template, 7, 0);
277
+ i0.ɵɵconditionalCreate(3, EntityListComponent_Conditional_15_Conditional_1_Conditional_3_Template, 6, 1)(4, EntityListComponent_Conditional_15_Conditional_1_Conditional_4_Template, 7, 0);
285
278
  i0.ɵɵelementEnd();
286
279
  } if (rf & 2) {
287
280
  const ctx_r1 = i0.ɵɵnextContext(2);
288
281
  i0.ɵɵadvance(3);
289
282
  i0.ɵɵconditional(ctx_r1.SearchTerm ? 3 : 4);
290
283
  } }
291
- function EntityListComponent_Conditional_18_Template(rf, ctx) { if (rf & 1) {
292
- i0.ɵɵconditionalCreate(0, EntityListComponent_Conditional_18_Conditional_0_Template, 37, 8)(1, EntityListComponent_Conditional_18_Conditional_1_Template, 5, 1, "div", 26);
284
+ function EntityListComponent_Conditional_15_Template(rf, ctx) { if (rf & 1) {
285
+ i0.ɵɵconditionalCreate(0, EntityListComponent_Conditional_15_Conditional_0_Template, 37, 8)(1, EntityListComponent_Conditional_15_Conditional_1_Template, 5, 1, "div", 20);
293
286
  } if (rf & 2) {
294
287
  const ctx_r1 = i0.ɵɵnextContext();
295
288
  i0.ɵɵconditional(ctx_r1.FilteredEntities.length > 0 ? 0 : !ctx_r1.IsLoading ? 1 : -1);
@@ -426,54 +419,48 @@ export class EntityListComponent {
426
419
  }
427
420
  }
428
421
  static ɵfac = function EntityListComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || EntityListComponent)(); };
429
- static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: EntityListComponent, selectors: [["mj-database-entity-list"]], outputs: { EditEntity: "EditEntity", ViewEntity: "ViewEntity", NewEntity: "NewEntity" }, standalone: false, decls: 19, vars: 9, consts: [[1, "entity-list-root"], [1, "entity-list-header"], [1, "entity-list-title"], [1, "fa-solid", "fa-table-cells-large"], ["mjButton", "", "buttonStyle", "primary", 1, "new-entity-btn", 3, "click"], [1, "fa-solid", "fa-plus"], [1, "entity-list-toolbar"], [1, "search-wrap"], [1, "fa-solid", "fa-magnifying-glass", "search-icon"], ["type", "text", "placeholder", "Search by name, table, or schema\u2026", "aria-label", "Search entities", 1, "mj-input", "search-input", 3, "ngModelChange", "ngModel"], ["aria-label", "Clear search", 1, "search-clear"], ["aria-label", "Filter by schema", 1, "mj-input", "schema-filter", 3, "value"], ["mjButton", "", "buttonStyle", "secondary", "title", "Refresh list", 1, "refresh-btn", 3, "click", "disabled"], [1, "fa-solid", "fa-rotate"], ["role", "alert", 1, "entity-list-error"], ["aria-busy", "true", "aria-label", "Loading entities\u2026", 1, "skeleton-table"], ["aria-label", "Clear search", 1, "search-clear", 3, "click"], [1, "fa-solid", "fa-xmark"], ["aria-label", "Filter by schema", 1, "mj-input", "schema-filter", 3, "change", "value"], ["value", ""], [3, "value"], [1, "fa-solid", "fa-circle-exclamation"], [1, "skeleton-row"], [1, "skeleton-cell", "wide"], [1, "skeleton-cell", "medium"], [1, "skeleton-cell", "narrow"], [1, "zero-state"], [1, "table-wrap"], ["role", "grid", "aria-label", "User-defined entities", 1, "entity-table"], ["scope", "col", 1, "col-name", "sortable", 3, "click"], [1, "sort-icon"], [1, "fa-solid", 3, "fa-chevron-up", "fa-chevron-down"], [1, "fa-solid", "fa-chevron-up", "muted"], ["scope", "col", 1, "col-schema", "sortable", 3, "click"], ["scope", "col", 1, "col-table", "sortable", 3, "click"], ["scope", "col", 1, "col-owner", "sortable", 3, "click"], ["scope", "col", 1, "col-created", "sortable", 3, "click"], ["scope", "col", 1, "col-actions"], [1, "entity-row"], [1, "entity-count"], [1, "fa-solid"], [1, "col-name"], [1, "entity-name-cell"], [1, "entity-name"], ["title", "You own this entity", 1, "owner-badge", "owner-you"], [1, "col-schema"], [1, "schema-badge"], [1, "col-table"], [1, "table-name"], [1, "col-owner"], [1, "owner-self"], [1, "owner-other"], [1, "owner-other", "muted"], [1, "col-created"], [1, "col-actions"], [1, "row-actions"], ["mjButton", "", "buttonStyle", "secondary", "title", "Edit this entity", 1, "action-btn", 3, "click"], [1, "fa-solid", "fa-pen-to-square"], [1, "fa-solid", "fa-user-check"], [1, "zero-state-icon"], [1, "fa-regular", "fa-rectangle-list"], [1, "zero-state-title"], [1, "zero-state-body"], ["mjButton", "", "buttonStyle", "secondary", 3, "click"], ["mjButton", "", "buttonStyle", "primary", 3, "click"]], template: function EntityListComponent_Template(rf, ctx) { if (rf & 1) {
430
- i0.ɵɵelementStart(0, "div", 0)(1, "div", 1)(2, "h2", 2);
431
- i0.ɵɵelement(3, "i", 3);
432
- i0.ɵɵtext(4, " Database Designer ");
422
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: EntityListComponent, selectors: [["mj-database-entity-list"]], outputs: { EditEntity: "EditEntity", ViewEntity: "ViewEntity", NewEntity: "NewEntity" }, standalone: false, decls: 16, vars: 7, consts: [["Title", "Database Designer", "Icon", "fa-solid fa-table-cells-large", "Subtitle", "Browse and create user-defined entities"], ["meta", ""], ["Label", "entities", 3, "Count"], ["actions", ""], [3, "Clicked", "Loading"], ["mjButton", "", "variant", "primary", "size", "sm", 3, "click"], [1, "fa-solid", "fa-plus"], ["toolbar", ""], ["Placeholder", "Search by name, table, or schema...", 3, "ValueChange", "Value"], ["aria-label", "Filter by schema", 1, "mj-input", "schema-filter", 3, "value"], ["role", "alert", 1, "entity-list-error"], ["aria-busy", "true", "aria-label", "Loading entities\u2026", 1, "skeleton-table"], ["aria-label", "Filter by schema", 1, "mj-input", "schema-filter", 3, "change", "value"], ["value", ""], [3, "value"], [1, "fa-solid", "fa-circle-exclamation"], [1, "skeleton-row"], [1, "skeleton-cell", "wide"], [1, "skeleton-cell", "medium"], [1, "skeleton-cell", "narrow"], [1, "zero-state"], [1, "table-wrap"], ["role", "grid", "aria-label", "User-defined entities", 1, "entity-table"], ["scope", "col", 1, "col-name", "sortable", 3, "click"], [1, "sort-icon"], [1, "fa-solid", 3, "fa-chevron-up", "fa-chevron-down"], [1, "fa-solid", "fa-chevron-up", "muted"], ["scope", "col", 1, "col-schema", "sortable", 3, "click"], ["scope", "col", 1, "col-table", "sortable", 3, "click"], ["scope", "col", 1, "col-owner", "sortable", 3, "click"], ["scope", "col", 1, "col-created", "sortable", 3, "click"], ["scope", "col", 1, "col-actions"], [1, "entity-row"], [1, "entity-count"], [1, "fa-solid"], [1, "col-name"], [1, "entity-name-cell"], [1, "entity-name"], ["title", "You own this entity", 1, "owner-badge", "owner-you"], [1, "col-schema"], [1, "schema-badge"], [1, "col-table"], [1, "table-name"], [1, "col-owner"], [1, "owner-self"], [1, "owner-other"], [1, "owner-other", "muted"], [1, "col-created"], [1, "col-actions"], [1, "row-actions"], ["mjButton", "", "buttonStyle", "secondary", "title", "Edit this entity", 1, "action-btn", 3, "click"], [1, "fa-solid", "fa-pen-to-square"], [1, "fa-solid", "fa-user-check"], [1, "zero-state-icon"], [1, "fa-regular", "fa-rectangle-list"], [1, "zero-state-title"], [1, "zero-state-body"], ["mjButton", "", "buttonStyle", "secondary", 3, "click"], ["mjButton", "", "buttonStyle", "primary", 3, "click"]], template: function EntityListComponent_Template(rf, ctx) { if (rf & 1) {
423
+ i0.ɵɵelementStart(0, "mj-page-layout")(1, "mj-page-header", 0)(2, "div", 1);
424
+ i0.ɵɵelement(3, "mj-stat-badge", 2);
433
425
  i0.ɵɵelementEnd();
434
- i0.ɵɵelementStart(5, "button", 4);
435
- i0.ɵɵlistener("click", function EntityListComponent_Template_button_click_5_listener() { return ctx.OnNewEntity(); });
436
- i0.ɵɵelement(6, "i", 5);
437
- i0.ɵɵtext(7, " New Entity ");
438
- i0.ɵɵelementEnd()();
439
- i0.ɵɵelementStart(8, "div", 6)(9, "div", 7);
440
- i0.ɵɵelement(10, "i", 8);
441
- i0.ɵɵelementStart(11, "input", 9);
442
- i0.ɵɵtwoWayListener("ngModelChange", function EntityListComponent_Template_input_ngModelChange_11_listener($event) { i0.ɵɵtwoWayBindingSet(ctx.SearchTerm, $event) || (ctx.SearchTerm = $event); return $event; });
426
+ i0.ɵɵelementStart(4, "div", 3)(5, "mj-refresh-button", 4);
427
+ i0.ɵɵlistener("Clicked", function EntityListComponent_Template_mj_refresh_button_Clicked_5_listener() { return ctx.OnRefresh(); });
443
428
  i0.ɵɵelementEnd();
444
- i0.ɵɵconditionalCreate(12, EntityListComponent_Conditional_12_Template, 2, 0, "button", 10);
445
- i0.ɵɵelementEnd();
446
- i0.ɵɵconditionalCreate(13, EntityListComponent_Conditional_13_Template, 5, 1, "select", 11);
447
- i0.ɵɵelementStart(14, "button", 12);
448
- i0.ɵɵlistener("click", function EntityListComponent_Template_button_click_14_listener() { return ctx.OnRefresh(); });
449
- i0.ɵɵelement(15, "i", 13);
429
+ i0.ɵɵelementStart(6, "button", 5);
430
+ i0.ɵɵlistener("click", function EntityListComponent_Template_button_click_6_listener() { return ctx.OnNewEntity(); });
431
+ i0.ɵɵelement(7, "i", 6);
432
+ i0.ɵɵtext(8, " New Entity ");
450
433
  i0.ɵɵelementEnd()();
451
- i0.ɵɵconditionalCreate(16, EntityListComponent_Conditional_16_Template, 3, 1, "div", 14);
452
- i0.ɵɵconditionalCreate(17, EntityListComponent_Conditional_17_Template, 3, 1, "div", 15);
453
- i0.ɵɵconditionalCreate(18, EntityListComponent_Conditional_18_Template, 2, 1);
434
+ i0.ɵɵelementStart(9, "div", 7)(10, "mj-page-search", 8);
435
+ i0.ɵɵlistener("ValueChange", function EntityListComponent_Template_mj_page_search_ValueChange_10_listener($event) { return ctx.SearchTerm = $event; });
454
436
  i0.ɵɵelementEnd();
437
+ i0.ɵɵconditionalCreate(11, EntityListComponent_Conditional_11_Template, 5, 1, "select", 9);
438
+ i0.ɵɵelementEnd()();
439
+ i0.ɵɵelementStart(12, "mj-page-body");
440
+ i0.ɵɵconditionalCreate(13, EntityListComponent_Conditional_13_Template, 3, 1, "div", 10);
441
+ i0.ɵɵconditionalCreate(14, EntityListComponent_Conditional_14_Template, 3, 1, "div", 11);
442
+ i0.ɵɵconditionalCreate(15, EntityListComponent_Conditional_15_Template, 2, 1);
443
+ i0.ɵɵelementEnd()();
455
444
  } if (rf & 2) {
456
- i0.ɵɵadvance(11);
457
- i0.ɵɵtwoWayProperty("ngModel", ctx.SearchTerm);
458
- i0.ɵɵadvance();
459
- i0.ɵɵconditional(ctx.SearchTerm ? 12 : -1);
460
- i0.ɵɵadvance();
461
- i0.ɵɵconditional(ctx.AvailableFilterSchemas.length > 1 ? 13 : -1);
462
- i0.ɵɵadvance();
463
- i0.ɵɵproperty("disabled", ctx.IsLoading);
464
- i0.ɵɵadvance();
465
- i0.ɵɵclassProp("fa-spin", ctx.IsLoading);
445
+ i0.ɵɵadvance(3);
446
+ i0.ɵɵproperty("Count", ctx.FilteredEntities.length);
447
+ i0.ɵɵadvance(2);
448
+ i0.ɵɵproperty("Loading", ctx.IsLoading);
449
+ i0.ɵɵadvance(5);
450
+ i0.ɵɵproperty("Value", ctx.SearchTerm);
466
451
  i0.ɵɵadvance();
467
- i0.ɵɵconditional(ctx.ErrorMessage ? 16 : -1);
452
+ i0.ɵɵconditional(ctx.AvailableFilterSchemas.length > 1 ? 11 : -1);
453
+ i0.ɵɵadvance(2);
454
+ i0.ɵɵconditional(ctx.ErrorMessage ? 13 : -1);
468
455
  i0.ɵɵadvance();
469
- i0.ɵɵconditional(ctx.IsLoading && ctx.FilteredEntities.length === 0 ? 17 : -1);
456
+ i0.ɵɵconditional(ctx.IsLoading && ctx.FilteredEntities.length === 0 ? 14 : -1);
470
457
  i0.ɵɵadvance();
471
- i0.ɵɵconditional(!ctx.IsLoading || ctx.FilteredEntities.length > 0 ? 18 : -1);
472
- } }, dependencies: [i1.NgSelectOption, i1.ɵNgSelectMultipleOption, i1.DefaultValueAccessor, i1.NgControlStatus, i1.NgModel, i2.MJButtonDirective], styles: ["\n\n\n.entity-list-root[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n height: 100%;\n padding: 0;\n}\n\n\n\n\n.entity-list-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 20px 24px 16px;\n border-bottom: 1px solid var(--mj-border-subtle);\n flex-shrink: 0;\n}\n\n.entity-list-title[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 1.25rem;\n font-weight: 600;\n color: var(--mj-text-primary);\n display: flex;\n align-items: center;\n gap: 10px;\n}\n\n.entity-list-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n font-size: 1.1rem;\n}\n\n\n\n\n.entity-list-toolbar[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 14px 24px;\n border-bottom: 1px solid var(--mj-border-subtle);\n flex-shrink: 0;\n}\n\n.search-wrap[_ngcontent-%COMP%] {\n position: relative;\n flex: 1;\n max-width: 400px;\n}\n\n.search-icon[_ngcontent-%COMP%] {\n position: absolute;\n left: 10px;\n top: 50%;\n transform: translateY(-50%);\n color: var(--mj-text-muted);\n pointer-events: none;\n font-size: 0.875rem;\n}\n\n.search-input[_ngcontent-%COMP%] {\n width: 100%;\n padding-left: 32px;\n padding-right: 32px;\n box-sizing: border-box;\n}\n\n.schema-filter[_ngcontent-%COMP%] {\n width: auto;\n min-width: 160px;\n max-width: 220px;\n flex-shrink: 0;\n}\n\n.search-clear[_ngcontent-%COMP%] {\n position: absolute;\n right: 8px;\n top: 50%;\n transform: translateY(-50%);\n background: none;\n border: none;\n padding: 4px 6px;\n color: var(--mj-text-muted);\n cursor: pointer;\n border-radius: 4px;\n line-height: 1;\n transition: color 0.15s, background 0.15s;\n}\n\n.search-clear[_ngcontent-%COMP%]:hover {\n color: var(--mj-text-primary);\n background: var(--mj-bg-surface-hover);\n}\n\n\n\n\n.entity-list-error[_ngcontent-%COMP%] {\n margin: 12px 24px;\n padding: 10px 14px;\n background: var(--mj-status-error-bg);\n color: var(--mj-status-error-text);\n border: 1px solid var(--mj-status-error-border);\n border-radius: 6px;\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 0.875rem;\n}\n\n\n\n\n.skeleton-table[_ngcontent-%COMP%] {\n padding: 0 24px;\n margin-top: 8px;\n}\n\n.skeleton-row[_ngcontent-%COMP%] {\n display: flex;\n gap: 16px;\n padding: 12px 0;\n border-bottom: 1px solid var(--mj-border-subtle);\n}\n\n.skeleton-cell[_ngcontent-%COMP%] {\n height: 18px;\n border-radius: 4px;\n background: var(--mj-bg-surface-sunken);\n animation: _ngcontent-%COMP%_skeleton-pulse 1.4s ease-in-out infinite;\n}\n\n.skeleton-cell.wide[_ngcontent-%COMP%] { flex: 3; }\n.skeleton-cell.medium[_ngcontent-%COMP%] { flex: 2; }\n.skeleton-cell.narrow[_ngcontent-%COMP%] { flex: 1; }\n\n@keyframes _ngcontent-%COMP%_skeleton-pulse {\n 0%, 100% { opacity: 1; }\n 50% { opacity: 0.45; }\n}\n\n\n\n\n.table-wrap[_ngcontent-%COMP%] {\n flex: 1;\n overflow: auto;\n padding: 0 24px;\n}\n\n\n\n\n.entity-table[_ngcontent-%COMP%] {\n width: 100%;\n border-collapse: collapse;\n font-size: 0.9rem;\n}\n\n.entity-table[_ngcontent-%COMP%] thead[_ngcontent-%COMP%] tr[_ngcontent-%COMP%] {\n border-bottom: 2px solid var(--mj-border-default);\n}\n\n.entity-table[_ngcontent-%COMP%] th[_ngcontent-%COMP%] {\n padding: 10px 12px;\n text-align: left;\n font-weight: 600;\n color: var(--mj-text-secondary);\n font-size: 0.8125rem;\n text-transform: uppercase;\n letter-spacing: 0.03em;\n white-space: nowrap;\n user-select: none;\n}\n\n.entity-table[_ngcontent-%COMP%] th.sortable[_ngcontent-%COMP%] {\n cursor: pointer;\n}\n\n.entity-table[_ngcontent-%COMP%] th.sortable[_ngcontent-%COMP%]:hover {\n color: var(--mj-text-primary);\n}\n\n.sort-icon[_ngcontent-%COMP%] {\n display: inline-block;\n margin-left: 5px;\n font-size: 0.75rem;\n vertical-align: middle;\n min-width: 14px;\n}\n\n.sort-icon[_ngcontent-%COMP%] .muted[_ngcontent-%COMP%] {\n opacity: 0.3;\n}\n\n.entity-row[_ngcontent-%COMP%] {\n border-bottom: 1px solid var(--mj-border-subtle);\n transition: background 0.1s;\n}\n\n.entity-row[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-hover);\n}\n\n.entity-table[_ngcontent-%COMP%] td[_ngcontent-%COMP%] {\n padding: 12px 12px;\n color: var(--mj-text-primary);\n vertical-align: middle;\n}\n\n\n\n\n\n\n.entity-table[_ngcontent-%COMP%] {\n table-layout: fixed;\n}\n\n.col-name[_ngcontent-%COMP%] { width: 28%; }\n.col-schema[_ngcontent-%COMP%] { width: 14%; }\n.col-table[_ngcontent-%COMP%] { width: 18%; }\n.col-owner[_ngcontent-%COMP%] { width: 15%; }\n.col-created[_ngcontent-%COMP%] { width: 13%; white-space: nowrap; }\n.col-actions[_ngcontent-%COMP%] { width: 12%; }\n\n\n\n\n.entity-name-cell[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.entity-name[_ngcontent-%COMP%] {\n font-weight: 500;\n color: var(--mj-text-primary);\n}\n\n.owner-badge[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n font-size: 0.7rem;\n font-weight: 600;\n padding: 2px 6px;\n border-radius: 10px;\n text-transform: uppercase;\n letter-spacing: 0.04em;\n}\n\n.owner-badge.owner-you[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 12%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n}\n\n.schema-badge[_ngcontent-%COMP%] {\n display: inline-block;\n font-size: 0.8rem;\n font-family: monospace;\n padding: 2px 8px;\n border-radius: 4px;\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-secondary);\n border: 1px solid var(--mj-border-subtle);\n}\n\ncode.table-name[_ngcontent-%COMP%] {\n font-size: 0.8rem;\n font-family: monospace;\n color: var(--mj-text-secondary);\n}\n\n.owner-self[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 5px;\n color: var(--mj-brand-primary);\n font-size: 0.875rem;\n}\n\n.owner-self[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 0.8rem;\n}\n\n.owner-other[_ngcontent-%COMP%] {\n color: var(--mj-text-secondary);\n font-size: 0.875rem;\n}\n\n.owner-other.muted[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n}\n\n\n\n\n.row-actions[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.action-btn[_ngcontent-%COMP%] {\n font-size: 0.8125rem;\n padding: 6px 12px;\n}\n\n\n\n\n.entity-count[_ngcontent-%COMP%] {\n padding: 10px 24px;\n font-size: 0.8rem;\n color: var(--mj-text-muted);\n border-top: 1px solid var(--mj-border-subtle);\n flex-shrink: 0;\n}\n\n\n\n\n.zero-state[_ngcontent-%COMP%] {\n flex: 1;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 60px 24px;\n text-align: center;\n gap: 16px;\n}\n\n.zero-state-icon[_ngcontent-%COMP%] {\n width: 72px;\n height: 72px;\n border-radius: 50%;\n background: var(--mj-bg-surface-sunken);\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.zero-state-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 2rem;\n color: var(--mj-text-muted);\n}\n\n.zero-state-title[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 1.1rem;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.zero-state-body[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 0.9rem;\n color: var(--mj-text-secondary);\n max-width: 420px;\n line-height: 1.6;\n word-break: break-word;\n overflow-wrap: break-word;\n}"], changeDetection: 0 });
458
+ i0.ɵɵconditional(!ctx.IsLoading || ctx.FilteredEntities.length > 0 ? 15 : -1);
459
+ } }, dependencies: [i1.NgSelectOption, i1.ɵNgSelectMultipleOption, i2.MJButtonDirective, i2.MJPageLayoutComponent, i2.MJPageHeaderComponent, i2.MJPageBodyComponent, i2.MJPageSearchComponent, i2.MJRefreshButtonComponent, i2.MJStatBadgeComponent], styles: ["\n\n.schema-filter[_ngcontent-%COMP%] {\n width: auto;\n min-width: 160px;\n max-width: 220px;\n flex-shrink: 0;\n}\n\n\n\n\n.entity-list-error[_ngcontent-%COMP%] {\n margin: 12px 24px;\n padding: 10px 14px;\n background: var(--mj-status-error-bg);\n color: var(--mj-status-error-text);\n border: 1px solid var(--mj-status-error-border);\n border-radius: 6px;\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 0.875rem;\n}\n\n\n\n\n.skeleton-table[_ngcontent-%COMP%] {\n padding: 0 24px;\n margin-top: 8px;\n}\n\n.skeleton-row[_ngcontent-%COMP%] {\n display: flex;\n gap: 16px;\n padding: 12px 0;\n border-bottom: 1px solid var(--mj-border-subtle);\n}\n\n.skeleton-cell[_ngcontent-%COMP%] {\n height: 18px;\n border-radius: 4px;\n background: var(--mj-bg-surface-sunken);\n animation: _ngcontent-%COMP%_skeleton-pulse 1.4s ease-in-out infinite;\n}\n\n.skeleton-cell.wide[_ngcontent-%COMP%] { flex: 3; }\n.skeleton-cell.medium[_ngcontent-%COMP%] { flex: 2; }\n.skeleton-cell.narrow[_ngcontent-%COMP%] { flex: 1; }\n\n@keyframes _ngcontent-%COMP%_skeleton-pulse {\n 0%, 100% { opacity: 1; }\n 50% { opacity: 0.45; }\n}\n\n\n\n\n.table-wrap[_ngcontent-%COMP%] {\n flex: 1;\n overflow: auto;\n padding: 0 24px;\n}\n\n\n\n\n.entity-table[_ngcontent-%COMP%] {\n width: 100%;\n border-collapse: collapse;\n font-size: 0.9rem;\n}\n\n.entity-table[_ngcontent-%COMP%] thead[_ngcontent-%COMP%] tr[_ngcontent-%COMP%] {\n border-bottom: 2px solid var(--mj-border-default);\n}\n\n.entity-table[_ngcontent-%COMP%] th[_ngcontent-%COMP%] {\n padding: 10px 12px;\n text-align: left;\n font-weight: 600;\n color: var(--mj-text-secondary);\n font-size: 0.8125rem;\n text-transform: uppercase;\n letter-spacing: 0.03em;\n white-space: nowrap;\n user-select: none;\n}\n\n.entity-table[_ngcontent-%COMP%] th.sortable[_ngcontent-%COMP%] {\n cursor: pointer;\n}\n\n.entity-table[_ngcontent-%COMP%] th.sortable[_ngcontent-%COMP%]:hover {\n color: var(--mj-text-primary);\n}\n\n.sort-icon[_ngcontent-%COMP%] {\n display: inline-block;\n margin-left: 5px;\n font-size: 0.75rem;\n vertical-align: middle;\n min-width: 14px;\n}\n\n.sort-icon[_ngcontent-%COMP%] .muted[_ngcontent-%COMP%] {\n opacity: 0.3;\n}\n\n.entity-row[_ngcontent-%COMP%] {\n border-bottom: 1px solid var(--mj-border-subtle);\n transition: background 0.1s;\n}\n\n.entity-row[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-hover);\n}\n\n.entity-table[_ngcontent-%COMP%] td[_ngcontent-%COMP%] {\n padding: 12px 12px;\n color: var(--mj-text-primary);\n vertical-align: middle;\n}\n\n\n\n\n\n\n.entity-table[_ngcontent-%COMP%] {\n table-layout: fixed;\n}\n\n.col-name[_ngcontent-%COMP%] { width: 28%; }\n.col-schema[_ngcontent-%COMP%] { width: 14%; }\n.col-table[_ngcontent-%COMP%] { width: 18%; }\n.col-owner[_ngcontent-%COMP%] { width: 15%; }\n.col-created[_ngcontent-%COMP%] { width: 13%; white-space: nowrap; }\n.col-actions[_ngcontent-%COMP%] { width: 12%; }\n\n\n\n\n.entity-name-cell[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.entity-name[_ngcontent-%COMP%] {\n font-weight: 500;\n color: var(--mj-text-primary);\n}\n\n.owner-badge[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n font-size: 0.7rem;\n font-weight: 600;\n padding: 2px 6px;\n border-radius: 10px;\n text-transform: uppercase;\n letter-spacing: 0.04em;\n}\n\n.owner-badge.owner-you[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 12%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n}\n\n.schema-badge[_ngcontent-%COMP%] {\n display: inline-block;\n font-size: 0.8rem;\n font-family: monospace;\n padding: 2px 8px;\n border-radius: 4px;\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-secondary);\n border: 1px solid var(--mj-border-subtle);\n}\n\ncode.table-name[_ngcontent-%COMP%] {\n font-size: 0.8rem;\n font-family: monospace;\n color: var(--mj-text-secondary);\n}\n\n.owner-self[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 5px;\n color: var(--mj-brand-primary);\n font-size: 0.875rem;\n}\n\n.owner-self[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 0.8rem;\n}\n\n.owner-other[_ngcontent-%COMP%] {\n color: var(--mj-text-secondary);\n font-size: 0.875rem;\n}\n\n.owner-other.muted[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n}\n\n\n\n\n.row-actions[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.action-btn[_ngcontent-%COMP%] {\n font-size: 0.8125rem;\n padding: 6px 12px;\n}\n\n\n\n\n.entity-count[_ngcontent-%COMP%] {\n padding: 10px 24px;\n font-size: 0.8rem;\n color: var(--mj-text-muted);\n border-top: 1px solid var(--mj-border-subtle);\n flex-shrink: 0;\n}\n\n\n\n\n.zero-state[_ngcontent-%COMP%] {\n flex: 1;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 60px 24px;\n text-align: center;\n gap: 16px;\n}\n\n.zero-state-icon[_ngcontent-%COMP%] {\n width: 72px;\n height: 72px;\n border-radius: 50%;\n background: var(--mj-bg-surface-sunken);\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.zero-state-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 2rem;\n color: var(--mj-text-muted);\n}\n\n.zero-state-title[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 1.1rem;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.zero-state-body[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 0.9rem;\n color: var(--mj-text-secondary);\n max-width: 420px;\n line-height: 1.6;\n word-break: break-word;\n overflow-wrap: break-word;\n}"], changeDetection: 0 });
473
460
  }
474
461
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(EntityListComponent, [{
475
462
  type: Component,
476
- args: [{ standalone: false, selector: 'mj-database-entity-list', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"entity-list-root\">\n\n <!-- \u2500\u2500 Header \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 -->\n <div class=\"entity-list-header\">\n <h2 class=\"entity-list-title\">\n <i class=\"fa-solid fa-table-cells-large\"></i>\n Database Designer\n </h2>\n <button\n mjButton\n buttonStyle=\"primary\"\n class=\"new-entity-btn\"\n (click)=\"OnNewEntity()\">\n <i class=\"fa-solid fa-plus\"></i>\n New Entity\n </button>\n </div>\n\n <!-- \u2500\u2500 Toolbar \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 -->\n <div class=\"entity-list-toolbar\">\n <div class=\"search-wrap\">\n <i class=\"fa-solid fa-magnifying-glass search-icon\"></i>\n <input\n type=\"text\"\n class=\"mj-input search-input\"\n placeholder=\"Search by name, table, or schema\u2026\"\n [(ngModel)]=\"SearchTerm\"\n aria-label=\"Search entities\" />\n @if (SearchTerm) {\n <button\n class=\"search-clear\"\n (click)=\"SearchTerm = ''\"\n aria-label=\"Clear search\">\n <i class=\"fa-solid fa-xmark\"></i>\n </button>\n }\n </div>\n\n @if (AvailableFilterSchemas.length > 1) {\n <select\n class=\"mj-input schema-filter\"\n [value]=\"SelectedSchema\"\n (change)=\"SelectedSchema = $any($event.target).value\"\n aria-label=\"Filter by schema\">\n <option value=\"\">All Schemas</option>\n @for (schema of AvailableFilterSchemas; track schema) {\n <option [value]=\"schema\">{{ schema }}</option>\n }\n </select>\n }\n\n <button\n mjButton\n buttonStyle=\"secondary\"\n class=\"refresh-btn\"\n title=\"Refresh list\"\n [disabled]=\"IsLoading\"\n (click)=\"OnRefresh()\">\n <i class=\"fa-solid fa-rotate\" [class.fa-spin]=\"IsLoading\"></i>\n </button>\n </div>\n\n <!-- \u2500\u2500 Error \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 -->\n @if (ErrorMessage) {\n <div class=\"entity-list-error\" role=\"alert\">\n <i class=\"fa-solid fa-circle-exclamation\"></i>\n {{ ErrorMessage }}\n </div>\n }\n\n <!-- \u2500\u2500 Loading skeleton \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 -->\n @if (IsLoading && FilteredEntities.length === 0) {\n <div class=\"skeleton-table\" aria-busy=\"true\" aria-label=\"Loading entities\u2026\">\n @for (_ of [1, 2, 3, 4]; track $index) {\n <div class=\"skeleton-row\">\n <div class=\"skeleton-cell wide\"></div>\n <div class=\"skeleton-cell medium\"></div>\n <div class=\"skeleton-cell narrow\"></div>\n <div class=\"skeleton-cell narrow\"></div>\n <div class=\"skeleton-cell medium\"></div>\n <div class=\"skeleton-cell narrow\"></div>\n </div>\n }\n </div>\n }\n\n <!-- \u2500\u2500 Entity table \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 -->\n @if (!IsLoading || FilteredEntities.length > 0) {\n @if (FilteredEntities.length > 0) {\n <div class=\"table-wrap\">\n <table class=\"entity-table\" role=\"grid\" aria-label=\"User-defined entities\">\n <thead>\n <tr>\n <th class=\"col-name sortable\" (click)=\"OnSortChange('entityName')\" scope=\"col\">\n Entity Name\n <span class=\"sort-icon\">\n @if (SortField === 'entityName') {\n <i class=\"fa-solid\" [class.fa-chevron-up]=\"SortDirection === 'asc'\" [class.fa-chevron-down]=\"SortDirection === 'desc'\"></i>\n } @else {\n <i class=\"fa-solid fa-chevron-up muted\"></i>\n }\n </span>\n </th>\n <th class=\"col-schema sortable\" (click)=\"OnSortChange('schemaName')\" scope=\"col\">\n Schema\n <span class=\"sort-icon\">\n @if (SortField === 'schemaName') {\n <i class=\"fa-solid\" [class.fa-chevron-up]=\"SortDirection === 'asc'\" [class.fa-chevron-down]=\"SortDirection === 'desc'\"></i>\n } @else {\n <i class=\"fa-solid fa-chevron-up muted\"></i>\n }\n </span>\n </th>\n <th class=\"col-table sortable\" (click)=\"OnSortChange('tableName')\" scope=\"col\">\n Table\n <span class=\"sort-icon\">\n @if (SortField === 'tableName') {\n <i class=\"fa-solid\" [class.fa-chevron-up]=\"SortDirection === 'asc'\" [class.fa-chevron-down]=\"SortDirection === 'desc'\"></i>\n } @else {\n <i class=\"fa-solid fa-chevron-up muted\"></i>\n }\n </span>\n </th>\n <th class=\"col-owner sortable\" (click)=\"OnSortChange('owner')\" scope=\"col\">\n Owner\n <span class=\"sort-icon\">\n @if (SortField === 'owner') {\n <i class=\"fa-solid\" [class.fa-chevron-up]=\"SortDirection === 'asc'\" [class.fa-chevron-down]=\"SortDirection === 'desc'\"></i>\n } @else {\n <i class=\"fa-solid fa-chevron-up muted\"></i>\n }\n </span>\n </th>\n <th class=\"col-created sortable\" (click)=\"OnSortChange('createdAt')\" scope=\"col\">\n Created\n <span class=\"sort-icon\">\n @if (SortField === 'createdAt') {\n <i class=\"fa-solid\" [class.fa-chevron-up]=\"SortDirection === 'asc'\" [class.fa-chevron-down]=\"SortDirection === 'desc'\"></i>\n } @else {\n <i class=\"fa-solid fa-chevron-up muted\"></i>\n }\n </span>\n </th>\n <th class=\"col-actions\" scope=\"col\">Actions</th>\n </tr>\n </thead>\n <tbody>\n @for (entity of FilteredEntities; track TrackByEntityId($index, entity)) {\n <tr class=\"entity-row\">\n <td class=\"col-name\">\n <div class=\"entity-name-cell\">\n <span class=\"entity-name\">{{ entity.entityName }}</span>\n @if (entity.isOwner) {\n <span class=\"owner-badge owner-you\" title=\"You own this entity\">You</span>\n }\n </div>\n </td>\n <td class=\"col-schema\">\n <span class=\"schema-badge\">{{ entity.schemaName }}</span>\n </td>\n <td class=\"col-table\">\n <code class=\"table-name\">{{ entity.tableName }}</code>\n </td>\n <td class=\"col-owner\">\n @if (entity.isOwner) {\n <span class=\"owner-self\">\n <i class=\"fa-solid fa-user-check\"></i>\n You\n </span>\n } @else if (entity.ownerDisplayName) {\n <span class=\"owner-other\">{{ entity.ownerDisplayName }}</span>\n } @else {\n <span class=\"owner-other muted\">\u2014</span>\n }\n </td>\n <td class=\"col-created\">{{ FormatDate(entity.createdAt) }}</td>\n <td class=\"col-actions\">\n <div class=\"row-actions\">\n <button\n mjButton\n buttonStyle=\"secondary\"\n class=\"action-btn\"\n title=\"Edit this entity\"\n (click)=\"OnEditEntity(entity)\">\n <i class=\"fa-solid fa-pen-to-square\"></i>\n Edit\n </button>\n </div>\n </td>\n </tr>\n }\n </tbody>\n </table>\n </div>\n\n <div class=\"entity-count\">\n {{ FilteredEntities.length }} {{ FilteredEntities.length === 1 ? 'entity' : 'entities' }}\n @if (SearchTerm) { matching \"{{ SearchTerm }}\" }\n </div>\n } @else if (!IsLoading) {\n <!-- \u2500\u2500 Zero state \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 -->\n <div class=\"zero-state\">\n <div class=\"zero-state-icon\">\n <i class=\"fa-regular fa-rectangle-list\"></i>\n </div>\n @if (SearchTerm) {\n <h3 class=\"zero-state-title\">No entities match \"{{ SearchTerm }}\"</h3>\n <p class=\"zero-state-body\">Try a different search term or clear the filter.</p>\n <button mjButton buttonStyle=\"secondary\" (click)=\"SearchTerm = ''\">\n Clear search\n </button>\n } @else {\n <h3 class=\"zero-state-title\">No entities yet</h3>\n <p class=\"zero-state-body\">\n Create your first user-defined entity. You can also use the\n Database Designer agent in a conversation for guided design.\n </p>\n <button mjButton buttonStyle=\"primary\" (click)=\"OnNewEntity()\">\n <i class=\"fa-solid fa-plus\"></i>\n Create Entity\n </button>\n }\n </div>\n }\n }\n</div>\n", styles: ["/* \u2500\u2500 Root \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n\n.entity-list-root {\n display: flex;\n flex-direction: column;\n height: 100%;\n padding: 0;\n}\n\n/* \u2500\u2500 Header \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n\n.entity-list-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 20px 24px 16px;\n border-bottom: 1px solid var(--mj-border-subtle);\n flex-shrink: 0;\n}\n\n.entity-list-title {\n margin: 0;\n font-size: 1.25rem;\n font-weight: 600;\n color: var(--mj-text-primary);\n display: flex;\n align-items: center;\n gap: 10px;\n}\n\n.entity-list-title i {\n color: var(--mj-brand-primary);\n font-size: 1.1rem;\n}\n\n/* \u2500\u2500 Toolbar \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n\n.entity-list-toolbar {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 14px 24px;\n border-bottom: 1px solid var(--mj-border-subtle);\n flex-shrink: 0;\n}\n\n.search-wrap {\n position: relative;\n flex: 1;\n max-width: 400px;\n}\n\n.search-icon {\n position: absolute;\n left: 10px;\n top: 50%;\n transform: translateY(-50%);\n color: var(--mj-text-muted);\n pointer-events: none;\n font-size: 0.875rem;\n}\n\n.search-input {\n width: 100%;\n padding-left: 32px;\n padding-right: 32px;\n box-sizing: border-box;\n}\n\n.schema-filter {\n width: auto;\n min-width: 160px;\n max-width: 220px;\n flex-shrink: 0;\n}\n\n.search-clear {\n position: absolute;\n right: 8px;\n top: 50%;\n transform: translateY(-50%);\n background: none;\n border: none;\n padding: 4px 6px;\n color: var(--mj-text-muted);\n cursor: pointer;\n border-radius: 4px;\n line-height: 1;\n transition: color 0.15s, background 0.15s;\n}\n\n.search-clear:hover {\n color: var(--mj-text-primary);\n background: var(--mj-bg-surface-hover);\n}\n\n/* \u2500\u2500 Error banner \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n\n.entity-list-error {\n margin: 12px 24px;\n padding: 10px 14px;\n background: var(--mj-status-error-bg);\n color: var(--mj-status-error-text);\n border: 1px solid var(--mj-status-error-border);\n border-radius: 6px;\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 0.875rem;\n}\n\n/* \u2500\u2500 Skeleton loader \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n\n.skeleton-table {\n padding: 0 24px;\n margin-top: 8px;\n}\n\n.skeleton-row {\n display: flex;\n gap: 16px;\n padding: 12px 0;\n border-bottom: 1px solid var(--mj-border-subtle);\n}\n\n.skeleton-cell {\n height: 18px;\n border-radius: 4px;\n background: var(--mj-bg-surface-sunken);\n animation: skeleton-pulse 1.4s ease-in-out infinite;\n}\n\n.skeleton-cell.wide { flex: 3; }\n.skeleton-cell.medium { flex: 2; }\n.skeleton-cell.narrow { flex: 1; }\n\n@keyframes skeleton-pulse {\n 0%, 100% { opacity: 1; }\n 50% { opacity: 0.45; }\n}\n\n/* \u2500\u2500 Table wrap \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n\n.table-wrap {\n flex: 1;\n overflow: auto;\n padding: 0 24px;\n}\n\n/* \u2500\u2500 Entity table \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n\n.entity-table {\n width: 100%;\n border-collapse: collapse;\n font-size: 0.9rem;\n}\n\n.entity-table thead tr {\n border-bottom: 2px solid var(--mj-border-default);\n}\n\n.entity-table th {\n padding: 10px 12px;\n text-align: left;\n font-weight: 600;\n color: var(--mj-text-secondary);\n font-size: 0.8125rem;\n text-transform: uppercase;\n letter-spacing: 0.03em;\n white-space: nowrap;\n user-select: none;\n}\n\n.entity-table th.sortable {\n cursor: pointer;\n}\n\n.entity-table th.sortable:hover {\n color: var(--mj-text-primary);\n}\n\n.sort-icon {\n display: inline-block;\n margin-left: 5px;\n font-size: 0.75rem;\n vertical-align: middle;\n min-width: 14px;\n}\n\n.sort-icon .muted {\n opacity: 0.3;\n}\n\n.entity-row {\n border-bottom: 1px solid var(--mj-border-subtle);\n transition: background 0.1s;\n}\n\n.entity-row:hover {\n background: var(--mj-bg-surface-hover);\n}\n\n.entity-table td {\n padding: 12px 12px;\n color: var(--mj-text-primary);\n vertical-align: middle;\n}\n\n/* \u2500\u2500 Column sizing \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n/* Fixed layout \u2014 percentages for content columns, px only for utility columns */\n\n.entity-table {\n table-layout: fixed;\n}\n\n.col-name { width: 28%; }\n.col-schema { width: 14%; }\n.col-table { width: 18%; }\n.col-owner { width: 15%; }\n.col-created { width: 13%; white-space: nowrap; }\n.col-actions { width: 12%; }\n\n/* \u2500\u2500 Cell content \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n\n.entity-name-cell {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.entity-name {\n font-weight: 500;\n color: var(--mj-text-primary);\n}\n\n.owner-badge {\n display: inline-flex;\n align-items: center;\n font-size: 0.7rem;\n font-weight: 600;\n padding: 2px 6px;\n border-radius: 10px;\n text-transform: uppercase;\n letter-spacing: 0.04em;\n}\n\n.owner-badge.owner-you {\n background: color-mix(in srgb, var(--mj-brand-primary) 12%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n}\n\n.schema-badge {\n display: inline-block;\n font-size: 0.8rem;\n font-family: monospace;\n padding: 2px 8px;\n border-radius: 4px;\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-secondary);\n border: 1px solid var(--mj-border-subtle);\n}\n\ncode.table-name {\n font-size: 0.8rem;\n font-family: monospace;\n color: var(--mj-text-secondary);\n}\n\n.owner-self {\n display: inline-flex;\n align-items: center;\n gap: 5px;\n color: var(--mj-brand-primary);\n font-size: 0.875rem;\n}\n\n.owner-self i {\n font-size: 0.8rem;\n}\n\n.owner-other {\n color: var(--mj-text-secondary);\n font-size: 0.875rem;\n}\n\n.owner-other.muted {\n color: var(--mj-text-muted);\n}\n\n/* \u2500\u2500 Row actions \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n\n.row-actions {\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.action-btn {\n font-size: 0.8125rem;\n padding: 6px 12px;\n}\n\n/* \u2500\u2500 Row count footer \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n\n.entity-count {\n padding: 10px 24px;\n font-size: 0.8rem;\n color: var(--mj-text-muted);\n border-top: 1px solid var(--mj-border-subtle);\n flex-shrink: 0;\n}\n\n/* \u2500\u2500 Zero state \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n\n.zero-state {\n flex: 1;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 60px 24px;\n text-align: center;\n gap: 16px;\n}\n\n.zero-state-icon {\n width: 72px;\n height: 72px;\n border-radius: 50%;\n background: var(--mj-bg-surface-sunken);\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.zero-state-icon i {\n font-size: 2rem;\n color: var(--mj-text-muted);\n}\n\n.zero-state-title {\n margin: 0;\n font-size: 1.1rem;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.zero-state-body {\n margin: 0;\n font-size: 0.9rem;\n color: var(--mj-text-secondary);\n max-width: 420px;\n line-height: 1.6;\n word-break: break-word;\n overflow-wrap: break-word;\n}\n"] }]
463
+ args: [{ standalone: false, selector: 'mj-database-entity-list', changeDetection: ChangeDetectionStrategy.OnPush, template: "<mj-page-layout>\n <mj-page-header\n Title=\"Database Designer\"\n Icon=\"fa-solid fa-table-cells-large\"\n Subtitle=\"Browse and create user-defined entities\">\n <div meta>\n <mj-stat-badge [Count]=\"FilteredEntities.length\" Label=\"entities\"></mj-stat-badge>\n </div>\n <div actions>\n <mj-refresh-button [Loading]=\"IsLoading\" (Clicked)=\"OnRefresh()\"></mj-refresh-button>\n <button mjButton variant=\"primary\" size=\"sm\" (click)=\"OnNewEntity()\">\n <i class=\"fa-solid fa-plus\"></i> New Entity\n </button>\n </div>\n <div toolbar>\n <mj-page-search\n Placeholder=\"Search by name, table, or schema...\"\n [Value]=\"SearchTerm\"\n (ValueChange)=\"SearchTerm = $event\">\n </mj-page-search>\n @if (AvailableFilterSchemas.length > 1) {\n <select\n class=\"mj-input schema-filter\"\n [value]=\"SelectedSchema\"\n (change)=\"SelectedSchema = $any($event.target).value\"\n aria-label=\"Filter by schema\">\n <option value=\"\">All Schemas</option>\n @for (schema of AvailableFilterSchemas; track schema) {\n <option [value]=\"schema\">{{ schema }}</option>\n }\n </select>\n }\n </div>\n </mj-page-header>\n\n <mj-page-body>\n <!-- \u2500\u2500 Error \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 -->\n @if (ErrorMessage) {\n <div class=\"entity-list-error\" role=\"alert\">\n <i class=\"fa-solid fa-circle-exclamation\"></i>\n {{ ErrorMessage }}\n </div>\n }\n\n <!-- \u2500\u2500 Loading skeleton \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 -->\n @if (IsLoading && FilteredEntities.length === 0) {\n <div class=\"skeleton-table\" aria-busy=\"true\" aria-label=\"Loading entities\u2026\">\n @for (_ of [1, 2, 3, 4]; track $index) {\n <div class=\"skeleton-row\">\n <div class=\"skeleton-cell wide\"></div>\n <div class=\"skeleton-cell medium\"></div>\n <div class=\"skeleton-cell narrow\"></div>\n <div class=\"skeleton-cell narrow\"></div>\n <div class=\"skeleton-cell medium\"></div>\n <div class=\"skeleton-cell narrow\"></div>\n </div>\n }\n </div>\n }\n\n <!-- \u2500\u2500 Entity table \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 -->\n @if (!IsLoading || FilteredEntities.length > 0) {\n @if (FilteredEntities.length > 0) {\n <div class=\"table-wrap\">\n <table class=\"entity-table\" role=\"grid\" aria-label=\"User-defined entities\">\n <thead>\n <tr>\n <th class=\"col-name sortable\" (click)=\"OnSortChange('entityName')\" scope=\"col\">\n Entity Name\n <span class=\"sort-icon\">\n @if (SortField === 'entityName') {\n <i class=\"fa-solid\" [class.fa-chevron-up]=\"SortDirection === 'asc'\" [class.fa-chevron-down]=\"SortDirection === 'desc'\"></i>\n } @else {\n <i class=\"fa-solid fa-chevron-up muted\"></i>\n }\n </span>\n </th>\n <th class=\"col-schema sortable\" (click)=\"OnSortChange('schemaName')\" scope=\"col\">\n Schema\n <span class=\"sort-icon\">\n @if (SortField === 'schemaName') {\n <i class=\"fa-solid\" [class.fa-chevron-up]=\"SortDirection === 'asc'\" [class.fa-chevron-down]=\"SortDirection === 'desc'\"></i>\n } @else {\n <i class=\"fa-solid fa-chevron-up muted\"></i>\n }\n </span>\n </th>\n <th class=\"col-table sortable\" (click)=\"OnSortChange('tableName')\" scope=\"col\">\n Table\n <span class=\"sort-icon\">\n @if (SortField === 'tableName') {\n <i class=\"fa-solid\" [class.fa-chevron-up]=\"SortDirection === 'asc'\" [class.fa-chevron-down]=\"SortDirection === 'desc'\"></i>\n } @else {\n <i class=\"fa-solid fa-chevron-up muted\"></i>\n }\n </span>\n </th>\n <th class=\"col-owner sortable\" (click)=\"OnSortChange('owner')\" scope=\"col\">\n Owner\n <span class=\"sort-icon\">\n @if (SortField === 'owner') {\n <i class=\"fa-solid\" [class.fa-chevron-up]=\"SortDirection === 'asc'\" [class.fa-chevron-down]=\"SortDirection === 'desc'\"></i>\n } @else {\n <i class=\"fa-solid fa-chevron-up muted\"></i>\n }\n </span>\n </th>\n <th class=\"col-created sortable\" (click)=\"OnSortChange('createdAt')\" scope=\"col\">\n Created\n <span class=\"sort-icon\">\n @if (SortField === 'createdAt') {\n <i class=\"fa-solid\" [class.fa-chevron-up]=\"SortDirection === 'asc'\" [class.fa-chevron-down]=\"SortDirection === 'desc'\"></i>\n } @else {\n <i class=\"fa-solid fa-chevron-up muted\"></i>\n }\n </span>\n </th>\n <th class=\"col-actions\" scope=\"col\">Actions</th>\n </tr>\n </thead>\n <tbody>\n @for (entity of FilteredEntities; track TrackByEntityId($index, entity)) {\n <tr class=\"entity-row\">\n <td class=\"col-name\">\n <div class=\"entity-name-cell\">\n <span class=\"entity-name\">{{ entity.entityName }}</span>\n @if (entity.isOwner) {\n <span class=\"owner-badge owner-you\" title=\"You own this entity\">You</span>\n }\n </div>\n </td>\n <td class=\"col-schema\">\n <span class=\"schema-badge\">{{ entity.schemaName }}</span>\n </td>\n <td class=\"col-table\">\n <code class=\"table-name\">{{ entity.tableName }}</code>\n </td>\n <td class=\"col-owner\">\n @if (entity.isOwner) {\n <span class=\"owner-self\">\n <i class=\"fa-solid fa-user-check\"></i>\n You\n </span>\n } @else if (entity.ownerDisplayName) {\n <span class=\"owner-other\">{{ entity.ownerDisplayName }}</span>\n } @else {\n <span class=\"owner-other muted\">\u2014</span>\n }\n </td>\n <td class=\"col-created\">{{ FormatDate(entity.createdAt) }}</td>\n <td class=\"col-actions\">\n <div class=\"row-actions\">\n <button\n mjButton\n buttonStyle=\"secondary\"\n class=\"action-btn\"\n title=\"Edit this entity\"\n (click)=\"OnEditEntity(entity)\">\n <i class=\"fa-solid fa-pen-to-square\"></i>\n Edit\n </button>\n </div>\n </td>\n </tr>\n }\n </tbody>\n </table>\n </div>\n\n <div class=\"entity-count\">\n {{ FilteredEntities.length }} {{ FilteredEntities.length === 1 ? 'entity' : 'entities' }}\n @if (SearchTerm) { matching \"{{ SearchTerm }}\" }\n </div>\n } @else if (!IsLoading) {\n <!-- \u2500\u2500 Zero state \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 -->\n <div class=\"zero-state\">\n <div class=\"zero-state-icon\">\n <i class=\"fa-regular fa-rectangle-list\"></i>\n </div>\n @if (SearchTerm) {\n <h3 class=\"zero-state-title\">No entities match \"{{ SearchTerm }}\"</h3>\n <p class=\"zero-state-body\">Try a different search term or clear the filter.</p>\n <button mjButton buttonStyle=\"secondary\" (click)=\"SearchTerm = ''\">\n Clear search\n </button>\n } @else {\n <h3 class=\"zero-state-title\">No entities yet</h3>\n <p class=\"zero-state-body\">\n Create your first user-defined entity. You can also use the\n Database Designer agent in a conversation for guided design.\n </p>\n <button mjButton buttonStyle=\"primary\" (click)=\"OnNewEntity()\">\n <i class=\"fa-solid fa-plus\"></i>\n Create Entity\n </button>\n }\n </div>\n }\n }\n </mj-page-body>\n</mj-page-layout>\n", styles: ["/* Schema filter used in the [toolbar] slot. */\n.schema-filter {\n width: auto;\n min-width: 160px;\n max-width: 220px;\n flex-shrink: 0;\n}\n\n/* \u2500\u2500 Error banner \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n\n.entity-list-error {\n margin: 12px 24px;\n padding: 10px 14px;\n background: var(--mj-status-error-bg);\n color: var(--mj-status-error-text);\n border: 1px solid var(--mj-status-error-border);\n border-radius: 6px;\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 0.875rem;\n}\n\n/* \u2500\u2500 Skeleton loader \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n\n.skeleton-table {\n padding: 0 24px;\n margin-top: 8px;\n}\n\n.skeleton-row {\n display: flex;\n gap: 16px;\n padding: 12px 0;\n border-bottom: 1px solid var(--mj-border-subtle);\n}\n\n.skeleton-cell {\n height: 18px;\n border-radius: 4px;\n background: var(--mj-bg-surface-sunken);\n animation: skeleton-pulse 1.4s ease-in-out infinite;\n}\n\n.skeleton-cell.wide { flex: 3; }\n.skeleton-cell.medium { flex: 2; }\n.skeleton-cell.narrow { flex: 1; }\n\n@keyframes skeleton-pulse {\n 0%, 100% { opacity: 1; }\n 50% { opacity: 0.45; }\n}\n\n/* \u2500\u2500 Table wrap \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n\n.table-wrap {\n flex: 1;\n overflow: auto;\n padding: 0 24px;\n}\n\n/* \u2500\u2500 Entity table \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n\n.entity-table {\n width: 100%;\n border-collapse: collapse;\n font-size: 0.9rem;\n}\n\n.entity-table thead tr {\n border-bottom: 2px solid var(--mj-border-default);\n}\n\n.entity-table th {\n padding: 10px 12px;\n text-align: left;\n font-weight: 600;\n color: var(--mj-text-secondary);\n font-size: 0.8125rem;\n text-transform: uppercase;\n letter-spacing: 0.03em;\n white-space: nowrap;\n user-select: none;\n}\n\n.entity-table th.sortable {\n cursor: pointer;\n}\n\n.entity-table th.sortable:hover {\n color: var(--mj-text-primary);\n}\n\n.sort-icon {\n display: inline-block;\n margin-left: 5px;\n font-size: 0.75rem;\n vertical-align: middle;\n min-width: 14px;\n}\n\n.sort-icon .muted {\n opacity: 0.3;\n}\n\n.entity-row {\n border-bottom: 1px solid var(--mj-border-subtle);\n transition: background 0.1s;\n}\n\n.entity-row:hover {\n background: var(--mj-bg-surface-hover);\n}\n\n.entity-table td {\n padding: 12px 12px;\n color: var(--mj-text-primary);\n vertical-align: middle;\n}\n\n/* \u2500\u2500 Column sizing \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n/* Fixed layout \u2014 percentages for content columns, px only for utility columns */\n\n.entity-table {\n table-layout: fixed;\n}\n\n.col-name { width: 28%; }\n.col-schema { width: 14%; }\n.col-table { width: 18%; }\n.col-owner { width: 15%; }\n.col-created { width: 13%; white-space: nowrap; }\n.col-actions { width: 12%; }\n\n/* \u2500\u2500 Cell content \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n\n.entity-name-cell {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.entity-name {\n font-weight: 500;\n color: var(--mj-text-primary);\n}\n\n.owner-badge {\n display: inline-flex;\n align-items: center;\n font-size: 0.7rem;\n font-weight: 600;\n padding: 2px 6px;\n border-radius: 10px;\n text-transform: uppercase;\n letter-spacing: 0.04em;\n}\n\n.owner-badge.owner-you {\n background: color-mix(in srgb, var(--mj-brand-primary) 12%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n}\n\n.schema-badge {\n display: inline-block;\n font-size: 0.8rem;\n font-family: monospace;\n padding: 2px 8px;\n border-radius: 4px;\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-secondary);\n border: 1px solid var(--mj-border-subtle);\n}\n\ncode.table-name {\n font-size: 0.8rem;\n font-family: monospace;\n color: var(--mj-text-secondary);\n}\n\n.owner-self {\n display: inline-flex;\n align-items: center;\n gap: 5px;\n color: var(--mj-brand-primary);\n font-size: 0.875rem;\n}\n\n.owner-self i {\n font-size: 0.8rem;\n}\n\n.owner-other {\n color: var(--mj-text-secondary);\n font-size: 0.875rem;\n}\n\n.owner-other.muted {\n color: var(--mj-text-muted);\n}\n\n/* \u2500\u2500 Row actions \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n\n.row-actions {\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.action-btn {\n font-size: 0.8125rem;\n padding: 6px 12px;\n}\n\n/* \u2500\u2500 Row count footer \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n\n.entity-count {\n padding: 10px 24px;\n font-size: 0.8rem;\n color: var(--mj-text-muted);\n border-top: 1px solid var(--mj-border-subtle);\n flex-shrink: 0;\n}\n\n/* \u2500\u2500 Zero state \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n\n.zero-state {\n flex: 1;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 60px 24px;\n text-align: center;\n gap: 16px;\n}\n\n.zero-state-icon {\n width: 72px;\n height: 72px;\n border-radius: 50%;\n background: var(--mj-bg-surface-sunken);\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.zero-state-icon i {\n font-size: 2rem;\n color: var(--mj-text-muted);\n}\n\n.zero-state-title {\n margin: 0;\n font-size: 1.1rem;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.zero-state-body {\n margin: 0;\n font-size: 0.9rem;\n color: var(--mj-text-secondary);\n max-width: 420px;\n line-height: 1.6;\n word-break: break-word;\n overflow-wrap: break-word;\n}\n"] }]
477
464
  }], null, { EditEntity: [{
478
465
  type: Output
479
466
  }], ViewEntity: [{