@memberjunction/ng-dashboards 5.37.0 → 5.39.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 (328) hide show
  1. package/README.md +46 -7
  2. package/dist/AI/components/agents/agent-configuration.component.js +199 -198
  3. package/dist/AI/components/agents/agent-configuration.component.js.map +1 -1
  4. package/dist/AI/components/analytics/ai-analytics-resource.component.d.ts.map +1 -1
  5. package/dist/AI/components/analytics/ai-analytics-resource.component.js +20 -17
  6. package/dist/AI/components/analytics/ai-analytics-resource.component.js.map +1 -1
  7. package/dist/AI/components/analytics/cost-budget/cost-budget.component.d.ts +15 -0
  8. package/dist/AI/components/analytics/cost-budget/cost-budget.component.d.ts.map +1 -1
  9. package/dist/AI/components/analytics/cost-budget/cost-budget.component.js +166 -58
  10. package/dist/AI/components/analytics/cost-budget/cost-budget.component.js.map +1 -1
  11. package/dist/AI/components/analytics/executive-summary/executive-summary.component.d.ts.map +1 -1
  12. package/dist/AI/components/analytics/executive-summary/executive-summary.component.js +2 -1
  13. package/dist/AI/components/analytics/executive-summary/executive-summary.component.js.map +1 -1
  14. package/dist/AI/components/analytics/model-performance/model-performance.component.d.ts +1 -0
  15. package/dist/AI/components/analytics/model-performance/model-performance.component.d.ts.map +1 -1
  16. package/dist/AI/components/analytics/model-performance/model-performance.component.js +55 -36
  17. package/dist/AI/components/analytics/model-performance/model-performance.component.js.map +1 -1
  18. package/dist/AI/components/analytics/prompt-runs/prompt-run-analysis.component.d.ts +9 -1
  19. package/dist/AI/components/analytics/prompt-runs/prompt-run-analysis.component.d.ts.map +1 -1
  20. package/dist/AI/components/analytics/prompt-runs/prompt-run-analysis.component.js +158 -117
  21. package/dist/AI/components/analytics/prompt-runs/prompt-run-analysis.component.js.map +1 -1
  22. package/dist/AI/components/analytics/usage-patterns/usage-patterns.component.d.ts +1 -0
  23. package/dist/AI/components/analytics/usage-patterns/usage-patterns.component.d.ts.map +1 -1
  24. package/dist/AI/components/analytics/usage-patterns/usage-patterns.component.js +22 -8
  25. package/dist/AI/components/analytics/usage-patterns/usage-patterns.component.js.map +1 -1
  26. package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.d.ts +89 -842
  27. package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.d.ts.map +1 -1
  28. package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.js +1353 -7683
  29. package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.js.map +1 -1
  30. package/dist/AI/components/autotagging/dialogs/dry-run-preview.dialog.component.d.ts +87 -0
  31. package/dist/AI/components/autotagging/dialogs/dry-run-preview.dialog.component.d.ts.map +1 -0
  32. package/dist/AI/components/autotagging/dialogs/dry-run-preview.dialog.component.js +475 -0
  33. package/dist/AI/components/autotagging/dialogs/dry-run-preview.dialog.component.js.map +1 -0
  34. package/dist/AI/components/autotagging/dialogs/item-detail.dialog.component.d.ts +29 -0
  35. package/dist/AI/components/autotagging/dialogs/item-detail.dialog.component.d.ts.map +1 -0
  36. package/dist/AI/components/autotagging/dialogs/item-detail.dialog.component.js +208 -0
  37. package/dist/AI/components/autotagging/dialogs/item-detail.dialog.component.js.map +1 -0
  38. package/dist/AI/components/autotagging/dialogs/no-content-type-warning.dialog.component.d.ts +21 -0
  39. package/dist/AI/components/autotagging/dialogs/no-content-type-warning.dialog.component.d.ts.map +1 -0
  40. package/dist/AI/components/autotagging/dialogs/no-content-type-warning.dialog.component.js +70 -0
  41. package/dist/AI/components/autotagging/dialogs/no-content-type-warning.dialog.component.js.map +1 -0
  42. package/dist/AI/components/autotagging/dialogs/source-type-form.dialog.component.d.ts +235 -0
  43. package/dist/AI/components/autotagging/dialogs/source-type-form.dialog.component.d.ts.map +1 -0
  44. package/dist/AI/components/autotagging/dialogs/source-type-form.dialog.component.js +1735 -0
  45. package/dist/AI/components/autotagging/dialogs/source-type-form.dialog.component.js.map +1 -0
  46. package/dist/AI/components/autotagging/shared/classify.dryrun.d.ts +61 -0
  47. package/dist/AI/components/autotagging/shared/classify.dryrun.d.ts.map +1 -0
  48. package/dist/AI/components/autotagging/shared/classify.dryrun.js +78 -0
  49. package/dist/AI/components/autotagging/shared/classify.dryrun.js.map +1 -0
  50. package/dist/AI/components/autotagging/shared/classify.format.d.ts +43 -0
  51. package/dist/AI/components/autotagging/shared/classify.format.d.ts.map +1 -0
  52. package/dist/AI/components/autotagging/shared/classify.format.js +209 -0
  53. package/dist/AI/components/autotagging/shared/classify.format.js.map +1 -0
  54. package/dist/AI/components/autotagging/shared/classify.types.d.ts +276 -0
  55. package/dist/AI/components/autotagging/shared/classify.types.d.ts.map +1 -0
  56. package/dist/AI/components/autotagging/shared/classify.types.js +6 -0
  57. package/dist/AI/components/autotagging/shared/classify.types.js.map +1 -0
  58. package/dist/AI/components/autotagging/tabs/health-tab.component.d.ts +103 -0
  59. package/dist/AI/components/autotagging/tabs/health-tab.component.d.ts.map +1 -0
  60. package/dist/AI/components/autotagging/tabs/health-tab.component.js +571 -0
  61. package/dist/AI/components/autotagging/tabs/health-tab.component.js.map +1 -0
  62. package/dist/AI/components/autotagging/tabs/history-tab.component.d.ts +40 -0
  63. package/dist/AI/components/autotagging/tabs/history-tab.component.d.ts.map +1 -0
  64. package/dist/AI/components/autotagging/tabs/history-tab.component.js +402 -0
  65. package/dist/AI/components/autotagging/tabs/history-tab.component.js.map +1 -0
  66. package/dist/AI/components/autotagging/tabs/inbox-tab.component.d.ts +107 -0
  67. package/dist/AI/components/autotagging/tabs/inbox-tab.component.d.ts.map +1 -0
  68. package/dist/AI/components/autotagging/tabs/inbox-tab.component.js +719 -0
  69. package/dist/AI/components/autotagging/tabs/inbox-tab.component.js.map +1 -0
  70. package/dist/AI/components/autotagging/tabs/pipeline-tab.component.d.ts +122 -0
  71. package/dist/AI/components/autotagging/tabs/pipeline-tab.component.d.ts.map +1 -0
  72. package/dist/AI/components/autotagging/tabs/pipeline-tab.component.js +752 -0
  73. package/dist/AI/components/autotagging/tabs/pipeline-tab.component.js.map +1 -0
  74. package/dist/AI/components/autotagging/tabs/sources-tab.component.d.ts +166 -0
  75. package/dist/AI/components/autotagging/tabs/sources-tab.component.d.ts.map +1 -0
  76. package/dist/AI/components/autotagging/tabs/sources-tab.component.js +1384 -0
  77. package/dist/AI/components/autotagging/tabs/sources-tab.component.js.map +1 -0
  78. package/dist/AI/components/autotagging/tabs/tags-tab.component.d.ts +70 -0
  79. package/dist/AI/components/autotagging/tabs/tags-tab.component.d.ts.map +1 -0
  80. package/dist/AI/components/autotagging/tabs/tags-tab.component.js +448 -0
  81. package/dist/AI/components/autotagging/tabs/tags-tab.component.js.map +1 -0
  82. package/dist/AI/components/autotagging/tabs/taxonomy-tab.component.d.ts +397 -0
  83. package/dist/AI/components/autotagging/tabs/taxonomy-tab.component.d.ts.map +1 -0
  84. package/dist/AI/components/autotagging/tabs/taxonomy-tab.component.js +3490 -0
  85. package/dist/AI/components/autotagging/tabs/taxonomy-tab.component.js.map +1 -0
  86. package/dist/AI/components/autotagging/tabs/types-tab.component.d.ts +47 -0
  87. package/dist/AI/components/autotagging/tabs/types-tab.component.d.ts.map +1 -0
  88. package/dist/AI/components/autotagging/tabs/types-tab.component.js +220 -0
  89. package/dist/AI/components/autotagging/tabs/types-tab.component.js.map +1 -0
  90. package/dist/AI/components/duplicates/duplicate-detection-resource.component.js +293 -289
  91. package/dist/AI/components/duplicates/duplicate-detection-resource.component.js.map +1 -1
  92. package/dist/AI/components/models/model-management.component.js +209 -208
  93. package/dist/AI/components/models/model-management.component.js.map +1 -1
  94. package/dist/AI/components/prompts/prompt-management.component.js +130 -128
  95. package/dist/AI/components/prompts/prompt-management.component.js.map +1 -1
  96. package/dist/AI/components/requests/agent-requests-resource.component.js +61 -61
  97. package/dist/AI/components/requests/agent-requests-resource.component.js.map +1 -1
  98. package/dist/AI/components/system/system-configuration.component.js +17 -17
  99. package/dist/AI/components/system/system-configuration.component.js.map +1 -1
  100. package/dist/AI/components/tags/tags-resource.component.js +550 -532
  101. package/dist/AI/components/tags/tags-resource.component.js.map +1 -1
  102. package/dist/AI/components/vectors/vector-management-resource.component.js +1 -1
  103. package/dist/AI/components/vectors/vector-management-resource.component.js.map +1 -1
  104. package/dist/AI/services/ai-instrumentation.service.d.ts +5 -0
  105. package/dist/AI/services/ai-instrumentation.service.d.ts.map +1 -1
  106. package/dist/AI/services/ai-instrumentation.service.js +14 -2
  107. package/dist/AI/services/ai-instrumentation.service.js.map +1 -1
  108. package/dist/AI/services/cache-metrics.d.ts +50 -0
  109. package/dist/AI/services/cache-metrics.d.ts.map +1 -0
  110. package/dist/AI/services/cache-metrics.js +43 -0
  111. package/dist/AI/services/cache-metrics.js.map +1 -0
  112. package/dist/APIKeys/api-key-edit-panel.component.js +2 -2
  113. package/dist/APIKeys/api-keys-resource.component.js +132 -131
  114. package/dist/APIKeys/api-keys-resource.component.js.map +1 -1
  115. package/dist/Actions/components/actions-overview.component.js +141 -141
  116. package/dist/Actions/components/actions-overview.component.js.map +1 -1
  117. package/dist/Actions/components/execution-monitoring.component.js +15 -15
  118. package/dist/Actions/components/execution-monitoring.component.js.map +1 -1
  119. package/dist/Actions/components/explorer/action-explorer.component.d.ts +0 -5
  120. package/dist/Actions/components/explorer/action-explorer.component.d.ts.map +1 -1
  121. package/dist/Actions/components/explorer/action-explorer.component.js +139 -212
  122. package/dist/Actions/components/explorer/action-explorer.component.js.map +1 -1
  123. package/dist/Admin/admin-data-schema.component.js +2 -2
  124. package/dist/Admin/admin-data-schema.component.js.map +1 -1
  125. package/dist/Admin/admin-dev-tools-resource.component.js +2 -2
  126. package/dist/Admin/admin-dev-tools-resource.component.js.map +1 -1
  127. package/dist/Admin/admin-identity-access.component.js +2 -2
  128. package/dist/Admin/admin-identity-access.component.js.map +1 -1
  129. package/dist/Admin/admin-monitoring.component.js +2 -2
  130. package/dist/Admin/admin-monitoring.component.js.map +1 -1
  131. package/dist/ApplicationRoles/application-roles-resource.component.js +54 -49
  132. package/dist/ApplicationRoles/application-roles-resource.component.js.map +1 -1
  133. package/dist/Communication/communication-logs-resource.component.d.ts +6 -0
  134. package/dist/Communication/communication-logs-resource.component.d.ts.map +1 -1
  135. package/dist/Communication/communication-logs-resource.component.js +72 -50
  136. package/dist/Communication/communication-logs-resource.component.js.map +1 -1
  137. package/dist/Communication/communication-monitor-resource.component.js +103 -102
  138. package/dist/Communication/communication-monitor-resource.component.js.map +1 -1
  139. package/dist/Communication/communication-providers-resource.component.js +52 -51
  140. package/dist/Communication/communication-providers-resource.component.js.map +1 -1
  141. package/dist/Communication/communication-runs-resource.component.js +39 -38
  142. package/dist/Communication/communication-runs-resource.component.js.map +1 -1
  143. package/dist/Communication/communication-templates-resource.component.d.ts +6 -0
  144. package/dist/Communication/communication-templates-resource.component.d.ts.map +1 -1
  145. package/dist/Communication/communication-templates-resource.component.js +92 -89
  146. package/dist/Communication/communication-templates-resource.component.js.map +1 -1
  147. package/dist/ComponentStudio/component-studio-dashboard.component.d.ts +73 -1
  148. package/dist/ComponentStudio/component-studio-dashboard.component.d.ts.map +1 -1
  149. package/dist/ComponentStudio/component-studio-dashboard.component.js +512 -127
  150. package/dist/ComponentStudio/component-studio-dashboard.component.js.map +1 -1
  151. package/dist/ComponentStudio/component-studio-resource.component.d.ts +22 -0
  152. package/dist/ComponentStudio/component-studio-resource.component.d.ts.map +1 -0
  153. package/dist/ComponentStudio/component-studio-resource.component.js +55 -0
  154. package/dist/ComponentStudio/component-studio-resource.component.js.map +1 -0
  155. package/dist/ComponentStudio/components/ai-assistant/ai-assistant-panel.component.d.ts +104 -45
  156. package/dist/ComponentStudio/components/ai-assistant/ai-assistant-panel.component.d.ts.map +1 -1
  157. package/dist/ComponentStudio/components/ai-assistant/ai-assistant-panel.component.js +234 -331
  158. package/dist/ComponentStudio/components/ai-assistant/ai-assistant-panel.component.js.map +1 -1
  159. package/dist/ComponentStudio/components/form-builder/form-builder-canvas.component.d.ts +54 -0
  160. package/dist/ComponentStudio/components/form-builder/form-builder-canvas.component.d.ts.map +1 -0
  161. package/dist/ComponentStudio/components/form-builder/form-builder-canvas.component.js +339 -0
  162. package/dist/ComponentStudio/components/form-builder/form-builder-canvas.component.js.map +1 -0
  163. package/dist/ComponentStudio/components/form-builder/form-builder-right-panel.component.d.ts +65 -0
  164. package/dist/ComponentStudio/components/form-builder/form-builder-right-panel.component.d.ts.map +1 -0
  165. package/dist/ComponentStudio/components/form-builder/form-builder-right-panel.component.js +492 -0
  166. package/dist/ComponentStudio/components/form-builder/form-builder-right-panel.component.js.map +1 -0
  167. package/dist/ComponentStudio/components/form-builder/form-builder-tab.component.d.ts +88 -0
  168. package/dist/ComponentStudio/components/form-builder/form-builder-tab.component.d.ts.map +1 -0
  169. package/dist/ComponentStudio/components/form-builder/form-builder-tab.component.js +457 -0
  170. package/dist/ComponentStudio/components/form-builder/form-builder-tab.component.js.map +1 -0
  171. package/dist/ComponentStudio/components/form-override-dialog.component.d.ts +106 -0
  172. package/dist/ComponentStudio/components/form-override-dialog.component.d.ts.map +1 -0
  173. package/dist/ComponentStudio/components/form-override-dialog.component.js +478 -0
  174. package/dist/ComponentStudio/components/form-override-dialog.component.js.map +1 -0
  175. package/dist/ComponentStudio/components/workspace/component-preview.component.d.ts +54 -0
  176. package/dist/ComponentStudio/components/workspace/component-preview.component.d.ts.map +1 -1
  177. package/dist/ComponentStudio/components/workspace/component-preview.component.js +361 -50
  178. package/dist/ComponentStudio/components/workspace/component-preview.component.js.map +1 -1
  179. package/dist/ComponentStudio/components/workspace/editor-tabs.component.d.ts +10 -0
  180. package/dist/ComponentStudio/components/workspace/editor-tabs.component.d.ts.map +1 -1
  181. package/dist/ComponentStudio/components/workspace/editor-tabs.component.js +114 -45
  182. package/dist/ComponentStudio/components/workspace/editor-tabs.component.js.map +1 -1
  183. package/dist/ComponentStudio/services/canvas-to-code.d.ts +32 -0
  184. package/dist/ComponentStudio/services/canvas-to-code.d.ts.map +1 -0
  185. package/dist/ComponentStudio/services/canvas-to-code.js +347 -0
  186. package/dist/ComponentStudio/services/canvas-to-code.js.map +1 -0
  187. package/dist/ComponentStudio/services/code-to-canvas.d.ts +32 -0
  188. package/dist/ComponentStudio/services/code-to-canvas.d.ts.map +1 -0
  189. package/dist/ComponentStudio/services/code-to-canvas.js +92 -0
  190. package/dist/ComponentStudio/services/code-to-canvas.js.map +1 -0
  191. package/dist/ComponentStudio/services/component-studio-state.service.d.ts +29 -0
  192. package/dist/ComponentStudio/services/component-studio-state.service.d.ts.map +1 -1
  193. package/dist/ComponentStudio/services/component-studio-state.service.js +76 -0
  194. package/dist/ComponentStudio/services/component-studio-state.service.js.map +1 -1
  195. package/dist/ComponentStudio/services/entity-form-override.service.d.ts +86 -0
  196. package/dist/ComponentStudio/services/entity-form-override.service.d.ts.map +1 -0
  197. package/dist/ComponentStudio/services/entity-form-override.service.js +246 -0
  198. package/dist/ComponentStudio/services/entity-form-override.service.js.map +1 -0
  199. package/dist/ComponentStudio/services/field-binding-scanner.d.ts +29 -0
  200. package/dist/ComponentStudio/services/field-binding-scanner.d.ts.map +1 -0
  201. package/dist/ComponentStudio/services/field-binding-scanner.js +110 -0
  202. package/dist/ComponentStudio/services/field-binding-scanner.js.map +1 -0
  203. package/dist/ComponentStudio/services/form-canvas-model.d.ts +56 -0
  204. package/dist/ComponentStudio/services/form-canvas-model.d.ts.map +1 -0
  205. package/dist/ComponentStudio/services/form-canvas-model.js +35 -0
  206. package/dist/ComponentStudio/services/form-canvas-model.js.map +1 -0
  207. package/dist/ComponentStudio/services/form-host-props-fixture.d.ts +10 -0
  208. package/dist/ComponentStudio/services/form-host-props-fixture.d.ts.map +1 -0
  209. package/dist/ComponentStudio/services/form-host-props-fixture.js +10 -0
  210. package/dist/ComponentStudio/services/form-host-props-fixture.js.map +1 -0
  211. package/dist/Credentials/components/credentials-audit-resource.component.js +136 -135
  212. package/dist/Credentials/components/credentials-audit-resource.component.js.map +1 -1
  213. package/dist/Credentials/components/credentials-categories-resource.component.js +155 -152
  214. package/dist/Credentials/components/credentials-categories-resource.component.js.map +1 -1
  215. package/dist/Credentials/components/credentials-list-resource.component.js +119 -118
  216. package/dist/Credentials/components/credentials-list-resource.component.js.map +1 -1
  217. package/dist/Credentials/components/credentials-overview-resource.component.js +129 -128
  218. package/dist/Credentials/components/credentials-overview-resource.component.js.map +1 -1
  219. package/dist/Credentials/components/credentials-types-resource.component.js +107 -106
  220. package/dist/Credentials/components/credentials-types-resource.component.js.map +1 -1
  221. package/dist/DataExplorer/data-explorer-dashboard.component.js +2 -2
  222. package/dist/DataExplorer/data-explorer-dashboard.component.js.map +1 -1
  223. package/dist/DatabaseDesigner/components/database-designer-dashboard.component.js +1 -1
  224. package/dist/DatabaseDesigner/components/entity-list.component.js +115 -114
  225. package/dist/DatabaseDesigner/components/entity-list.component.js.map +1 -1
  226. package/dist/DatabaseDesigner/database-designer-dashboards.module.d.ts +5 -6
  227. package/dist/DatabaseDesigner/database-designer-dashboards.module.d.ts.map +1 -1
  228. package/dist/DatabaseDesigner/database-designer-dashboards.module.js +4 -5
  229. package/dist/DatabaseDesigner/database-designer-dashboards.module.js.map +1 -1
  230. package/dist/DevTools/app-state-inspector.component.js +18 -17
  231. package/dist/DevTools/app-state-inspector.component.js.map +1 -1
  232. package/dist/DevTools/class-registry.component.js +88 -85
  233. package/dist/DevTools/class-registry.component.js.map +1 -1
  234. package/dist/DevTools/event-monitor.component.js +155 -150
  235. package/dist/DevTools/event-monitor.component.js.map +1 -1
  236. package/dist/DevTools/graphql-console.component.js +245 -243
  237. package/dist/DevTools/graphql-console.component.js.map +1 -1
  238. package/dist/DevTools/layout-inspector.component.js +18 -17
  239. package/dist/DevTools/layout-inspector.component.js.map +1 -1
  240. package/dist/EntityAdmin/entity-admin-dashboard.component.js +20 -19
  241. package/dist/EntityAdmin/entity-admin-dashboard.component.js.map +1 -1
  242. package/dist/FormBuilder/form-builder-resource.component.d.ts +964 -0
  243. package/dist/FormBuilder/form-builder-resource.component.d.ts.map +1 -0
  244. package/dist/FormBuilder/form-builder-resource.component.js +4487 -0
  245. package/dist/FormBuilder/form-builder-resource.component.js.map +1 -0
  246. package/dist/FormBuilder/form-builder-version-rail.helpers.d.ts +55 -0
  247. package/dist/FormBuilder/form-builder-version-rail.helpers.d.ts.map +1 -0
  248. package/dist/FormBuilder/form-builder-version-rail.helpers.js +73 -0
  249. package/dist/FormBuilder/form-builder-version-rail.helpers.js.map +1 -0
  250. package/dist/Home/home-application.d.ts +21 -1
  251. package/dist/Home/home-application.d.ts.map +1 -1
  252. package/dist/Home/home-application.js +60 -8
  253. package/dist/Home/home-application.js.map +1 -1
  254. package/dist/Home/home-dashboard.component.js +2 -2
  255. package/dist/Integration/components/activity/activity.component.d.ts.map +1 -1
  256. package/dist/Integration/components/activity/activity.component.js +236 -229
  257. package/dist/Integration/components/activity/activity.component.js.map +1 -1
  258. package/dist/Integration/components/connections/connections.component.js +390 -389
  259. package/dist/Integration/components/connections/connections.component.js.map +1 -1
  260. package/dist/Integration/components/overview/overview.component.js +2 -2
  261. package/dist/KnowledgeHub/components/analytics/analytics-resource.component.js +2 -2
  262. package/dist/KnowledgeHub/components/analytics/analytics-resource.component.js.map +1 -1
  263. package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.js +45 -44
  264. package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.js.map +1 -1
  265. package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.js +293 -291
  266. package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.js.map +1 -1
  267. package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.js +62 -61
  268. package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.js.map +1 -1
  269. package/dist/Lists/components/lists-browse-resource.component.d.ts +6 -2
  270. package/dist/Lists/components/lists-browse-resource.component.d.ts.map +1 -1
  271. package/dist/Lists/components/lists-browse-resource.component.js +525 -566
  272. package/dist/Lists/components/lists-browse-resource.component.js.map +1 -1
  273. package/dist/Lists/components/lists-categories-resource.component.js +135 -134
  274. package/dist/Lists/components/lists-categories-resource.component.js.map +1 -1
  275. package/dist/Lists/components/lists-my-lists-resource.component.js +199 -198
  276. package/dist/Lists/components/lists-my-lists-resource.component.js.map +1 -1
  277. package/dist/MCP/mcp-dashboard.component.js +443 -438
  278. package/dist/MCP/mcp-dashboard.component.js.map +1 -1
  279. package/dist/QueryBrowser/query-browser-resource.component.d.ts +14 -14
  280. package/dist/QueryBrowser/query-browser-resource.component.d.ts.map +1 -1
  281. package/dist/QueryBrowser/query-browser-resource.component.js +11 -10
  282. package/dist/QueryBrowser/query-browser-resource.component.js.map +1 -1
  283. package/dist/Scheduling/components/scheduling-activity.component.d.ts.map +1 -1
  284. package/dist/Scheduling/components/scheduling-activity.component.js +146 -147
  285. package/dist/Scheduling/components/scheduling-activity.component.js.map +1 -1
  286. package/dist/Scheduling/components/scheduling-jobs.component.js +76 -75
  287. package/dist/Scheduling/components/scheduling-jobs.component.js.map +1 -1
  288. package/dist/Scheduling/components/scheduling-overview.component.js +97 -96
  289. package/dist/Scheduling/components/scheduling-overview.component.js.map +1 -1
  290. package/dist/Scheduling/scheduling-dashboard.component.js +24 -22
  291. package/dist/Scheduling/scheduling-dashboard.component.js.map +1 -1
  292. package/dist/Scheduling/services/scheduling-instrumentation.service.d.ts +2 -0
  293. package/dist/Scheduling/services/scheduling-instrumentation.service.d.ts.map +1 -1
  294. package/dist/Scheduling/services/scheduling-instrumentation.service.js +1 -0
  295. package/dist/Scheduling/services/scheduling-instrumentation.service.js.map +1 -1
  296. package/dist/Testing/components/testing-dashboard-tab-resource.component.js +1 -1
  297. package/dist/Testing/components/testing-explorer.component.d.ts +14 -4
  298. package/dist/Testing/components/testing-explorer.component.d.ts.map +1 -1
  299. package/dist/Testing/components/testing-explorer.component.js +436 -427
  300. package/dist/Testing/components/testing-explorer.component.js.map +1 -1
  301. package/dist/Testing/components/testing-runs-resource.component.js +1 -1
  302. package/dist/Testing/components/testing-runs.component.js +116 -115
  303. package/dist/Testing/components/testing-runs.component.js.map +1 -1
  304. package/dist/Testing/testing-dashboard.component.js +6 -7
  305. package/dist/Testing/testing-dashboard.component.js.map +1 -1
  306. package/dist/VersionHistory/components/labels-resource.component.js +173 -172
  307. package/dist/VersionHistory/components/labels-resource.component.js.map +1 -1
  308. package/dist/VersionHistory/components/restore-resource.component.d.ts +6 -0
  309. package/dist/VersionHistory/components/restore-resource.component.d.ts.map +1 -1
  310. package/dist/VersionHistory/components/restore-resource.component.js +116 -92
  311. package/dist/VersionHistory/components/restore-resource.component.js.map +1 -1
  312. package/dist/ai-dashboards.module.d.ts +47 -35
  313. package/dist/ai-dashboards.module.d.ts.map +1 -1
  314. package/dist/ai-dashboards.module.js +40 -1
  315. package/dist/ai-dashboards.module.js.map +1 -1
  316. package/dist/communication-dashboards.module.d.ts +1 -1
  317. package/dist/communication-dashboards.module.d.ts.map +1 -1
  318. package/dist/communication-dashboards.module.js +7 -1
  319. package/dist/communication-dashboards.module.js.map +1 -1
  320. package/dist/component-studio-dashboards.module.d.ts +34 -22
  321. package/dist/component-studio-dashboards.module.d.ts.map +1 -1
  322. package/dist/component-studio-dashboards.module.js +65 -9
  323. package/dist/component-studio-dashboards.module.js.map +1 -1
  324. package/dist/testing-dashboards.module.d.ts +4 -5
  325. package/dist/testing-dashboards.module.d.ts.map +1 -1
  326. package/dist/testing-dashboards.module.js +7 -5
  327. package/dist/testing-dashboards.module.js.map +1 -1
  328. package/package.json +55 -53
@@ -26,7 +26,7 @@ import { DatabaseDesignerEngine } from '../services/database-designer.engine.js'
26
26
  import { DatabaseDesignerService } from '../services/database-designer.service.js';
27
27
  import { DatabaseModifyComponent } from './modify/database-modify.component.js';
28
28
  import * as i0 from "@angular/core";
29
- import * as i1 from "@memberjunction/ng-versions";
29
+ import * as i1 from "@memberjunction/ng-ui-components";
30
30
  import * as i2 from "./entity-list.component";
31
31
  import * as i3 from "./create-wizard/database-create-wizard.component";
32
32
  import * as i4 from "./modify/database-modify.component";
@@ -14,8 +14,8 @@ 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_10_For_4_Template(rf, ctx) { if (rf & 1) {
18
- i0.ɵɵelementStart(0, "option", 15);
17
+ function EntityListComponent_Conditional_11_For_4_Template(rf, ctx) { if (rf & 1) {
18
+ i0.ɵɵelementStart(0, "option", 16);
19
19
  i0.ɵɵtext(1);
20
20
  i0.ɵɵelementEnd();
21
21
  } if (rf & 2) {
@@ -24,14 +24,14 @@ function EntityListComponent_Conditional_10_For_4_Template(rf, ctx) { if (rf & 1
24
24
  i0.ɵɵadvance();
25
25
  i0.ɵɵtextInterpolate(schema_r3);
26
26
  } }
27
- function EntityListComponent_Conditional_10_Template(rf, ctx) { if (rf & 1) {
27
+ function EntityListComponent_Conditional_11_Template(rf, ctx) { if (rf & 1) {
28
28
  const _r1 = i0.ɵɵgetCurrentView();
29
- i0.ɵɵelementStart(0, "select", 13);
30
- i0.ɵɵlistener("change", function EntityListComponent_Conditional_10_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", 14);
29
+ i0.ɵɵelementStart(0, "select", 14);
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", 15);
32
32
  i0.ɵɵtext(2, "All Schemas");
33
33
  i0.ɵɵelementEnd();
34
- i0.ɵɵrepeaterCreate(3, EntityListComponent_Conditional_10_For_4_Template, 2, 2, "option", 15, i0.ɵɵrepeaterTrackByIdentity);
34
+ i0.ɵɵrepeaterCreate(3, EntityListComponent_Conditional_11_For_4_Template, 2, 2, "option", 16, i0.ɵɵrepeaterTrackByIdentity);
35
35
  i0.ɵɵelementEnd();
36
36
  } if (rf & 2) {
37
37
  const ctx_r1 = i0.ɵɵnextContext();
@@ -39,9 +39,9 @@ function EntityListComponent_Conditional_10_Template(rf, ctx) { if (rf & 1) {
39
39
  i0.ɵɵadvance(3);
40
40
  i0.ɵɵrepeater(ctx_r1.AvailableFilterSchemas);
41
41
  } }
42
- function EntityListComponent_Conditional_12_Template(rf, ctx) { if (rf & 1) {
43
- i0.ɵɵelementStart(0, "div", 11);
44
- i0.ɵɵelement(1, "i", 16);
42
+ function EntityListComponent_Conditional_13_Template(rf, ctx) { if (rf & 1) {
43
+ i0.ɵɵelementStart(0, "div", 12);
44
+ i0.ɵɵelement(1, "i", 17);
45
45
  i0.ɵɵtext(2);
46
46
  i0.ɵɵelementEnd();
47
47
  } if (rf & 2) {
@@ -49,77 +49,77 @@ function EntityListComponent_Conditional_12_Template(rf, ctx) { if (rf & 1) {
49
49
  i0.ɵɵadvance(2);
50
50
  i0.ɵɵtextInterpolate1(" ", ctx_r1.ErrorMessage, " ");
51
51
  } }
52
- function EntityListComponent_Conditional_13_For_2_Template(rf, ctx) { if (rf & 1) {
53
- i0.ɵɵelementStart(0, "div", 17);
54
- i0.ɵɵelement(1, "div", 18)(2, "div", 19)(3, "div", 20)(4, "div", 20)(5, "div", 19)(6, "div", 20);
52
+ function EntityListComponent_Conditional_14_For_2_Template(rf, ctx) { if (rf & 1) {
53
+ i0.ɵɵelementStart(0, "div", 18);
54
+ i0.ɵɵelement(1, "div", 19)(2, "div", 20)(3, "div", 21)(4, "div", 21)(5, "div", 20)(6, "div", 21);
55
55
  i0.ɵɵelementEnd();
56
56
  } }
57
- function EntityListComponent_Conditional_13_Template(rf, ctx) { if (rf & 1) {
58
- i0.ɵɵelementStart(0, "div", 12);
59
- i0.ɵɵrepeaterCreate(1, EntityListComponent_Conditional_13_For_2_Template, 7, 0, "div", 17, i0.ɵɵrepeaterTrackByIndex);
57
+ function EntityListComponent_Conditional_14_Template(rf, ctx) { if (rf & 1) {
58
+ i0.ɵɵelementStart(0, "div", 13);
59
+ i0.ɵɵrepeaterCreate(1, EntityListComponent_Conditional_14_For_2_Template, 7, 0, "div", 18, i0.ɵɵrepeaterTrackByIndex);
60
60
  i0.ɵɵelementEnd();
61
61
  } if (rf & 2) {
62
62
  i0.ɵɵadvance();
63
63
  i0.ɵɵrepeater(i0.ɵɵpureFunction0(0, _c0));
64
64
  } }
65
- function EntityListComponent_Conditional_14_Conditional_0_Conditional_7_Template(rf, ctx) { if (rf & 1) {
66
- i0.ɵɵelement(0, "i", 35);
65
+ function EntityListComponent_Conditional_15_Conditional_0_Conditional_7_Template(rf, ctx) { if (rf & 1) {
66
+ i0.ɵɵelement(0, "i", 36);
67
67
  } if (rf & 2) {
68
68
  const ctx_r1 = i0.ɵɵnextContext(3);
69
69
  i0.ɵɵclassProp("fa-chevron-up", ctx_r1.SortDirection === "asc")("fa-chevron-down", ctx_r1.SortDirection === "desc");
70
70
  } }
71
- function EntityListComponent_Conditional_14_Conditional_0_Conditional_8_Template(rf, ctx) { if (rf & 1) {
72
- i0.ɵɵelement(0, "i", 27);
71
+ function EntityListComponent_Conditional_15_Conditional_0_Conditional_8_Template(rf, ctx) { if (rf & 1) {
72
+ i0.ɵɵelement(0, "i", 28);
73
73
  } }
74
- function EntityListComponent_Conditional_14_Conditional_0_Conditional_12_Template(rf, ctx) { if (rf & 1) {
75
- i0.ɵɵelement(0, "i", 35);
74
+ function EntityListComponent_Conditional_15_Conditional_0_Conditional_12_Template(rf, ctx) { if (rf & 1) {
75
+ i0.ɵɵelement(0, "i", 36);
76
76
  } if (rf & 2) {
77
77
  const ctx_r1 = i0.ɵɵnextContext(3);
78
78
  i0.ɵɵclassProp("fa-chevron-up", ctx_r1.SortDirection === "asc")("fa-chevron-down", ctx_r1.SortDirection === "desc");
79
79
  } }
80
- function EntityListComponent_Conditional_14_Conditional_0_Conditional_13_Template(rf, ctx) { if (rf & 1) {
81
- i0.ɵɵelement(0, "i", 27);
80
+ function EntityListComponent_Conditional_15_Conditional_0_Conditional_13_Template(rf, ctx) { if (rf & 1) {
81
+ i0.ɵɵelement(0, "i", 28);
82
82
  } }
83
- function EntityListComponent_Conditional_14_Conditional_0_Conditional_17_Template(rf, ctx) { if (rf & 1) {
84
- i0.ɵɵelement(0, "i", 35);
83
+ function EntityListComponent_Conditional_15_Conditional_0_Conditional_17_Template(rf, ctx) { if (rf & 1) {
84
+ i0.ɵɵelement(0, "i", 36);
85
85
  } if (rf & 2) {
86
86
  const ctx_r1 = i0.ɵɵnextContext(3);
87
87
  i0.ɵɵclassProp("fa-chevron-up", ctx_r1.SortDirection === "asc")("fa-chevron-down", ctx_r1.SortDirection === "desc");
88
88
  } }
89
- function EntityListComponent_Conditional_14_Conditional_0_Conditional_18_Template(rf, ctx) { if (rf & 1) {
90
- i0.ɵɵelement(0, "i", 27);
89
+ function EntityListComponent_Conditional_15_Conditional_0_Conditional_18_Template(rf, ctx) { if (rf & 1) {
90
+ i0.ɵɵelement(0, "i", 28);
91
91
  } }
92
- function EntityListComponent_Conditional_14_Conditional_0_Conditional_22_Template(rf, ctx) { if (rf & 1) {
93
- i0.ɵɵelement(0, "i", 35);
92
+ function EntityListComponent_Conditional_15_Conditional_0_Conditional_22_Template(rf, ctx) { if (rf & 1) {
93
+ i0.ɵɵelement(0, "i", 36);
94
94
  } if (rf & 2) {
95
95
  const ctx_r1 = i0.ɵɵnextContext(3);
96
96
  i0.ɵɵclassProp("fa-chevron-up", ctx_r1.SortDirection === "asc")("fa-chevron-down", ctx_r1.SortDirection === "desc");
97
97
  } }
98
- function EntityListComponent_Conditional_14_Conditional_0_Conditional_23_Template(rf, ctx) { if (rf & 1) {
99
- i0.ɵɵelement(0, "i", 27);
98
+ function EntityListComponent_Conditional_15_Conditional_0_Conditional_23_Template(rf, ctx) { if (rf & 1) {
99
+ i0.ɵɵelement(0, "i", 28);
100
100
  } }
101
- function EntityListComponent_Conditional_14_Conditional_0_Conditional_27_Template(rf, ctx) { if (rf & 1) {
102
- i0.ɵɵelement(0, "i", 35);
101
+ function EntityListComponent_Conditional_15_Conditional_0_Conditional_27_Template(rf, ctx) { if (rf & 1) {
102
+ i0.ɵɵelement(0, "i", 36);
103
103
  } if (rf & 2) {
104
104
  const ctx_r1 = i0.ɵɵnextContext(3);
105
105
  i0.ɵɵclassProp("fa-chevron-up", ctx_r1.SortDirection === "asc")("fa-chevron-down", ctx_r1.SortDirection === "desc");
106
106
  } }
107
- function EntityListComponent_Conditional_14_Conditional_0_Conditional_28_Template(rf, ctx) { if (rf & 1) {
108
- i0.ɵɵelement(0, "i", 27);
107
+ function EntityListComponent_Conditional_15_Conditional_0_Conditional_28_Template(rf, ctx) { if (rf & 1) {
108
+ i0.ɵɵelement(0, "i", 28);
109
109
  } }
110
- function EntityListComponent_Conditional_14_Conditional_0_For_33_Conditional_5_Template(rf, ctx) { if (rf & 1) {
111
- i0.ɵɵelementStart(0, "span", 39);
110
+ function EntityListComponent_Conditional_15_Conditional_0_For_33_Conditional_5_Template(rf, ctx) { if (rf & 1) {
111
+ i0.ɵɵelementStart(0, "span", 40);
112
112
  i0.ɵɵtext(1, "You");
113
113
  i0.ɵɵelementEnd();
114
114
  } }
115
- function EntityListComponent_Conditional_14_Conditional_0_For_33_Conditional_13_Template(rf, ctx) { if (rf & 1) {
116
- i0.ɵɵelementStart(0, "span", 45);
117
- i0.ɵɵelement(1, "i", 53);
115
+ function EntityListComponent_Conditional_15_Conditional_0_For_33_Conditional_13_Template(rf, ctx) { if (rf & 1) {
116
+ i0.ɵɵelementStart(0, "span", 46);
117
+ i0.ɵɵelement(1, "i", 54);
118
118
  i0.ɵɵtext(2, " You ");
119
119
  i0.ɵɵelementEnd();
120
120
  } }
121
- function EntityListComponent_Conditional_14_Conditional_0_For_33_Conditional_14_Template(rf, ctx) { if (rf & 1) {
122
- i0.ɵɵelementStart(0, "span", 46);
121
+ function EntityListComponent_Conditional_15_Conditional_0_For_33_Conditional_14_Template(rf, ctx) { if (rf & 1) {
122
+ i0.ɵɵelementStart(0, "span", 47);
123
123
  i0.ɵɵtext(1);
124
124
  i0.ɵɵelementEnd();
125
125
  } if (rf & 2) {
@@ -127,33 +127,33 @@ function EntityListComponent_Conditional_14_Conditional_0_For_33_Conditional_14_
127
127
  i0.ɵɵadvance();
128
128
  i0.ɵɵtextInterpolate(entity_r6.ownerDisplayName);
129
129
  } }
130
- function EntityListComponent_Conditional_14_Conditional_0_For_33_Conditional_15_Template(rf, ctx) { if (rf & 1) {
131
- i0.ɵɵelementStart(0, "span", 47);
130
+ function EntityListComponent_Conditional_15_Conditional_0_For_33_Conditional_15_Template(rf, ctx) { if (rf & 1) {
131
+ i0.ɵɵelementStart(0, "span", 48);
132
132
  i0.ɵɵtext(1, "\u2014");
133
133
  i0.ɵɵelementEnd();
134
134
  } }
135
- function EntityListComponent_Conditional_14_Conditional_0_For_33_Template(rf, ctx) { if (rf & 1) {
135
+ function EntityListComponent_Conditional_15_Conditional_0_For_33_Template(rf, ctx) { if (rf & 1) {
136
136
  const _r5 = i0.ɵɵgetCurrentView();
137
- i0.ɵɵelementStart(0, "tr", 33)(1, "td", 36)(2, "div", 37)(3, "span", 38);
137
+ i0.ɵɵelementStart(0, "tr", 34)(1, "td", 37)(2, "div", 38)(3, "span", 39);
138
138
  i0.ɵɵtext(4);
139
139
  i0.ɵɵelementEnd();
140
- i0.ɵɵconditionalCreate(5, EntityListComponent_Conditional_14_Conditional_0_For_33_Conditional_5_Template, 2, 0, "span", 39);
140
+ i0.ɵɵconditionalCreate(5, EntityListComponent_Conditional_15_Conditional_0_For_33_Conditional_5_Template, 2, 0, "span", 40);
141
141
  i0.ɵɵelementEnd()();
142
- i0.ɵɵelementStart(6, "td", 40)(7, "span", 41);
142
+ i0.ɵɵelementStart(6, "td", 41)(7, "span", 42);
143
143
  i0.ɵɵtext(8);
144
144
  i0.ɵɵelementEnd()();
145
- i0.ɵɵelementStart(9, "td", 42)(10, "code", 43);
145
+ i0.ɵɵelementStart(9, "td", 43)(10, "code", 44);
146
146
  i0.ɵɵtext(11);
147
147
  i0.ɵɵelementEnd()();
148
- i0.ɵɵelementStart(12, "td", 44);
149
- i0.ɵɵconditionalCreate(13, EntityListComponent_Conditional_14_Conditional_0_For_33_Conditional_13_Template, 3, 0, "span", 45)(14, EntityListComponent_Conditional_14_Conditional_0_For_33_Conditional_14_Template, 2, 1, "span", 46)(15, EntityListComponent_Conditional_14_Conditional_0_For_33_Conditional_15_Template, 2, 0, "span", 47);
148
+ i0.ɵɵelementStart(12, "td", 45);
149
+ i0.ɵɵconditionalCreate(13, EntityListComponent_Conditional_15_Conditional_0_For_33_Conditional_13_Template, 3, 0, "span", 46)(14, EntityListComponent_Conditional_15_Conditional_0_For_33_Conditional_14_Template, 2, 1, "span", 47)(15, EntityListComponent_Conditional_15_Conditional_0_For_33_Conditional_15_Template, 2, 0, "span", 48);
150
150
  i0.ɵɵelementEnd();
151
- i0.ɵɵelementStart(16, "td", 48);
151
+ i0.ɵɵelementStart(16, "td", 49);
152
152
  i0.ɵɵtext(17);
153
153
  i0.ɵɵelementEnd();
154
- i0.ɵɵelementStart(18, "td", 49)(19, "div", 50)(20, "button", 51);
155
- i0.ɵɵlistener("click", function EntityListComponent_Conditional_14_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", 52);
154
+ i0.ɵɵelementStart(18, "td", 50)(19, "div", 51)(20, "button", 52);
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", 53);
157
157
  i0.ɵɵtext(22, " Edit ");
158
158
  i0.ɵɵelementEnd()()()();
159
159
  } if (rf & 2) {
@@ -172,53 +172,53 @@ function EntityListComponent_Conditional_14_Conditional_0_For_33_Template(rf, ct
172
172
  i0.ɵɵadvance(4);
173
173
  i0.ɵɵtextInterpolate(ctx_r1.FormatDate(entity_r6.createdAt));
174
174
  } }
175
- function EntityListComponent_Conditional_14_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) {
176
176
  i0.ɵɵtext(0);
177
177
  } if (rf & 2) {
178
178
  const ctx_r1 = i0.ɵɵnextContext(3);
179
179
  i0.ɵɵtextInterpolate1(" matching \"", ctx_r1.SearchTerm, "\" ");
180
180
  } }
181
- function EntityListComponent_Conditional_14_Conditional_0_Template(rf, ctx) { if (rf & 1) {
181
+ function EntityListComponent_Conditional_15_Conditional_0_Template(rf, ctx) { if (rf & 1) {
182
182
  const _r4 = i0.ɵɵgetCurrentView();
183
- i0.ɵɵelementStart(0, "div", 22)(1, "table", 23)(2, "thead")(3, "tr")(4, "th", 24);
184
- i0.ɵɵlistener("click", function EntityListComponent_Conditional_14_Conditional_0_Template_th_click_4_listener() { i0.ɵɵrestoreView(_r4); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.OnSortChange("entityName")); });
183
+ i0.ɵɵelementStart(0, "div", 23)(1, "table", 24)(2, "thead")(3, "tr")(4, "th", 25);
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")); });
185
185
  i0.ɵɵtext(5, " Entity Name ");
186
- i0.ɵɵelementStart(6, "span", 25);
187
- i0.ɵɵconditionalCreate(7, EntityListComponent_Conditional_14_Conditional_0_Conditional_7_Template, 1, 4, "i", 26)(8, EntityListComponent_Conditional_14_Conditional_0_Conditional_8_Template, 1, 0, "i", 27);
186
+ i0.ɵɵelementStart(6, "span", 26);
187
+ i0.ɵɵconditionalCreate(7, EntityListComponent_Conditional_15_Conditional_0_Conditional_7_Template, 1, 4, "i", 27)(8, EntityListComponent_Conditional_15_Conditional_0_Conditional_8_Template, 1, 0, "i", 28);
188
188
  i0.ɵɵelementEnd()();
189
- i0.ɵɵelementStart(9, "th", 28);
190
- i0.ɵɵlistener("click", function EntityListComponent_Conditional_14_Conditional_0_Template_th_click_9_listener() { i0.ɵɵrestoreView(_r4); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.OnSortChange("schemaName")); });
189
+ i0.ɵɵelementStart(9, "th", 29);
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")); });
191
191
  i0.ɵɵtext(10, " Schema ");
192
- i0.ɵɵelementStart(11, "span", 25);
193
- i0.ɵɵconditionalCreate(12, EntityListComponent_Conditional_14_Conditional_0_Conditional_12_Template, 1, 4, "i", 26)(13, EntityListComponent_Conditional_14_Conditional_0_Conditional_13_Template, 1, 0, "i", 27);
192
+ i0.ɵɵelementStart(11, "span", 26);
193
+ i0.ɵɵconditionalCreate(12, EntityListComponent_Conditional_15_Conditional_0_Conditional_12_Template, 1, 4, "i", 27)(13, EntityListComponent_Conditional_15_Conditional_0_Conditional_13_Template, 1, 0, "i", 28);
194
194
  i0.ɵɵelementEnd()();
195
- i0.ɵɵelementStart(14, "th", 29);
196
- i0.ɵɵlistener("click", function EntityListComponent_Conditional_14_Conditional_0_Template_th_click_14_listener() { i0.ɵɵrestoreView(_r4); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.OnSortChange("tableName")); });
195
+ i0.ɵɵelementStart(14, "th", 30);
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")); });
197
197
  i0.ɵɵtext(15, " Table ");
198
- i0.ɵɵelementStart(16, "span", 25);
199
- i0.ɵɵconditionalCreate(17, EntityListComponent_Conditional_14_Conditional_0_Conditional_17_Template, 1, 4, "i", 26)(18, EntityListComponent_Conditional_14_Conditional_0_Conditional_18_Template, 1, 0, "i", 27);
198
+ i0.ɵɵelementStart(16, "span", 26);
199
+ i0.ɵɵconditionalCreate(17, EntityListComponent_Conditional_15_Conditional_0_Conditional_17_Template, 1, 4, "i", 27)(18, EntityListComponent_Conditional_15_Conditional_0_Conditional_18_Template, 1, 0, "i", 28);
200
200
  i0.ɵɵelementEnd()();
201
- i0.ɵɵelementStart(19, "th", 30);
202
- i0.ɵɵlistener("click", function EntityListComponent_Conditional_14_Conditional_0_Template_th_click_19_listener() { i0.ɵɵrestoreView(_r4); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.OnSortChange("owner")); });
201
+ i0.ɵɵelementStart(19, "th", 31);
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")); });
203
203
  i0.ɵɵtext(20, " Owner ");
204
- i0.ɵɵelementStart(21, "span", 25);
205
- i0.ɵɵconditionalCreate(22, EntityListComponent_Conditional_14_Conditional_0_Conditional_22_Template, 1, 4, "i", 26)(23, EntityListComponent_Conditional_14_Conditional_0_Conditional_23_Template, 1, 0, "i", 27);
204
+ i0.ɵɵelementStart(21, "span", 26);
205
+ i0.ɵɵconditionalCreate(22, EntityListComponent_Conditional_15_Conditional_0_Conditional_22_Template, 1, 4, "i", 27)(23, EntityListComponent_Conditional_15_Conditional_0_Conditional_23_Template, 1, 0, "i", 28);
206
206
  i0.ɵɵelementEnd()();
207
- i0.ɵɵelementStart(24, "th", 31);
208
- i0.ɵɵlistener("click", function EntityListComponent_Conditional_14_Conditional_0_Template_th_click_24_listener() { i0.ɵɵrestoreView(_r4); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.OnSortChange("createdAt")); });
207
+ i0.ɵɵelementStart(24, "th", 32);
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")); });
209
209
  i0.ɵɵtext(25, " Created ");
210
- i0.ɵɵelementStart(26, "span", 25);
211
- i0.ɵɵconditionalCreate(27, EntityListComponent_Conditional_14_Conditional_0_Conditional_27_Template, 1, 4, "i", 26)(28, EntityListComponent_Conditional_14_Conditional_0_Conditional_28_Template, 1, 0, "i", 27);
210
+ i0.ɵɵelementStart(26, "span", 26);
211
+ i0.ɵɵconditionalCreate(27, EntityListComponent_Conditional_15_Conditional_0_Conditional_27_Template, 1, 4, "i", 27)(28, EntityListComponent_Conditional_15_Conditional_0_Conditional_28_Template, 1, 0, "i", 28);
212
212
  i0.ɵɵelementEnd()();
213
- i0.ɵɵelementStart(29, "th", 32);
213
+ i0.ɵɵelementStart(29, "th", 33);
214
214
  i0.ɵɵtext(30, "Actions");
215
215
  i0.ɵɵelementEnd()()();
216
216
  i0.ɵɵelementStart(31, "tbody");
217
- i0.ɵɵrepeaterCreate(32, EntityListComponent_Conditional_14_Conditional_0_For_33_Template, 23, 6, "tr", 33, i0.ɵɵcomponentInstance().TrackByEntityId, true);
217
+ i0.ɵɵrepeaterCreate(32, EntityListComponent_Conditional_15_Conditional_0_For_33_Template, 23, 6, "tr", 34, i0.ɵɵcomponentInstance().TrackByEntityId, true);
218
218
  i0.ɵɵelementEnd()()();
219
- i0.ɵɵelementStart(34, "div", 34);
219
+ i0.ɵɵelementStart(34, "div", 35);
220
220
  i0.ɵɵtext(35);
221
- i0.ɵɵconditionalCreate(36, EntityListComponent_Conditional_14_Conditional_0_Conditional_36_Template, 1, 1);
221
+ i0.ɵɵconditionalCreate(36, EntityListComponent_Conditional_15_Conditional_0_Conditional_36_Template, 1, 1);
222
222
  i0.ɵɵelementEnd();
223
223
  } if (rf & 2) {
224
224
  const ctx_r1 = i0.ɵɵnextContext(2);
@@ -239,16 +239,16 @@ function EntityListComponent_Conditional_14_Conditional_0_Template(rf, ctx) { if
239
239
  i0.ɵɵadvance();
240
240
  i0.ɵɵconditional(ctx_r1.SearchTerm ? 36 : -1);
241
241
  } }
242
- function EntityListComponent_Conditional_14_Conditional_1_Conditional_3_Template(rf, ctx) { if (rf & 1) {
242
+ function EntityListComponent_Conditional_15_Conditional_1_Conditional_3_Template(rf, ctx) { if (rf & 1) {
243
243
  const _r7 = i0.ɵɵgetCurrentView();
244
- i0.ɵɵelementStart(0, "h3", 56);
244
+ i0.ɵɵelementStart(0, "h3", 57);
245
245
  i0.ɵɵtext(1);
246
246
  i0.ɵɵelementEnd();
247
- i0.ɵɵelementStart(2, "p", 57);
247
+ i0.ɵɵelementStart(2, "p", 58);
248
248
  i0.ɵɵtext(3, "Try a different search term or clear the filter.");
249
249
  i0.ɵɵelementEnd();
250
- i0.ɵɵelementStart(4, "button", 58);
251
- i0.ɵɵlistener("click", function EntityListComponent_Conditional_14_Conditional_1_Conditional_3_Template_button_click_4_listener() { i0.ɵɵrestoreView(_r7); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.SearchTerm = ""); });
250
+ i0.ɵɵelementStart(4, "button", 59);
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 = ""); });
252
252
  i0.ɵɵtext(5, " Clear search ");
253
253
  i0.ɵɵelementEnd();
254
254
  } if (rf & 2) {
@@ -256,33 +256,33 @@ function EntityListComponent_Conditional_14_Conditional_1_Conditional_3_Template
256
256
  i0.ɵɵadvance();
257
257
  i0.ɵɵtextInterpolate1("No entities match \"", ctx_r1.SearchTerm, "\"");
258
258
  } }
259
- function EntityListComponent_Conditional_14_Conditional_1_Conditional_4_Template(rf, ctx) { if (rf & 1) {
259
+ function EntityListComponent_Conditional_15_Conditional_1_Conditional_4_Template(rf, ctx) { if (rf & 1) {
260
260
  const _r8 = i0.ɵɵgetCurrentView();
261
- i0.ɵɵelementStart(0, "h3", 56);
261
+ i0.ɵɵelementStart(0, "h3", 57);
262
262
  i0.ɵɵtext(1, "No entities yet");
263
263
  i0.ɵɵelementEnd();
264
- i0.ɵɵelementStart(2, "p", 57);
264
+ i0.ɵɵelementStart(2, "p", 58);
265
265
  i0.ɵɵtext(3, " Create your first user-defined entity. You can also use the Database Designer agent in a conversation for guided design. ");
266
266
  i0.ɵɵelementEnd();
267
- i0.ɵɵelementStart(4, "button", 59);
268
- i0.ɵɵlistener("click", function EntityListComponent_Conditional_14_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", 60);
267
+ i0.ɵɵelementStart(4, "button", 60);
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", 61);
270
270
  i0.ɵɵtext(6, " Create Entity ");
271
271
  i0.ɵɵelementEnd();
272
272
  } }
273
- function EntityListComponent_Conditional_14_Conditional_1_Template(rf, ctx) { if (rf & 1) {
274
- i0.ɵɵelementStart(0, "div", 21)(1, "div", 54);
275
- i0.ɵɵelement(2, "i", 55);
273
+ function EntityListComponent_Conditional_15_Conditional_1_Template(rf, ctx) { if (rf & 1) {
274
+ i0.ɵɵelementStart(0, "div", 22)(1, "div", 55);
275
+ i0.ɵɵelement(2, "i", 56);
276
276
  i0.ɵɵelementEnd();
277
- i0.ɵɵconditionalCreate(3, EntityListComponent_Conditional_14_Conditional_1_Conditional_3_Template, 6, 1)(4, EntityListComponent_Conditional_14_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);
278
278
  i0.ɵɵelementEnd();
279
279
  } if (rf & 2) {
280
280
  const ctx_r1 = i0.ɵɵnextContext(2);
281
281
  i0.ɵɵadvance(3);
282
282
  i0.ɵɵconditional(ctx_r1.SearchTerm ? 3 : 4);
283
283
  } }
284
- function EntityListComponent_Conditional_14_Template(rf, ctx) { if (rf & 1) {
285
- i0.ɵɵconditionalCreate(0, EntityListComponent_Conditional_14_Conditional_0_Template, 37, 8)(1, EntityListComponent_Conditional_14_Conditional_1_Template, 5, 1, "div", 21);
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", 22);
286
286
  } if (rf & 2) {
287
287
  const ctx_r1 = i0.ɵɵnextContext();
288
288
  i0.ɵɵconditional(ctx_r1.FilteredEntities.length > 0 ? 0 : !ctx_r1.IsLoading ? 1 : -1);
@@ -423,7 +423,7 @@ export class EntityListComponent {
423
423
  }
424
424
  }
425
425
  static ɵfac = function EntityListComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || EntityListComponent)(); };
426
- static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: EntityListComponent, selectors: [["mj-database-entity-list"]], outputs: { EditEntity: "EditEntity", ViewEntity: "ViewEntity", NewEntity: "NewEntity" }, standalone: false, decls: 15, vars: 9, consts: [["AriaLabel", "Database Designer", "Title", "Database Designer", "Subtitle", "Browse and create user-defined entities"], ["meta", ""], ["Label", "entities", 3, "Count", "Total"], ["actions", ""], [3, "Clicked", "Loading"], ["mjButton", "", "variant", "primary", "size", "sm", 3, "click"], ["aria-hidden", "true", 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"], [3, "Padding"], ["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"], [1, "fa-solid", "fa-plus"]], template: function EntityListComponent_Template(rf, ctx) { if (rf & 1) {
426
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: EntityListComponent, selectors: [["mj-database-entity-list"]], outputs: { EditEntity: "EditEntity", ViewEntity: "ViewEntity", NewEntity: "NewEntity" }, standalone: false, decls: 16, vars: 9, consts: [["AriaLabel", "Database Designer", "Title", "Database Designer", "Subtitle", "Browse and create user-defined entities"], ["meta", ""], ["Label", "entities", 3, "Count", "Total"], ["actions", ""], [3, "Clicked", "Loading"], ["mjButton", "", "variant", "primary", "size", "sm", 3, "click"], ["aria-hidden", "true", 1, "fa-solid", "fa-plus"], [1, "mj-action-label"], ["toolbar", ""], ["Placeholder", "Search by name, table, or schema...", 3, "ValueChange", "Value"], ["aria-label", "Filter by schema", 1, "mj-input", "schema-filter", 3, "value"], [3, "Padding"], ["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"], [1, "fa-solid", "fa-plus"]], template: function EntityListComponent_Template(rf, ctx) { if (rf & 1) {
427
427
  i0.ɵɵelementStart(0, "mj-page-header-interior", 0)(1, "div", 1);
428
428
  i0.ɵɵelement(2, "mj-stat-badge", 2);
429
429
  i0.ɵɵelementEnd();
@@ -433,40 +433,41 @@ export class EntityListComponent {
433
433
  i0.ɵɵelementStart(5, "button", 5);
434
434
  i0.ɵɵlistener("click", function EntityListComponent_Template_button_click_5_listener() { return ctx.OnNewEntity(); });
435
435
  i0.ɵɵelement(6, "i", 6);
436
- i0.ɵɵtext(7, " New Entity ");
437
- i0.ɵɵelementEnd()();
438
- i0.ɵɵelementStart(8, "div", 7)(9, "mj-page-search", 8);
439
- i0.ɵɵlistener("ValueChange", function EntityListComponent_Template_mj_page_search_ValueChange_9_listener($event) { return ctx.SearchTerm = $event; });
436
+ i0.ɵɵelementStart(7, "span", 7);
437
+ i0.ɵɵtext(8, "New Entity");
438
+ i0.ɵɵelementEnd()()();
439
+ i0.ɵɵelementStart(9, "div", 8)(10, "mj-page-search", 9);
440
+ i0.ɵɵlistener("ValueChange", function EntityListComponent_Template_mj_page_search_ValueChange_10_listener($event) { return ctx.SearchTerm = $event; });
440
441
  i0.ɵɵelementEnd();
441
- i0.ɵɵconditionalCreate(10, EntityListComponent_Conditional_10_Template, 5, 1, "select", 9);
442
+ i0.ɵɵconditionalCreate(11, EntityListComponent_Conditional_11_Template, 5, 1, "select", 10);
442
443
  i0.ɵɵelementEnd()();
443
- i0.ɵɵelementStart(11, "mj-page-body-interior", 10);
444
- i0.ɵɵconditionalCreate(12, EntityListComponent_Conditional_12_Template, 3, 1, "div", 11);
444
+ i0.ɵɵelementStart(12, "mj-page-body-interior", 11);
445
445
  i0.ɵɵconditionalCreate(13, EntityListComponent_Conditional_13_Template, 3, 1, "div", 12);
446
- i0.ɵɵconditionalCreate(14, EntityListComponent_Conditional_14_Template, 2, 1);
446
+ i0.ɵɵconditionalCreate(14, EntityListComponent_Conditional_14_Template, 3, 1, "div", 13);
447
+ i0.ɵɵconditionalCreate(15, EntityListComponent_Conditional_15_Template, 2, 1);
447
448
  i0.ɵɵelementEnd();
448
449
  } if (rf & 2) {
449
450
  i0.ɵɵadvance(2);
450
451
  i0.ɵɵproperty("Count", ctx.FilteredEntities.length)("Total", ctx.TotalEntityCount);
451
452
  i0.ɵɵadvance(2);
452
453
  i0.ɵɵproperty("Loading", ctx.IsLoading);
453
- i0.ɵɵadvance(5);
454
+ i0.ɵɵadvance(6);
454
455
  i0.ɵɵproperty("Value", ctx.SearchTerm);
455
456
  i0.ɵɵadvance();
456
- i0.ɵɵconditional(ctx.AvailableFilterSchemas.length > 1 ? 10 : -1);
457
+ i0.ɵɵconditional(ctx.AvailableFilterSchemas.length > 1 ? 11 : -1);
457
458
  i0.ɵɵadvance();
458
459
  i0.ɵɵproperty("Padding", false);
459
460
  i0.ɵɵadvance();
460
- i0.ɵɵconditional(ctx.ErrorMessage ? 12 : -1);
461
+ i0.ɵɵconditional(ctx.ErrorMessage ? 13 : -1);
461
462
  i0.ɵɵadvance();
462
- i0.ɵɵconditional(ctx.IsLoading && ctx.FilteredEntities.length === 0 ? 13 : -1);
463
+ i0.ɵɵconditional(ctx.IsLoading && ctx.FilteredEntities.length === 0 ? 14 : -1);
463
464
  i0.ɵɵadvance();
464
- i0.ɵɵconditional(!ctx.IsLoading || ctx.FilteredEntities.length > 0 ? 14 : -1);
465
+ i0.ɵɵconditional(!ctx.IsLoading || ctx.FilteredEntities.length > 0 ? 15 : -1);
465
466
  } }, dependencies: [i1.NgSelectOption, i1.ɵNgSelectMultipleOption, i2.MJButtonDirective, i2.MJPageHeaderInteriorComponent, i2.MJPageBodyInteriorComponent, i2.MJPageSearchComponent, i2.MJRefreshButtonComponent, i2.MJStatBadgeComponent], styles: ["\n\n\n\n\n\n\n\n[_nghost-%COMP%] {\n display: flex;\n flex-direction: column;\n height: 100%;\n overflow: hidden;\n background: var(--mj-bg-page);\n}\n\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\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 });
466
467
  }
467
468
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(EntityListComponent, [{
468
469
  type: Component,
469
- args: [{ standalone: false, selector: 'mj-database-entity-list', changeDetection: ChangeDetectionStrategy.OnPush, template: "<!--\n Database Designer is a sub-page of Admin \u2192 Data & Schema's left-nav shell, so\n per Section 9b/10 of plans/explorer-chrome-conventions.md we use the interior\n chrome pattern instead of <mj-page-layout> + <mj-page-header> (which would\n produce a doubled-header inside the Admin shell).\n-->\n<mj-page-header-interior\n AriaLabel=\"Database Designer\"\n Title=\"Database Designer\"\n Subtitle=\"Browse and create user-defined entities\">\n <!-- X-of-Y filtered count earns its meta spot per chrome conventions \u00A72.\n Material on this page (~300 entities per deployment) makes the\n narrowing signal valuable. -->\n <div meta>\n <mj-stat-badge\n [Count]=\"FilteredEntities.length\"\n [Total]=\"TotalEntityCount\"\n Label=\"entities\">\n </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\" aria-hidden=\"true\"></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-interior>\n\n<mj-page-body-interior [Padding]=\"false\">\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-interior>\n", styles: ["/*\n Database Designer entity-list \u2014 sub-page of Admin \u2192 Data & Schema. Host is a\n flex column so <mj-page-header-interior> pins at the top and <mj-page-body-interior>\n fills the rest. The body primitive owns its own flex/scroll/padding \u2014 this\n component just needs the host-level layout. See Section 10 of\n plans/explorer-chrome-conventions.md.\n*/\n:host {\n display: flex;\n flex-direction: column;\n height: 100%;\n overflow: hidden;\n background: var(--mj-bg-page);\n}\n\n/* 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"] }]
470
+ args: [{ standalone: false, selector: 'mj-database-entity-list', changeDetection: ChangeDetectionStrategy.OnPush, template: "<!--\n Database Designer is a sub-page of Admin \u2192 Data & Schema's left-nav shell, so\n per Section 9b/10 of plans/explorer-chrome-conventions.md we use the interior\n chrome pattern instead of <mj-page-layout> + <mj-page-header> (which would\n produce a doubled-header inside the Admin shell).\n-->\n<mj-page-header-interior\n AriaLabel=\"Database Designer\"\n Title=\"Database Designer\"\n Subtitle=\"Browse and create user-defined entities\">\n <!-- X-of-Y filtered count earns its meta spot per chrome conventions \u00A72.\n Material on this page (~300 entities per deployment) makes the\n narrowing signal valuable. -->\n <div meta>\n <mj-stat-badge\n [Count]=\"FilteredEntities.length\"\n [Total]=\"TotalEntityCount\"\n Label=\"entities\">\n </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\" aria-hidden=\"true\"></i> <span class=\"mj-action-label\">New Entity</span>\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-interior>\n\n<mj-page-body-interior [Padding]=\"false\">\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-interior>\n", styles: ["/*\n Database Designer entity-list \u2014 sub-page of Admin \u2192 Data & Schema. Host is a\n flex column so <mj-page-header-interior> pins at the top and <mj-page-body-interior>\n fills the rest. The body primitive owns its own flex/scroll/padding \u2014 this\n component just needs the host-level layout. See Section 10 of\n plans/explorer-chrome-conventions.md.\n*/\n:host {\n display: flex;\n flex-direction: column;\n height: 100%;\n overflow: hidden;\n background: var(--mj-bg-page);\n}\n\n/* 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"] }]
470
471
  }], null, { EditEntity: [{
471
472
  type: Output
472
473
  }], ViewEntity: [{