@manta-eu/react 0.1.0 → 0.1.2

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 (512) hide show
  1. package/README.md +100 -37
  2. package/dist/components/breadcrumbs/index.d.ts +26 -0
  3. package/dist/components/breadcrumbs/index.d.ts.map +1 -0
  4. package/dist/components/breadcrumbs/index.js +36 -0
  5. package/dist/components/channel-icon/index.d.ts +1 -2
  6. package/dist/components/channel-icon/index.d.ts.map +1 -1
  7. package/dist/components/channel-icon/index.js +0 -4
  8. package/dist/components/chip/index.d.ts +14 -0
  9. package/dist/components/chip/index.d.ts.map +1 -0
  10. package/dist/components/chip/index.js +8 -0
  11. package/dist/components/editable-text/index.d.ts +13 -0
  12. package/dist/components/editable-text/index.d.ts.map +1 -0
  13. package/dist/components/editable-text/index.js +61 -0
  14. package/dist/components/explain-fact/ExplainFact.d.ts +16 -0
  15. package/dist/components/explain-fact/ExplainFact.d.ts.map +1 -0
  16. package/dist/components/{rdfox-explain/RDFoxExplain.js → explain-fact/ExplainFact.js} +12 -12
  17. package/dist/components/explain-fact/OutdatedFactNotice.d.ts.map +1 -0
  18. package/dist/components/input/index.d.ts +2 -0
  19. package/dist/components/input/index.d.ts.map +1 -1
  20. package/dist/components/input/index.js +2 -0
  21. package/dist/components/input/input-numeric.d.ts +19 -0
  22. package/dist/components/input/input-numeric.d.ts.map +1 -0
  23. package/dist/components/input/input-numeric.js +85 -0
  24. package/dist/components/input/input-tags.d.ts +17 -0
  25. package/dist/components/input/input-tags.d.ts.map +1 -0
  26. package/dist/components/input/input-tags.js +46 -0
  27. package/dist/components/multi-select/index.d.ts +32 -0
  28. package/dist/components/multi-select/index.d.ts.map +1 -0
  29. package/dist/components/multi-select/index.js +33 -0
  30. package/dist/components/multi-select/toggle-value.d.ts +2 -0
  31. package/dist/components/multi-select/toggle-value.d.ts.map +1 -0
  32. package/dist/components/multi-select/toggle-value.js +3 -0
  33. package/dist/components/plan-row/index.d.ts +2 -1
  34. package/dist/components/plan-row/index.d.ts.map +1 -1
  35. package/dist/components/plan-row/index.js +2 -14
  36. package/dist/components/sidebar/index.d.ts +4 -1
  37. package/dist/components/sidebar/index.d.ts.map +1 -1
  38. package/dist/components/sidebar/index.js +2 -2
  39. package/dist/components/skeleton/index.js +1 -1
  40. package/dist/components/tool-invocation-card/ExplainFactResultDisplay.d.ts +9 -0
  41. package/dist/components/tool-invocation-card/ExplainFactResultDisplay.d.ts.map +1 -0
  42. package/dist/components/tool-invocation-card/{ExplainRDFoxResultDisplay.js → ExplainFactResultDisplay.js} +3 -3
  43. package/dist/components/tool-invocation-card/ToolOutputRenderer.js +2 -2
  44. package/dist/components/tool-invocation-card/types.d.ts +4 -4
  45. package/dist/components/tool-invocation-card/types.d.ts.map +1 -1
  46. package/dist/components/tool-invocation-card/types.js +2 -2
  47. package/dist/components/tree-multi-select/index.d.ts +1 -1
  48. package/dist/components/tree-multi-select/index.d.ts.map +1 -1
  49. package/dist/components/tree-multi-select/index.js +1 -1
  50. package/dist/components/tree-multi-select/tree-multi-select-rows.d.ts +2 -1
  51. package/dist/components/tree-multi-select/tree-multi-select-rows.d.ts.map +1 -1
  52. package/dist/components/tree-multi-select/tree-multi-select-rows.js +21 -31
  53. package/dist/components/tree-multi-select/tree-multi-select.d.ts +2 -0
  54. package/dist/components/tree-multi-select/tree-multi-select.d.ts.map +1 -1
  55. package/dist/components/tree-multi-select/tree-multi-select.js +21 -8
  56. package/dist/explain-fact/DatalogCode.d.ts.map +1 -0
  57. package/dist/explain-fact/EntityChip.d.ts.map +1 -0
  58. package/dist/explain-fact/EntityChip.js +17 -0
  59. package/dist/explain-fact/ExplainCompactView.d.ts.map +1 -0
  60. package/dist/explain-fact/ExplainFactState.d.ts +7 -0
  61. package/dist/explain-fact/ExplainFactState.d.ts.map +1 -0
  62. package/dist/{rdfox-explain/RDFoxExplainState.js → explain-fact/ExplainFactState.js} +1 -1
  63. package/dist/explain-fact/ExplainFullView.d.ts.map +1 -0
  64. package/dist/explain-fact/ExplainStates.d.ts.map +1 -0
  65. package/dist/explain-fact/ExplainTag.d.ts.map +1 -0
  66. package/dist/explain-fact/FactNotice.d.ts +7 -0
  67. package/dist/explain-fact/FactNotice.d.ts.map +1 -0
  68. package/dist/explain-fact/FactNotice.js +25 -0
  69. package/dist/explain-fact/FactValue.d.ts.map +1 -0
  70. package/dist/explain-fact/NumDot.d.ts.map +1 -0
  71. package/dist/explain-fact/PanelLabel.d.ts.map +1 -0
  72. package/dist/explain-fact/ProofSubjectHeader.d.ts.map +1 -0
  73. package/dist/explain-fact/ProvenanceBadge.d.ts.map +1 -0
  74. package/dist/{rdfox-explain → explain-fact}/ProvenanceBadge.js +2 -1
  75. package/dist/explain-fact/RuleVariableTypes.d.ts.map +1 -0
  76. package/dist/explain-fact/SubstitutedFactNotice.d.ts.map +1 -0
  77. package/dist/explain-fact/ValuePill.d.ts.map +1 -0
  78. package/dist/explain-fact/conclusion/ConclusionCard.d.ts.map +1 -0
  79. package/dist/explain-fact/conclusion/ConclusionSubtitle.d.ts.map +1 -0
  80. package/dist/{rdfox-explain → explain-fact}/conclusion/ConclusionSubtitle.js +3 -1
  81. package/dist/explain-fact/conclusion/index.d.ts.map +1 -0
  82. package/dist/explain-fact/explain-styles.d.ts.map +1 -0
  83. package/dist/explain-fact/fact-token.d.ts.map +1 -0
  84. package/dist/explain-fact/formula-hues.d.ts.map +1 -0
  85. package/dist/{rdfox-explain → explain-fact}/index.d.ts +2 -3
  86. package/dist/explain-fact/index.d.ts.map +1 -0
  87. package/dist/{rdfox-explain → explain-fact}/index.js +2 -3
  88. package/dist/explain-fact/inspector/ExplainInspector.d.ts.map +1 -0
  89. package/dist/explain-fact/inspector/ExplainInspector.js +20 -0
  90. package/dist/explain-fact/inspector/InspectorBindings.d.ts.map +1 -0
  91. package/dist/explain-fact/inspector/InspectorFact.d.ts.map +1 -0
  92. package/dist/explain-fact/inspector/InspectorHeader.d.ts.map +1 -0
  93. package/dist/{rdfox-explain → explain-fact}/inspector/InspectorRule.d.ts +3 -0
  94. package/dist/explain-fact/inspector/InspectorRule.d.ts.map +1 -0
  95. package/dist/{rdfox-explain → explain-fact}/inspector/InspectorRule.js +4 -5
  96. package/dist/explain-fact/inspector/SupportsSection.d.ts.map +1 -0
  97. package/dist/{rdfox-explain → explain-fact}/inspector/SupportsSection.js +2 -1
  98. package/dist/explain-fact/inspector/index.d.ts.map +1 -0
  99. package/dist/explain-fact/proof-tree/ProofFactLabel.d.ts.map +1 -0
  100. package/dist/explain-fact/proof-tree/ProofRowBadge.d.ts.map +1 -0
  101. package/dist/explain-fact/proof-tree/ProofRowContent.d.ts.map +1 -0
  102. package/dist/explain-fact/proof-tree/ProofRowValue.d.ts.map +1 -0
  103. package/dist/explain-fact/proof-tree/ProofTree.d.ts.map +1 -0
  104. package/dist/{rdfox-explain → explain-fact}/proof-tree/ProofTree.js +1 -1
  105. package/dist/explain-fact/proof-tree/ProofTreeFormulaFooter.d.ts.map +1 -0
  106. package/dist/explain-fact/proof-tree/ProofTreeNode.d.ts.map +1 -0
  107. package/dist/explain-fact/proof-tree/SupportsTag.d.ts.map +1 -0
  108. package/dist/explain-fact/proof-tree/SupportsTag.js +6 -0
  109. package/dist/explain-fact/proof-tree/index.d.ts.map +1 -0
  110. package/dist/explain-fact/proof-tree/proof-tree-navigation.d.ts.map +1 -0
  111. package/dist/explain-fact/proof-tree/proof-tree-root-view.d.ts.map +1 -0
  112. package/dist/explain-fact/proof-tree/visible-premises.d.ts.map +1 -0
  113. package/dist/explain-fact/rule-presentation.d.ts.map +1 -0
  114. package/dist/{rdfox-explain → explain-fact}/tree-model.d.ts +18 -9
  115. package/dist/explain-fact/tree-model.d.ts.map +1 -0
  116. package/dist/{rdfox-explain → explain-fact}/tree-model.js +19 -10
  117. package/dist/explain-fact/use-fact-measure.d.ts.map +1 -0
  118. package/dist/globals.css +383 -108
  119. package/dist/graph/nodes/AdMockupCard.js +1 -1
  120. package/dist/graph/nodes/CreativeMediaCard.js +1 -1
  121. package/dist/graph/nodes/EntityCardShell.js +1 -1
  122. package/dist/hooks/use-conversation-starters.d.ts +1 -1
  123. package/dist/hooks/useValidateActionPlan.d.ts.map +1 -1
  124. package/dist/index.d.ts +3 -0
  125. package/dist/index.d.ts.map +1 -1
  126. package/dist/index.js +3 -0
  127. package/dist/ldo-ui.d.ts +1 -1
  128. package/dist/ldo-ui.d.ts.map +1 -1
  129. package/dist/ldo-ui.js +1 -1
  130. package/dist/lib/datastore-route-paths.d.ts +2 -2
  131. package/dist/lib/datastore-route-paths.d.ts.map +1 -1
  132. package/dist/lib/datastore-route-paths.js +2 -2
  133. package/dist/lib/datastore-route-table.d.ts +36 -0
  134. package/dist/lib/datastore-route-table.d.ts.map +1 -0
  135. package/dist/lib/datastore-route-table.js +43 -0
  136. package/dist/lib/datastore-routes.d.ts +1 -1
  137. package/dist/lib/datastore-routes.d.ts.map +1 -1
  138. package/dist/lib/datastore-routes.js +1 -1
  139. package/dist/lib/spa-routes.d.ts +3 -0
  140. package/dist/lib/spa-routes.d.ts.map +1 -0
  141. package/dist/lib/spa-routes.js +5 -0
  142. package/dist/routes/data-explorer/components/Breadcrumbs.d.ts.map +1 -1
  143. package/dist/routes/data-explorer/components/Breadcrumbs.js +5 -5
  144. package/dist/routes/datastores/components/DatastoreFormDialog.d.ts +18 -0
  145. package/dist/routes/datastores/components/DatastoreFormDialog.d.ts.map +1 -0
  146. package/dist/routes/datastores/components/DatastoreFormDialog.js +27 -0
  147. package/dist/routes/datastores/components/DatastoreTableSkeleton.d.ts +2 -0
  148. package/dist/routes/datastores/components/DatastoreTableSkeleton.d.ts.map +1 -0
  149. package/dist/routes/datastores/components/DatastoreTableSkeleton.js +7 -0
  150. package/dist/routes/datastores/components/DatastoresToolbar.d.ts +18 -0
  151. package/dist/routes/datastores/components/DatastoresToolbar.d.ts.map +1 -0
  152. package/dist/routes/datastores/components/DatastoresToolbar.js +29 -0
  153. package/dist/routes/datastores/components/LinkUnlinkedDatastoreDialog.d.ts +14 -0
  154. package/dist/routes/datastores/components/LinkUnlinkedDatastoreDialog.d.ts.map +1 -0
  155. package/dist/routes/datastores/components/LinkUnlinkedDatastoreDialog.js +83 -0
  156. package/dist/routes/datastores/components/RenameDatastoreGroupDialog.d.ts +9 -0
  157. package/dist/routes/datastores/components/RenameDatastoreGroupDialog.d.ts.map +1 -0
  158. package/dist/routes/datastores/components/RenameDatastoreGroupDialog.js +21 -0
  159. package/dist/routes/datastores/components/StatusBadge.d.ts +21 -0
  160. package/dist/routes/datastores/components/StatusBadge.d.ts.map +1 -0
  161. package/dist/routes/datastores/components/StatusBadge.js +49 -0
  162. package/dist/routes/datastores/components/UnlinkedDatastoresPanel.d.ts +20 -0
  163. package/dist/routes/datastores/components/UnlinkedDatastoresPanel.d.ts.map +1 -0
  164. package/dist/routes/datastores/components/UnlinkedDatastoresPanel.js +13 -0
  165. package/dist/routes/datastores/flatten.d.ts +33 -0
  166. package/dist/routes/datastores/flatten.d.ts.map +1 -0
  167. package/dist/routes/datastores/flatten.js +86 -0
  168. package/dist/routes/datastores/hooks/useDatastoreColumns.d.ts +47 -0
  169. package/dist/routes/datastores/hooks/useDatastoreColumns.d.ts.map +1 -0
  170. package/dist/routes/datastores/hooks/useDatastoreColumns.js +165 -0
  171. package/dist/routes/datastores/hooks/useDatastoreTable.d.ts +14 -0
  172. package/dist/routes/datastores/hooks/useDatastoreTable.d.ts.map +1 -0
  173. package/dist/routes/datastores/hooks/useDatastoreTable.js +45 -0
  174. package/dist/routes/datastores/index.d.ts +2 -0
  175. package/dist/routes/datastores/index.d.ts.map +1 -0
  176. package/dist/routes/datastores/index.js +467 -0
  177. package/dist/routes/explain/ExplainEmpty.d.ts +2 -0
  178. package/dist/routes/explain/ExplainEmpty.d.ts.map +1 -0
  179. package/dist/routes/explain/ExplainEmpty.js +8 -0
  180. package/dist/routes/explain/index.d.ts +2 -0
  181. package/dist/routes/explain/index.d.ts.map +1 -0
  182. package/dist/routes/explain/index.js +16 -0
  183. package/dist/routes/explain/url-params.d.ts +9 -0
  184. package/dist/routes/explain/url-params.d.ts.map +1 -0
  185. package/dist/routes/explain/url-params.js +21 -0
  186. package/dist/routes/integrations/components/ConnectionRow.d.ts.map +1 -1
  187. package/dist/routes/integrations/components/ConnectionRow.js +1 -1
  188. package/dist/routes/integrations/connection-view.d.ts.map +1 -1
  189. package/dist/routes/integrations/connection-view.js +17 -1
  190. package/dist/routes/integrations/types.d.ts +2 -1
  191. package/dist/routes/integrations/types.d.ts.map +1 -1
  192. package/dist/routes/memories/components/ChangeScopeDialog.d.ts +12 -0
  193. package/dist/routes/memories/components/ChangeScopeDialog.d.ts.map +1 -0
  194. package/dist/routes/memories/components/ChangeScopeDialog.js +89 -0
  195. package/dist/routes/memories/components/ConflictMemoryCard.d.ts +13 -0
  196. package/dist/routes/memories/components/ConflictMemoryCard.d.ts.map +1 -0
  197. package/dist/routes/memories/components/ConflictMemoryCard.js +43 -0
  198. package/dist/routes/memories/components/ConflictTimeoutFooter.d.ts +7 -0
  199. package/dist/routes/memories/components/ConflictTimeoutFooter.d.ts.map +1 -0
  200. package/dist/routes/memories/components/ConflictTimeoutFooter.js +6 -0
  201. package/dist/routes/memories/components/ConsolidationReviewDialog.d.ts +61 -0
  202. package/dist/routes/memories/components/ConsolidationReviewDialog.d.ts.map +1 -0
  203. package/dist/routes/memories/components/ConsolidationReviewDialog.js +121 -0
  204. package/dist/routes/memories/components/EmptyStates.d.ts +18 -0
  205. package/dist/routes/memories/components/EmptyStates.d.ts.map +1 -0
  206. package/dist/routes/memories/components/EmptyStates.js +22 -0
  207. package/dist/routes/memories/components/ImportanceSlider.d.ts +11 -0
  208. package/dist/routes/memories/components/ImportanceSlider.d.ts.map +1 -0
  209. package/dist/routes/memories/components/ImportanceSlider.js +31 -0
  210. package/dist/routes/memories/components/LiveContextTab.d.ts +6 -0
  211. package/dist/routes/memories/components/LiveContextTab.d.ts.map +1 -0
  212. package/dist/routes/memories/components/LiveContextTab.js +37 -0
  213. package/dist/routes/memories/components/LoadingSkeleton.d.ts +2 -0
  214. package/dist/routes/memories/components/LoadingSkeleton.d.ts.map +1 -0
  215. package/dist/routes/memories/components/LoadingSkeleton.js +7 -0
  216. package/dist/routes/memories/components/MemoriesFilters.d.ts +31 -0
  217. package/dist/routes/memories/components/MemoriesFilters.d.ts.map +1 -0
  218. package/dist/routes/memories/components/MemoriesFilters.js +88 -0
  219. package/dist/routes/memories/components/MemoriesPanel.d.ts +6 -0
  220. package/dist/routes/memories/components/MemoriesPanel.d.ts.map +1 -0
  221. package/dist/routes/memories/components/MemoriesPanel.js +99 -0
  222. package/dist/routes/memories/components/MemoriesTabPanel.d.ts +30 -0
  223. package/dist/routes/memories/components/MemoriesTabPanel.d.ts.map +1 -0
  224. package/dist/routes/memories/components/MemoriesTabPanel.js +11 -0
  225. package/dist/routes/memories/components/MemoryActions.d.ts +12 -0
  226. package/dist/routes/memories/components/MemoryActions.d.ts.map +1 -0
  227. package/dist/routes/memories/components/MemoryActions.js +24 -0
  228. package/dist/routes/memories/components/MemoryFields.d.ts +32 -0
  229. package/dist/routes/memories/components/MemoryFields.d.ts.map +1 -0
  230. package/dist/routes/memories/components/MemoryFields.js +30 -0
  231. package/dist/routes/memories/components/MemoryFormDialog.d.ts +15 -0
  232. package/dist/routes/memories/components/MemoryFormDialog.d.ts.map +1 -0
  233. package/dist/routes/memories/components/MemoryFormDialog.js +299 -0
  234. package/dist/routes/memories/components/MemoryOnboardingWizard.d.ts +9 -0
  235. package/dist/routes/memories/components/MemoryOnboardingWizard.d.ts.map +1 -0
  236. package/dist/routes/memories/components/MemoryOnboardingWizard.js +99 -0
  237. package/dist/routes/memories/components/RestoreBlockedDialog.d.ts +8 -0
  238. package/dist/routes/memories/components/RestoreBlockedDialog.d.ts.map +1 -0
  239. package/dist/routes/memories/components/RestoreBlockedDialog.js +7 -0
  240. package/dist/routes/memories/components/SchemasTab.d.ts +6 -0
  241. package/dist/routes/memories/components/SchemasTab.d.ts.map +1 -0
  242. package/dist/routes/memories/components/SchemasTab.js +35 -0
  243. package/dist/routes/memories/components/SupersessionConflictDialog.d.ts +18 -0
  244. package/dist/routes/memories/components/SupersessionConflictDialog.d.ts.map +1 -0
  245. package/dist/routes/memories/components/SupersessionConflictDialog.js +78 -0
  246. package/dist/routes/memories/components/TeamPicker.d.ts +8 -0
  247. package/dist/routes/memories/components/TeamPicker.d.ts.map +1 -0
  248. package/dist/routes/memories/components/TeamPicker.js +25 -0
  249. package/dist/routes/memories/components/badges.d.ts +50 -0
  250. package/dist/routes/memories/components/badges.d.ts.map +1 -0
  251. package/dist/routes/memories/components/badges.js +106 -0
  252. package/dist/routes/memories/expiry-utils.d.ts +23 -0
  253. package/dist/routes/memories/expiry-utils.d.ts.map +1 -0
  254. package/dist/routes/memories/expiry-utils.js +97 -0
  255. package/dist/routes/memories/hooks/useConflictCheck.d.ts +18 -0
  256. package/dist/routes/memories/hooks/useConflictCheck.d.ts.map +1 -0
  257. package/dist/routes/memories/hooks/useConflictCheck.js +35 -0
  258. package/dist/routes/memories/hooks/useDuplicateDetection.d.ts +11 -0
  259. package/dist/routes/memories/hooks/useDuplicateDetection.d.ts.map +1 -0
  260. package/dist/routes/memories/hooks/useDuplicateDetection.js +73 -0
  261. package/dist/routes/memories/hooks/useLiveContext.d.ts +23 -0
  262. package/dist/routes/memories/hooks/useLiveContext.d.ts.map +1 -0
  263. package/dist/routes/memories/hooks/useLiveContext.js +102 -0
  264. package/dist/routes/memories/hooks/useMemoryColumns.d.ts +33 -0
  265. package/dist/routes/memories/hooks/useMemoryColumns.d.ts.map +1 -0
  266. package/dist/routes/memories/hooks/useMemoryColumns.js +188 -0
  267. package/dist/routes/memories/hooks/useMemoryTable.d.ts +33 -0
  268. package/dist/routes/memories/hooks/useMemoryTable.d.ts.map +1 -0
  269. package/dist/routes/memories/hooks/useMemoryTable.js +121 -0
  270. package/dist/routes/memories/index.d.ts +11 -0
  271. package/dist/routes/memories/index.d.ts.map +1 -0
  272. package/dist/routes/memories/index.js +472 -0
  273. package/dist/routes/memories/memory-form-validation.d.ts +8 -0
  274. package/dist/routes/memories/memory-form-validation.d.ts.map +1 -0
  275. package/dist/routes/memories/memory-form-validation.js +33 -0
  276. package/dist/routes/memories/memory-mutation-input.d.ts +6 -0
  277. package/dist/routes/memories/memory-mutation-input.d.ts.map +1 -0
  278. package/dist/routes/memories/memory-mutation-input.js +41 -0
  279. package/dist/routes/plans/components/actionPlansTableConfig.d.ts +3 -3
  280. package/dist/routes/rules/components/CreateRuleChatModal.d.ts +10 -0
  281. package/dist/routes/rules/components/CreateRuleChatModal.d.ts.map +1 -0
  282. package/dist/routes/rules/components/CreateRuleChatModal.js +52 -0
  283. package/dist/routes/rules/components/RuleActionabilityBadge.d.ts +8 -0
  284. package/dist/routes/rules/components/RuleActionabilityBadge.d.ts.map +1 -0
  285. package/dist/routes/rules/components/RuleActionabilityBadge.js +18 -0
  286. package/dist/routes/rules/components/RuleAffectedActionPlansSection.d.ts +6 -0
  287. package/dist/routes/rules/components/RuleAffectedActionPlansSection.d.ts.map +1 -0
  288. package/dist/routes/rules/components/RuleAffectedActionPlansSection.js +151 -0
  289. package/dist/routes/rules/components/RuleAst.d.ts +6 -0
  290. package/dist/routes/rules/components/RuleAst.d.ts.map +1 -0
  291. package/dist/routes/rules/components/RuleAst.js +23 -0
  292. package/dist/routes/rules/components/RuleDependentRulesSection.d.ts +6 -0
  293. package/dist/routes/rules/components/RuleDependentRulesSection.d.ts.map +1 -0
  294. package/dist/routes/rules/components/RuleDependentRulesSection.js +16 -0
  295. package/dist/routes/rules/components/RuleDetailsPage.d.ts +14 -0
  296. package/dist/routes/rules/components/RuleDetailsPage.d.ts.map +1 -0
  297. package/dist/routes/rules/components/RuleDetailsPage.js +51 -0
  298. package/dist/routes/rules/components/RuleProducersSection.d.ts +7 -0
  299. package/dist/routes/rules/components/RuleProducersSection.d.ts.map +1 -0
  300. package/dist/routes/rules/components/RuleProducersSection.js +10 -0
  301. package/dist/routes/rules/components/RuleSampleFactsSection.d.ts +7 -0
  302. package/dist/routes/rules/components/RuleSampleFactsSection.d.ts.map +1 -0
  303. package/dist/routes/rules/components/RuleSampleFactsSection.js +70 -0
  304. package/dist/routes/rules/components/RulesOverviewHeaderActions.d.ts +17 -0
  305. package/dist/routes/rules/components/RulesOverviewHeaderActions.d.ts.map +1 -0
  306. package/dist/routes/rules/components/RulesOverviewHeaderActions.js +55 -0
  307. package/dist/routes/rules/components/RulesOverviewPage.d.ts +13 -0
  308. package/dist/routes/rules/components/RulesOverviewPage.d.ts.map +1 -0
  309. package/dist/routes/rules/components/RulesOverviewPage.js +236 -0
  310. package/dist/routes/rules/components/SupportedActionShapesList/SupportedActionShapeDetails.d.ts +7 -0
  311. package/dist/routes/rules/components/SupportedActionShapesList/SupportedActionShapeDetails.d.ts.map +1 -0
  312. package/dist/routes/rules/components/SupportedActionShapesList/SupportedActionShapeDetails.js +47 -0
  313. package/dist/routes/rules/components/SupportedActionShapesList/SupportedActionShapesList.d.ts +8 -0
  314. package/dist/routes/rules/components/SupportedActionShapesList/SupportedActionShapesList.d.ts.map +1 -0
  315. package/dist/routes/rules/components/SupportedActionShapesList/SupportedActionShapesList.js +76 -0
  316. package/dist/routes/rules/components/SupportedActionShapesList/TokenList.d.ts +6 -0
  317. package/dist/routes/rules/components/SupportedActionShapesList/TokenList.d.ts.map +1 -0
  318. package/dist/routes/rules/components/SupportedActionShapesList/TokenList.js +9 -0
  319. package/dist/routes/rules/components/SupportedActionShapesList/index.d.ts +2 -0
  320. package/dist/routes/rules/components/SupportedActionShapesList/index.d.ts.map +1 -0
  321. package/dist/routes/rules/components/SupportedActionShapesList/index.js +1 -0
  322. package/dist/routes/rules/components/SupportedActionShapesList/shacl-shape.d.ts +20 -0
  323. package/dist/routes/rules/components/SupportedActionShapesList/shacl-shape.d.ts.map +1 -0
  324. package/dist/routes/rules/components/SupportedActionShapesList/shacl-shape.js +48 -0
  325. package/dist/routes/rules/components/datalog-editor/BindingsPreview.d.ts +9 -0
  326. package/dist/routes/rules/components/datalog-editor/BindingsPreview.d.ts.map +1 -0
  327. package/dist/routes/rules/components/datalog-editor/BindingsPreview.js +38 -0
  328. package/dist/routes/rules/components/datalog-editor/FactsPreview.d.ts +10 -0
  329. package/dist/routes/rules/components/datalog-editor/FactsPreview.d.ts.map +1 -0
  330. package/dist/routes/rules/components/datalog-editor/FactsPreview.js +43 -0
  331. package/dist/routes/rules/components/datalog-editor/PreviewPanel.d.ts +7 -0
  332. package/dist/routes/rules/components/datalog-editor/PreviewPanel.d.ts.map +1 -0
  333. package/dist/routes/rules/components/datalog-editor/PreviewPanel.js +8 -0
  334. package/dist/routes/rules/components/datalog-editor/QueryResults.d.ts +9 -0
  335. package/dist/routes/rules/components/datalog-editor/QueryResults.d.ts.map +1 -0
  336. package/dist/routes/rules/components/datalog-editor/QueryResults.js +22 -0
  337. package/dist/routes/rules/components/datalog-editor/SparqlQueryPanel.d.ts +11 -0
  338. package/dist/routes/rules/components/datalog-editor/SparqlQueryPanel.d.ts.map +1 -0
  339. package/dist/routes/rules/components/datalog-editor/SparqlQueryPanel.js +21 -0
  340. package/dist/routes/rules/components/rule-producers.d.ts +15 -0
  341. package/dist/routes/rules/components/rule-producers.d.ts.map +1 -0
  342. package/dist/routes/rules/components/rule-producers.js +76 -0
  343. package/dist/routes/rules/components/sample-facts-query.d.ts +9 -0
  344. package/dist/routes/rules/components/sample-facts-query.d.ts.map +1 -0
  345. package/dist/routes/rules/components/sample-facts-query.js +71 -0
  346. package/dist/routes/rules/datalog-editor.d.ts +6 -0
  347. package/dist/routes/rules/datalog-editor.d.ts.map +1 -0
  348. package/dist/routes/rules/datalog-editor.js +7 -0
  349. package/dist/routes/rules/hooks/useRuleFactsPreview.d.ts +53 -0
  350. package/dist/routes/rules/hooks/useRuleFactsPreview.d.ts.map +1 -0
  351. package/dist/routes/rules/hooks/useRuleFactsPreview.js +214 -0
  352. package/dist/routes/rules/hooks/useSparqlQueryExecution.d.ts +14 -0
  353. package/dist/routes/rules/hooks/useSparqlQueryExecution.d.ts.map +1 -0
  354. package/dist/routes/rules/hooks/useSparqlQueryExecution.js +77 -0
  355. package/dist/routes/rules/pages.d.ts +6 -0
  356. package/dist/routes/rules/pages.d.ts.map +1 -0
  357. package/dist/routes/rules/pages.js +7 -0
  358. package/dist/rules/RuleNameLink.d.ts +6 -0
  359. package/dist/rules/RuleNameLink.d.ts.map +1 -0
  360. package/dist/rules/RuleNameLink.js +8 -0
  361. package/package.json +64 -24
  362. package/src/globals.css +18 -18
  363. package/src/themes/manta-dark.css +1 -4
  364. package/src/themes/manta.css +1 -0
  365. package/src/themes/standard.css +12 -11
  366. package/dist/components/channel-icon/marketer-icon.d.ts +0 -4
  367. package/dist/components/channel-icon/marketer-icon.d.ts.map +0 -1
  368. package/dist/components/channel-icon/marketer-icon.js +0 -6
  369. package/dist/components/rdfox-explain/OutdatedFactNotice.d.ts.map +0 -1
  370. package/dist/components/rdfox-explain/RDFoxExplain.d.ts +0 -16
  371. package/dist/components/rdfox-explain/RDFoxExplain.d.ts.map +0 -1
  372. package/dist/components/tool-invocation-card/ExplainRDFoxResultDisplay.d.ts +0 -9
  373. package/dist/components/tool-invocation-card/ExplainRDFoxResultDisplay.d.ts.map +0 -1
  374. package/dist/lib/test-utils.d.ts +0 -4
  375. package/dist/lib/test-utils.d.ts.map +0 -1
  376. package/dist/lib/test-utils.js +0 -16
  377. package/dist/rdfox-explain/AbsentFactNotice.d.ts +0 -5
  378. package/dist/rdfox-explain/AbsentFactNotice.d.ts.map +0 -1
  379. package/dist/rdfox-explain/AbsentFactNotice.js +0 -6
  380. package/dist/rdfox-explain/DatalogCode.d.ts.map +0 -1
  381. package/dist/rdfox-explain/EntityChip.d.ts.map +0 -1
  382. package/dist/rdfox-explain/EntityChip.js +0 -9
  383. package/dist/rdfox-explain/ExplainCompactView.d.ts.map +0 -1
  384. package/dist/rdfox-explain/ExplainFullView.d.ts.map +0 -1
  385. package/dist/rdfox-explain/ExplainStates.d.ts.map +0 -1
  386. package/dist/rdfox-explain/ExplainTag.d.ts.map +0 -1
  387. package/dist/rdfox-explain/FactValue.d.ts.map +0 -1
  388. package/dist/rdfox-explain/NumDot.d.ts.map +0 -1
  389. package/dist/rdfox-explain/PanelLabel.d.ts.map +0 -1
  390. package/dist/rdfox-explain/ProofSubjectHeader.d.ts.map +0 -1
  391. package/dist/rdfox-explain/ProvenanceBadge.d.ts.map +0 -1
  392. package/dist/rdfox-explain/RDFoxExplainState.d.ts +0 -7
  393. package/dist/rdfox-explain/RDFoxExplainState.d.ts.map +0 -1
  394. package/dist/rdfox-explain/RuleVariableTypes.d.ts.map +0 -1
  395. package/dist/rdfox-explain/StoredFactNotice.d.ts +0 -5
  396. package/dist/rdfox-explain/StoredFactNotice.d.ts.map +0 -1
  397. package/dist/rdfox-explain/StoredFactNotice.js +0 -6
  398. package/dist/rdfox-explain/SubstitutedFactNotice.d.ts.map +0 -1
  399. package/dist/rdfox-explain/ValuePill.d.ts.map +0 -1
  400. package/dist/rdfox-explain/busy-aggregate-fixture.d.ts +0 -7
  401. package/dist/rdfox-explain/busy-aggregate-fixture.d.ts.map +0 -1
  402. package/dist/rdfox-explain/busy-aggregate-fixture.js +0 -6
  403. package/dist/rdfox-explain/conclusion/ConclusionCard.d.ts.map +0 -1
  404. package/dist/rdfox-explain/conclusion/ConclusionSubtitle.d.ts.map +0 -1
  405. package/dist/rdfox-explain/conclusion/index.d.ts.map +0 -1
  406. package/dist/rdfox-explain/explain-styles.d.ts.map +0 -1
  407. package/dist/rdfox-explain/fact-token.d.ts.map +0 -1
  408. package/dist/rdfox-explain/formula-hues.d.ts.map +0 -1
  409. package/dist/rdfox-explain/index.d.ts.map +0 -1
  410. package/dist/rdfox-explain/inspector/ExplainInspector.d.ts.map +0 -1
  411. package/dist/rdfox-explain/inspector/ExplainInspector.js +0 -22
  412. package/dist/rdfox-explain/inspector/InspectorBindings.d.ts.map +0 -1
  413. package/dist/rdfox-explain/inspector/InspectorFact.d.ts.map +0 -1
  414. package/dist/rdfox-explain/inspector/InspectorHeader.d.ts.map +0 -1
  415. package/dist/rdfox-explain/inspector/InspectorRule.d.ts.map +0 -1
  416. package/dist/rdfox-explain/inspector/SupportsSection.d.ts.map +0 -1
  417. package/dist/rdfox-explain/inspector/index.d.ts.map +0 -1
  418. package/dist/rdfox-explain/proof-tree/ProofFactLabel.d.ts.map +0 -1
  419. package/dist/rdfox-explain/proof-tree/ProofRowBadge.d.ts.map +0 -1
  420. package/dist/rdfox-explain/proof-tree/ProofRowContent.d.ts.map +0 -1
  421. package/dist/rdfox-explain/proof-tree/ProofRowValue.d.ts.map +0 -1
  422. package/dist/rdfox-explain/proof-tree/ProofTree.d.ts.map +0 -1
  423. package/dist/rdfox-explain/proof-tree/ProofTreeFormulaFooter.d.ts.map +0 -1
  424. package/dist/rdfox-explain/proof-tree/ProofTreeNode.d.ts.map +0 -1
  425. package/dist/rdfox-explain/proof-tree/SupportsTag.d.ts.map +0 -1
  426. package/dist/rdfox-explain/proof-tree/SupportsTag.js +0 -6
  427. package/dist/rdfox-explain/proof-tree/index.d.ts.map +0 -1
  428. package/dist/rdfox-explain/proof-tree/proof-tree-navigation.d.ts.map +0 -1
  429. package/dist/rdfox-explain/proof-tree/proof-tree-root-view.d.ts.map +0 -1
  430. package/dist/rdfox-explain/proof-tree/visible-premises.d.ts.map +0 -1
  431. package/dist/rdfox-explain/rule-presentation.d.ts.map +0 -1
  432. package/dist/rdfox-explain/tree-model.d.ts.map +0 -1
  433. package/dist/rdfox-explain/use-fact-measure.d.ts.map +0 -1
  434. package/dist/test-support.d.ts +0 -9
  435. package/dist/test-support.d.ts.map +0 -1
  436. package/dist/test-support.js +0 -18
  437. package/src/themes/marketer-dark.css +0 -70
  438. /package/dist/components/{rdfox-explain → explain-fact}/OutdatedFactNotice.d.ts +0 -0
  439. /package/dist/components/{rdfox-explain → explain-fact}/OutdatedFactNotice.js +0 -0
  440. /package/dist/{rdfox-explain → explain-fact}/DatalogCode.d.ts +0 -0
  441. /package/dist/{rdfox-explain → explain-fact}/DatalogCode.js +0 -0
  442. /package/dist/{rdfox-explain → explain-fact}/EntityChip.d.ts +0 -0
  443. /package/dist/{rdfox-explain → explain-fact}/ExplainCompactView.d.ts +0 -0
  444. /package/dist/{rdfox-explain → explain-fact}/ExplainCompactView.js +0 -0
  445. /package/dist/{rdfox-explain → explain-fact}/ExplainFullView.d.ts +0 -0
  446. /package/dist/{rdfox-explain → explain-fact}/ExplainFullView.js +0 -0
  447. /package/dist/{rdfox-explain → explain-fact}/ExplainStates.d.ts +0 -0
  448. /package/dist/{rdfox-explain → explain-fact}/ExplainStates.js +0 -0
  449. /package/dist/{rdfox-explain → explain-fact}/ExplainTag.d.ts +0 -0
  450. /package/dist/{rdfox-explain → explain-fact}/ExplainTag.js +0 -0
  451. /package/dist/{rdfox-explain → explain-fact}/FactValue.d.ts +0 -0
  452. /package/dist/{rdfox-explain → explain-fact}/FactValue.js +0 -0
  453. /package/dist/{rdfox-explain → explain-fact}/NumDot.d.ts +0 -0
  454. /package/dist/{rdfox-explain → explain-fact}/NumDot.js +0 -0
  455. /package/dist/{rdfox-explain → explain-fact}/PanelLabel.d.ts +0 -0
  456. /package/dist/{rdfox-explain → explain-fact}/PanelLabel.js +0 -0
  457. /package/dist/{rdfox-explain → explain-fact}/ProofSubjectHeader.d.ts +0 -0
  458. /package/dist/{rdfox-explain → explain-fact}/ProofSubjectHeader.js +0 -0
  459. /package/dist/{rdfox-explain → explain-fact}/ProvenanceBadge.d.ts +0 -0
  460. /package/dist/{rdfox-explain → explain-fact}/RuleVariableTypes.d.ts +0 -0
  461. /package/dist/{rdfox-explain → explain-fact}/RuleVariableTypes.js +0 -0
  462. /package/dist/{rdfox-explain → explain-fact}/SubstitutedFactNotice.d.ts +0 -0
  463. /package/dist/{rdfox-explain → explain-fact}/SubstitutedFactNotice.js +0 -0
  464. /package/dist/{rdfox-explain → explain-fact}/ValuePill.d.ts +0 -0
  465. /package/dist/{rdfox-explain → explain-fact}/ValuePill.js +0 -0
  466. /package/dist/{rdfox-explain → explain-fact}/conclusion/ConclusionCard.d.ts +0 -0
  467. /package/dist/{rdfox-explain → explain-fact}/conclusion/ConclusionCard.js +0 -0
  468. /package/dist/{rdfox-explain → explain-fact}/conclusion/ConclusionSubtitle.d.ts +0 -0
  469. /package/dist/{rdfox-explain → explain-fact}/conclusion/index.d.ts +0 -0
  470. /package/dist/{rdfox-explain → explain-fact}/conclusion/index.js +0 -0
  471. /package/dist/{rdfox-explain → explain-fact}/explain-styles.d.ts +0 -0
  472. /package/dist/{rdfox-explain → explain-fact}/explain-styles.js +0 -0
  473. /package/dist/{rdfox-explain → explain-fact}/fact-token.d.ts +0 -0
  474. /package/dist/{rdfox-explain → explain-fact}/fact-token.js +0 -0
  475. /package/dist/{rdfox-explain → explain-fact}/formula-hues.d.ts +0 -0
  476. /package/dist/{rdfox-explain → explain-fact}/formula-hues.js +0 -0
  477. /package/dist/{rdfox-explain → explain-fact}/inspector/ExplainInspector.d.ts +0 -0
  478. /package/dist/{rdfox-explain → explain-fact}/inspector/InspectorBindings.d.ts +0 -0
  479. /package/dist/{rdfox-explain → explain-fact}/inspector/InspectorBindings.js +0 -0
  480. /package/dist/{rdfox-explain → explain-fact}/inspector/InspectorFact.d.ts +0 -0
  481. /package/dist/{rdfox-explain → explain-fact}/inspector/InspectorFact.js +0 -0
  482. /package/dist/{rdfox-explain → explain-fact}/inspector/InspectorHeader.d.ts +0 -0
  483. /package/dist/{rdfox-explain → explain-fact}/inspector/InspectorHeader.js +0 -0
  484. /package/dist/{rdfox-explain → explain-fact}/inspector/SupportsSection.d.ts +0 -0
  485. /package/dist/{rdfox-explain → explain-fact}/inspector/index.d.ts +0 -0
  486. /package/dist/{rdfox-explain → explain-fact}/inspector/index.js +0 -0
  487. /package/dist/{rdfox-explain → explain-fact}/proof-tree/ProofFactLabel.d.ts +0 -0
  488. /package/dist/{rdfox-explain → explain-fact}/proof-tree/ProofFactLabel.js +0 -0
  489. /package/dist/{rdfox-explain → explain-fact}/proof-tree/ProofRowBadge.d.ts +0 -0
  490. /package/dist/{rdfox-explain → explain-fact}/proof-tree/ProofRowBadge.js +0 -0
  491. /package/dist/{rdfox-explain → explain-fact}/proof-tree/ProofRowContent.d.ts +0 -0
  492. /package/dist/{rdfox-explain → explain-fact}/proof-tree/ProofRowContent.js +0 -0
  493. /package/dist/{rdfox-explain → explain-fact}/proof-tree/ProofRowValue.d.ts +0 -0
  494. /package/dist/{rdfox-explain → explain-fact}/proof-tree/ProofRowValue.js +0 -0
  495. /package/dist/{rdfox-explain → explain-fact}/proof-tree/ProofTree.d.ts +0 -0
  496. /package/dist/{rdfox-explain → explain-fact}/proof-tree/ProofTreeFormulaFooter.d.ts +0 -0
  497. /package/dist/{rdfox-explain → explain-fact}/proof-tree/ProofTreeFormulaFooter.js +0 -0
  498. /package/dist/{rdfox-explain → explain-fact}/proof-tree/ProofTreeNode.d.ts +0 -0
  499. /package/dist/{rdfox-explain → explain-fact}/proof-tree/ProofTreeNode.js +0 -0
  500. /package/dist/{rdfox-explain → explain-fact}/proof-tree/SupportsTag.d.ts +0 -0
  501. /package/dist/{rdfox-explain → explain-fact}/proof-tree/index.d.ts +0 -0
  502. /package/dist/{rdfox-explain → explain-fact}/proof-tree/index.js +0 -0
  503. /package/dist/{rdfox-explain → explain-fact}/proof-tree/proof-tree-navigation.d.ts +0 -0
  504. /package/dist/{rdfox-explain → explain-fact}/proof-tree/proof-tree-navigation.js +0 -0
  505. /package/dist/{rdfox-explain → explain-fact}/proof-tree/proof-tree-root-view.d.ts +0 -0
  506. /package/dist/{rdfox-explain → explain-fact}/proof-tree/proof-tree-root-view.js +0 -0
  507. /package/dist/{rdfox-explain → explain-fact}/proof-tree/visible-premises.d.ts +0 -0
  508. /package/dist/{rdfox-explain → explain-fact}/proof-tree/visible-premises.js +0 -0
  509. /package/dist/{rdfox-explain → explain-fact}/rule-presentation.d.ts +0 -0
  510. /package/dist/{rdfox-explain → explain-fact}/rule-presentation.js +0 -0
  511. /package/dist/{rdfox-explain → explain-fact}/use-fact-measure.d.ts +0 -0
  512. /package/dist/{rdfox-explain → explain-fact}/use-fact-measure.js +0 -0
@@ -0,0 +1,21 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useState } from "react";
3
+ import { Button } from "#components/button/index";
4
+ import { Input } from "#components/input/index";
5
+ import { Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, } from "#components/modal/index";
6
+ export function RenameDatastoreGroupDialog(props) {
7
+ const { target, onSubmit, onCancel } = props;
8
+ const [name, setName] = useState(target.name);
9
+ const canSubmit = !!name.trim() && name.trim() !== target.name;
10
+ function submit() {
11
+ if (!canSubmit)
12
+ return;
13
+ onSubmit(name.trim());
14
+ }
15
+ return (_jsx(Dialog, { open: true, onOpenChange: (nextOpen) => !nextOpen && onCancel(), children: _jsxs(DialogContent, { className: "flex flex-col overflow-hidden", children: [_jsxs(DialogHeader, { children: [_jsx(DialogTitle, { text: target.isOrganization ? "Rename organization" : "Rename datastore" }), _jsx(DialogDescription, { children: "Only changes the display name - the datastore id stays the same, so nothing else needs updating." })] }), _jsx(Input, { autoFocus: true, label: target.isOrganization ? "Organization name" : "Name", value: name, onChange: (event) => setName(event.target.value), onKeyDown: (event) => {
16
+ if (event.key === "Enter")
17
+ submit();
18
+ if (event.key === "Escape")
19
+ onCancel();
20
+ } }), _jsxs(DialogFooter, { children: [_jsx(Button, { variant: "tertiary", onClick: onCancel, children: "Cancel" }), _jsx(Button, { onClick: submit, disabled: !canSubmit, children: "Rename" })] })] }) }));
21
+ }
@@ -0,0 +1,21 @@
1
+ import { type DatastoreStatus, type DatastoreStatusCategory } from "#components/datastore-management/tree";
2
+ export type DatastoreStatusFilterValue = "noDatastore" | "checking" | DatastoreStatusCategory;
3
+ export declare function datastoreStatusFilterValue(node: {
4
+ datastoreId?: string;
5
+ removed: boolean;
6
+ isUnlinked?: boolean;
7
+ }, status?: DatastoreStatus): DatastoreStatusFilterValue;
8
+ export declare const datastoreStatusFilterOptions: {
9
+ id: "ALL" | DatastoreStatusFilterValue;
10
+ label: string;
11
+ }[];
12
+ export type DatastoreStatusBadgeProps = {
13
+ node: {
14
+ datastoreId?: string;
15
+ removed: boolean;
16
+ isUnlinked?: boolean;
17
+ };
18
+ status?: DatastoreStatus;
19
+ };
20
+ export declare function DatastoreStatusBadge(props: DatastoreStatusBadgeProps): import("react/jsx-runtime").JSX.Element;
21
+ //# sourceMappingURL=StatusBadge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StatusBadge.d.ts","sourceRoot":"","sources":["../../../../src/routes/datastores/components/StatusBadge.tsx"],"names":[],"mappings":"AAGA,OAAO,EAEL,KAAK,eAAe,EACpB,KAAK,uBAAuB,EAC7B,MAAM,uCAAuC,CAAC;AAE/C,MAAM,MAAM,0BAA0B,GAAG,aAAa,GAAG,UAAU,GAAG,uBAAuB,CAAC;AAE9F,wBAAgB,0BAA0B,CACxC,IAAI,EAAE;IAAE,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAC;IAAC,UAAU,CAAC,EAAE,OAAO,CAAA;CAAE,EACtE,MAAM,CAAC,EAAE,eAAe,GACvB,0BAA0B,CAG5B;AAkCD,eAAO,MAAM,4BAA4B,EAAE;IAAE,EAAE,EAAE,KAAK,GAAG,0BAA0B,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,EAGnG,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG;IACtC,IAAI,EAAE;QAAE,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,OAAO,CAAC;QAAC,UAAU,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;IACvE,MAAM,CAAC,EAAE,eAAe,CAAC;CAC1B,CAAC;AAEF,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,yBAAyB,2CAapE"}
@@ -0,0 +1,49 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { isPresent } from "@manta-eu/lib/present";
3
+ import { LoaderCircle } from "lucide-react";
4
+ import { Badge } from "#components/badge/index";
5
+ import { datastoreStatusCategory, } from "#components/datastore-management/tree";
6
+ export function datastoreStatusFilterValue(node, status) {
7
+ if (!isPresent(node.datastoreId))
8
+ return "noDatastore";
9
+ return datastoreStatusCategory(node, status) ?? "checking";
10
+ }
11
+ // The only place these strings live: the badge and the filter dropdown both read from here.
12
+ const badgeConfigByFilterValue = {
13
+ ready: { label: "Ready", variant: "success" },
14
+ materializing: {
15
+ label: "Materializing",
16
+ variant: "warning",
17
+ spinning: true,
18
+ title: "KGC is creating its knowledge graph. This can take a few minutes.",
19
+ },
20
+ notRegistered: {
21
+ label: "Not registered",
22
+ variant: "destructive",
23
+ title: "This id never reached the datastore registry, so nothing will build it. Provision it again.",
24
+ },
25
+ offline: { label: "Offline", variant: "destructive" },
26
+ unavailable: { label: "Status unavailable", variant: "copy" },
27
+ checking: { label: "Checking…", variant: "copy", spinning: true },
28
+ removed: { label: "Removed", variant: "copy" },
29
+ noDatastore: { label: "No datastore", variant: "copy" },
30
+ };
31
+ const filterOptionOrder = [
32
+ "ready",
33
+ "materializing",
34
+ "notRegistered",
35
+ "offline",
36
+ "unavailable",
37
+ "removed",
38
+ ];
39
+ export const datastoreStatusFilterOptions = [
40
+ { id: "ALL", label: "All statuses" },
41
+ ...filterOptionOrder.map((id) => ({ id, label: badgeConfigByFilterValue[id].label })),
42
+ ];
43
+ export function DatastoreStatusBadge(props) {
44
+ const { node, status } = props;
45
+ if (!isPresent(node.datastoreId))
46
+ return _jsx("span", { className: "typography-tiny text-muted-foreground", children: "\u2014" });
47
+ const config = badgeConfigByFilterValue[datastoreStatusFilterValue(node, status)];
48
+ return (_jsxs(Badge, { size: "sm", variant: config.variant, className: "cursor-default", title: config.title, children: [config.spinning && _jsx(LoaderCircle, { className: "size-3 animate-spin" }), config.label] }));
49
+ }
@@ -0,0 +1,20 @@
1
+ import type { Table } from "@tanstack/react-table";
2
+ import type { ReactNode } from "react";
3
+ import type { DatastoreRow } from "../flatten.js";
4
+ import type { StatusFilter } from "../hooks/useDatastoreTable.js";
5
+ type UnlinkedDatastoresPanelProps = {
6
+ tabs: ReactNode;
7
+ table: Table<DatastoreRow>;
8
+ rows: DatastoreRow[];
9
+ searchQuery: string;
10
+ onSearchQueryChange: (query: string) => void;
11
+ statusFilter: StatusFilter;
12
+ onStatusFilterChange: (status: StatusFilter) => void;
13
+ columnLabels: Record<string, string>;
14
+ columnDefaultOrder: string[];
15
+ isLoading: boolean;
16
+ errorMessage: string | null;
17
+ };
18
+ export declare function UnlinkedDatastoresPanel(props: UnlinkedDatastoresPanelProps): import("react/jsx-runtime").JSX.Element;
19
+ export {};
20
+ //# sourceMappingURL=UnlinkedDatastoresPanel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UnlinkedDatastoresPanel.d.ts","sourceRoot":"","sources":["../../../../src/routes/datastores/components/UnlinkedDatastoresPanel.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAEnD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAQ/D,KAAK,4BAA4B,GAAG;IAClC,IAAI,EAAE,SAAS,CAAC;IAChB,KAAK,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC;IAC3B,IAAI,EAAE,YAAY,EAAE,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,mBAAmB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7C,YAAY,EAAE,YAAY,CAAC;IAC3B,oBAAoB,EAAE,CAAC,MAAM,EAAE,YAAY,KAAK,IAAI,CAAC;IACrD,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,kBAAkB,EAAE,MAAM,EAAE,CAAC;IAC7B,SAAS,EAAE,OAAO,CAAC;IACnB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B,CAAC;AAEF,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,4BAA4B,2CAmD1E"}
@@ -0,0 +1,13 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { isPresent } from "@manta-eu/lib/present";
3
+ import { Unlink } from "lucide-react";
4
+ import { DatastoresToolbar } from "./DatastoresToolbar.js";
5
+ import { DatastoreTableSkeleton } from "./DatastoreTableSkeleton.js";
6
+ import { Banner } from "#components/banner/index";
7
+ import { EmptyState } from "#components/empty-state/index";
8
+ import { DataTable } from "#components/table/index";
9
+ import { TablePagination } from "#components/table-pagination/index";
10
+ export function UnlinkedDatastoresPanel(props) {
11
+ const { tabs, table, rows, searchQuery, onSearchQueryChange, statusFilter, onStatusFilterChange, columnLabels, columnDefaultOrder, isLoading, errorMessage, } = props;
12
+ return (_jsxs(_Fragment, { children: [_jsx("div", { className: "border-b border-muted-border px-5 py-3 shrink-0", children: _jsx(DatastoresToolbar, { tabs: tabs, searchQuery: searchQuery, onSearchQueryChange: onSearchQueryChange, searchPlaceholder: "Search by datastore ID...", statusFilter: statusFilter, onStatusFilterChange: onStatusFilterChange, table: table, columnLabels: columnLabels, columnDefaultOrder: columnDefaultOrder }) }), _jsxs("div", { className: "flex-1 overflow-auto p-4", children: [isLoading && _jsx(DatastoreTableSkeleton, {}), errorMessage && _jsx(Banner, { label: errorMessage }), !isLoading && !isPresent(rows) && (_jsx(EmptyState, { icon: Unlink, title: "No unlinked datastores", description: "Datastores that exist without an organization or group pointing at them show up here, ready to be linked." })), !isLoading && isPresent(rows) && (_jsxs("div", { className: "flex flex-col gap-3", children: [_jsx("div", { className: "rounded-xl border border-muted-border bg-card overflow-hidden", children: _jsx(DataTable, { table: table, noResultsMessage: "No unlinked datastores match your filters." }) }), _jsx(TablePagination, { table: table, total: rows.length })] }))] })] }));
13
+ }
@@ -0,0 +1,33 @@
1
+ import type { GQLDatastoreTreeNode } from "@manta-eu/client";
2
+ import { type Realm } from "@manta-eu/ldo/realm";
3
+ import type { DatastoreStatusFilterValue } from "./components/StatusBadge.js";
4
+ export type DatastoreRow = {
5
+ id: string;
6
+ name: string;
7
+ depth: number;
8
+ organizationId: string;
9
+ organizationName: string;
10
+ organizationAlias: string;
11
+ path: string;
12
+ datastoreId?: string;
13
+ removed: boolean;
14
+ provisionedAt?: string;
15
+ provisionedBy?: string;
16
+ isOrganization: boolean;
17
+ isRealmDefault?: boolean;
18
+ isUnlinked?: boolean;
19
+ };
20
+ export declare function realmDefaultRow(datastoreId: Realm): DatastoreRow;
21
+ export type DatastoreRowVisibility = {
22
+ showArchived: boolean;
23
+ showUnprovisioned: boolean;
24
+ };
25
+ export declare function visibleDatastoreRows(rows: DatastoreRow[], visibility: DatastoreRowVisibility): DatastoreRow[];
26
+ export declare function hiddenRowCount(rows: DatastoreRow[], visibility: DatastoreRowVisibility, key: keyof DatastoreRowVisibility, shownCount: number): number;
27
+ export declare function organizationNameKey(name: string): string;
28
+ export declare function existingOrganizationNameKeys(rows: DatastoreRow[]): Set<string>;
29
+ export declare function organizationNames(rows: DatastoreRow[]): string[];
30
+ export declare function visibilityForStatusFilter(visibility: DatastoreRowVisibility, status: DatastoreStatusFilterValue | "ALL"): DatastoreRowVisibility;
31
+ export declare function unlinkedDatastoreRow(datastoreId: string): DatastoreRow;
32
+ export declare function toDatastoreRows(nodes: GQLDatastoreTreeNode[]): DatastoreRow[];
33
+ //# sourceMappingURL=flatten.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flatten.d.ts","sourceRoot":"","sources":["../../../src/routes/datastores/flatten.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAmB,KAAK,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAGlE,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AAG3E,MAAM,MAAM,YAAY,GAAG;IAEzB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,EAAE,MAAM,CAAC;IACzB,iBAAiB,EAAE,MAAM,CAAC;IAE1B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,OAAO,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB,cAAc,EAAE,OAAO,CAAC;IAExB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB,CAAC;AAEF,wBAAgB,eAAe,CAAC,WAAW,EAAE,KAAK,GAAG,YAAY,CAchE;AAED,MAAM,MAAM,sBAAsB,GAAG;IACnC,YAAY,EAAE,OAAO,CAAC;IACtB,iBAAiB,EAAE,OAAO,CAAC;CAC5B,CAAC;AAcF,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,YAAY,EAAE,EAAE,UAAU,EAAE,sBAAsB,GAAG,YAAY,EAAE,CAG7G;AAED,wBAAgB,cAAc,CAC5B,IAAI,EAAE,YAAY,EAAE,EACpB,UAAU,EAAE,sBAAsB,EAClC,GAAG,EAAE,MAAM,sBAAsB,EACjC,UAAU,EAAE,MAAM,GACjB,MAAM,CAIR;AAGD,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAExD;AAED,wBAAgB,4BAA4B,CAAC,IAAI,EAAE,YAAY,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,CAE9E;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,YAAY,EAAE,GAAG,MAAM,EAAE,CAEhE;AAED,wBAAgB,yBAAyB,CACvC,UAAU,EAAE,sBAAsB,EAClC,MAAM,EAAE,0BAA0B,GAAG,KAAK,GACzC,sBAAsB,CAMxB;AAED,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,YAAY,CActE;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,oBAAoB,EAAE,GAAG,YAAY,EAAE,CAe7E"}
@@ -0,0 +1,86 @@
1
+ import { realmVocabLabel } from "@manta-eu/ldo/realm";
2
+ import { isPresent } from "@manta-eu/lib/present";
3
+ import { match } from "ts-pattern";
4
+ export function realmDefaultRow(datastoreId) {
5
+ return {
6
+ id: datastoreId,
7
+ name: realmVocabLabel(datastoreId),
8
+ depth: 0,
9
+ organizationId: "",
10
+ organizationName: "",
11
+ organizationAlias: "",
12
+ path: "",
13
+ datastoreId,
14
+ removed: false,
15
+ isOrganization: false,
16
+ isRealmDefault: true,
17
+ };
18
+ }
19
+ function matchesVisibility(row, visibility) {
20
+ return (visibility.showArchived || !row.removed) && (visibility.showUnprovisioned || isPresent(row.datastoreId));
21
+ }
22
+ function hasVisibleDescendant(rows, shown, index) {
23
+ const depth = rows[index]?.depth ?? 0;
24
+ for (let i = index + 1; i < rows.length && (rows[i]?.depth ?? 0) > depth; i++) {
25
+ if (shown[i])
26
+ return true;
27
+ }
28
+ return false;
29
+ }
30
+ export function visibleDatastoreRows(rows, visibility) {
31
+ const shown = rows.map((row) => matchesVisibility(row, visibility));
32
+ return rows.filter((_row, index) => shown[index] || hasVisibleDescendant(rows, shown, index));
33
+ }
34
+ export function hiddenRowCount(rows, visibility, key, shownCount) {
35
+ if (visibility[key])
36
+ return 0;
37
+ return visibleDatastoreRows(rows, { ...visibility, [key]: true }).length - shownCount;
38
+ }
39
+ // Matches Keycloak's own org lookup (ensureOrganization), which is case-insensitive and trims too.
40
+ export function organizationNameKey(name) {
41
+ return name.trim().toLowerCase();
42
+ }
43
+ export function existingOrganizationNameKeys(rows) {
44
+ return new Set(rows.filter((row) => row.isOrganization).map((row) => organizationNameKey(row.organizationName)));
45
+ }
46
+ export function organizationNames(rows) {
47
+ return [...new Set(rows.filter((row) => row.isOrganization).map((row) => row.organizationName))].sort();
48
+ }
49
+ export function visibilityForStatusFilter(visibility, status) {
50
+ return match(status)
51
+ .with("removed", () => ({ ...visibility, showArchived: true }))
52
+ .with("noDatastore", () => ({ ...visibility, showUnprovisioned: true }))
53
+ .with("ALL", "ready", "materializing", "notRegistered", "offline", "unavailable", "checking", () => visibility)
54
+ .exhaustive();
55
+ }
56
+ export function unlinkedDatastoreRow(datastoreId) {
57
+ return {
58
+ id: `unlinked:${datastoreId}`,
59
+ name: datastoreId,
60
+ depth: 0,
61
+ organizationId: "",
62
+ organizationName: "",
63
+ organizationAlias: "",
64
+ path: "",
65
+ datastoreId,
66
+ removed: false,
67
+ isOrganization: false,
68
+ isUnlinked: true,
69
+ };
70
+ }
71
+ export function toDatastoreRows(nodes) {
72
+ return nodes.map((node) => ({
73
+ id: node.id,
74
+ name: node.name,
75
+ depth: node.depth,
76
+ organizationId: node.organizationId,
77
+ organizationName: node.organizationName,
78
+ organizationAlias: node.organizationAlias,
79
+ path: node.path,
80
+ datastoreId: node.datastoreId ?? undefined,
81
+ removed: node.removed,
82
+ provisionedAt: node.provisionedAt ?? undefined,
83
+ provisionedBy: node.provisionedBy ?? undefined,
84
+ isOrganization: node.isOrganization,
85
+ }));
86
+ }
@@ -0,0 +1,47 @@
1
+ import type { ColumnDef } from "@tanstack/react-table";
2
+ import type { DatastoreRow } from "../flatten.js";
3
+ import { type DatastoreStatus } from "#components/datastore-management/tree";
4
+ export declare const datastoreColumnIds: {
5
+ readonly name: "name";
6
+ readonly organizationName: "organizationName";
7
+ readonly datastoreId: "datastoreId";
8
+ readonly suggestedMatch: "suggestedMatch";
9
+ readonly status: "status";
10
+ readonly provisionedBy: "provisionedBy";
11
+ readonly provisionedAt: "provisionedAt";
12
+ readonly actions: "actions";
13
+ };
14
+ export declare const datastoreColumnLabels: {
15
+ name: string;
16
+ organizationName: string;
17
+ datastoreId: string;
18
+ status: string;
19
+ provisionedBy: string;
20
+ provisionedAt: string;
21
+ };
22
+ export declare const defaultColumnOrder: ("name" | "status" | "actions" | "datastoreId" | "organizationName" | "suggestedMatch" | "provisionedBy" | "provisionedAt")[];
23
+ export declare const unlinkedColumnLabels: Record<string, string>;
24
+ export declare const unlinkedColumnOrder: ("status" | "actions" | "datastoreId" | "suggestedMatch")[];
25
+ type UseDatastoreColumnsArgs = {
26
+ statusByDatastoreId: Record<string, DatastoreStatus>;
27
+ currentDatastoreId?: string;
28
+ isSwitching?: boolean;
29
+ indented: boolean;
30
+ matchableRowIds: Set<string>;
31
+ suggestedMatchByDatastoreId?: Record<string, DatastoreRow>;
32
+ onSelect: (row: DatastoreRow) => void;
33
+ onAddChild: (row: DatastoreRow) => void;
34
+ onLink: (row: DatastoreRow) => void;
35
+ onProvision: (row: DatastoreRow) => void;
36
+ onLinkExisting: (row: DatastoreRow) => void;
37
+ onRemove: (row: DatastoreRow) => void;
38
+ onRestore: (row: DatastoreRow) => void;
39
+ onRename: (row: DatastoreRow) => void;
40
+ onRegister: (row: DatastoreRow) => void;
41
+ onManageUsers: (row: DatastoreRow) => void;
42
+ onBringOnline: (row: DatastoreRow) => void;
43
+ isBringingOnline?: boolean;
44
+ };
45
+ export declare function useDatastoreColumns(args: UseDatastoreColumnsArgs): ColumnDef<DatastoreRow>[];
46
+ export {};
47
+ //# sourceMappingURL=useDatastoreColumns.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useDatastoreColumns.d.ts","sourceRoot":"","sources":["../../../../src/routes/datastores/hooks/useDatastoreColumns.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAuBvD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAG/C,OAAO,EAA4C,KAAK,eAAe,EAAE,MAAM,uCAAuC,CAAC;AAYvH,eAAO,MAAM,kBAAkB;;;;;;;;;CASrB,CAAC;AASX,eAAO,MAAM,qBAAqB;;;;;;;CAOkB,CAAC;AAErD,eAAO,MAAM,kBAAkB,+HAAoC,CAAC;AAEpE,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAGvD,CAAC;AAEF,eAAO,MAAM,mBAAmB,6DAK/B,CAAC;AAcF,KAAK,uBAAuB,GAAG;IAC7B,mBAAmB,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IACrD,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB,QAAQ,EAAE,OAAO,CAAC;IAClB,eAAe,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC7B,2BAA2B,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IAC3D,QAAQ,EAAE,CAAC,GAAG,EAAE,YAAY,KAAK,IAAI,CAAC;IACtC,UAAU,EAAE,CAAC,GAAG,EAAE,YAAY,KAAK,IAAI,CAAC;IACxC,MAAM,EAAE,CAAC,GAAG,EAAE,YAAY,KAAK,IAAI,CAAC;IACpC,WAAW,EAAE,CAAC,GAAG,EAAE,YAAY,KAAK,IAAI,CAAC;IACzC,cAAc,EAAE,CAAC,GAAG,EAAE,YAAY,KAAK,IAAI,CAAC;IAC5C,QAAQ,EAAE,CAAC,GAAG,EAAE,YAAY,KAAK,IAAI,CAAC;IACtC,SAAS,EAAE,CAAC,GAAG,EAAE,YAAY,KAAK,IAAI,CAAC;IACvC,QAAQ,EAAE,CAAC,GAAG,EAAE,YAAY,KAAK,IAAI,CAAC;IACtC,UAAU,EAAE,CAAC,GAAG,EAAE,YAAY,KAAK,IAAI,CAAC;IACxC,aAAa,EAAE,CAAC,GAAG,EAAE,YAAY,KAAK,IAAI,CAAC;IAC3C,aAAa,EAAE,CAAC,GAAG,EAAE,YAAY,KAAK,IAAI,CAAC;IAC3C,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B,CAAC;AAEF,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,uBAAuB,GAAG,SAAS,CAAC,YAAY,CAAC,EAAE,CA0U5F"}
@@ -0,0 +1,165 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { enableDatastoreRemoval } from "@manta-eu/client/shared/constants";
3
+ import { isPresent } from "@manta-eu/lib/present";
4
+ import { formatDistanceToNow } from "date-fns";
5
+ import { Check, DatabaseZap, Link2, MoreHorizontal, Pencil, Plus, Power, RefreshCw, RotateCcw, Trash2, TriangleAlert, Users, } from "lucide-react";
6
+ import { useMemo } from "react";
7
+ import { match } from "ts-pattern";
8
+ import { DatastoreStatusBadge, datastoreStatusFilterValue, } from "../components/StatusBadge.js";
9
+ import { Badge } from "#components/badge/index";
10
+ import { Button } from "#components/button/index";
11
+ import { datastoreStatusCategory, isMaterializing } from "#components/datastore-management/tree";
12
+ import { Dropdown, DropdownContent, DropdownItem, DropdownSeparator, DropdownTrigger, } from "#components/dropdown/index";
13
+ import { Tooltip, TooltipContent, TooltipTrigger } from "#components/tooltip/index";
14
+ import { NestedMarker, nestedIndent } from "#ldo-ui";
15
+ import { cn } from "#lib/utils";
16
+ export const datastoreColumnIds = {
17
+ name: "name",
18
+ organizationName: "organizationName",
19
+ datastoreId: "datastoreId",
20
+ suggestedMatch: "suggestedMatch",
21
+ status: "status",
22
+ provisionedBy: "provisionedBy",
23
+ provisionedAt: "provisionedAt",
24
+ actions: "actions",
25
+ };
26
+ export const datastoreColumnLabels = {
27
+ [datastoreColumnIds.name]: "Name",
28
+ [datastoreColumnIds.organizationName]: "Organization",
29
+ [datastoreColumnIds.datastoreId]: "Datastore ID",
30
+ [datastoreColumnIds.status]: "Status",
31
+ [datastoreColumnIds.provisionedBy]: "Provisioned by",
32
+ [datastoreColumnIds.provisionedAt]: "Provisioned",
33
+ };
34
+ export const defaultColumnOrder = Object.values(datastoreColumnIds);
35
+ export const unlinkedColumnLabels = {
36
+ ...datastoreColumnLabels,
37
+ [datastoreColumnIds.suggestedMatch]: "Suggested match",
38
+ };
39
+ export const unlinkedColumnOrder = [
40
+ datastoreColumnIds.datastoreId,
41
+ datastoreColumnIds.suggestedMatch,
42
+ datastoreColumnIds.status,
43
+ datastoreColumnIds.actions,
44
+ ];
45
+ // Floor width per column, so a narrow viewport scrolls instead of squeezing every column thin.
46
+ const columnMinWidths = {
47
+ [datastoreColumnIds.name]: "min-w-[180px]",
48
+ [datastoreColumnIds.organizationName]: "min-w-[140px]",
49
+ [datastoreColumnIds.datastoreId]: "min-w-[160px]",
50
+ [datastoreColumnIds.suggestedMatch]: "min-w-[200px]",
51
+ [datastoreColumnIds.status]: "min-w-[120px]",
52
+ [datastoreColumnIds.provisionedBy]: "min-w-[140px]",
53
+ [datastoreColumnIds.provisionedAt]: "min-w-[110px]",
54
+ [datastoreColumnIds.actions]: "min-w-[140px]",
55
+ };
56
+ export function useDatastoreColumns(args) {
57
+ const { statusByDatastoreId, currentDatastoreId, isSwitching, indented, matchableRowIds, suggestedMatchByDatastoreId, onSelect, onAddChild, onLink, onProvision, onLinkExisting, onRemove, onRestore, onRename, onRegister, onManageUsers, onBringOnline, isBringingOnline, } = args;
58
+ return useMemo(() => [
59
+ {
60
+ id: datastoreColumnIds.name,
61
+ accessorKey: "name",
62
+ header: datastoreColumnLabels[datastoreColumnIds.name],
63
+ cell: ({ row }) => {
64
+ const { name, depth, datastoreId, isOrganization, isRealmDefault } = row.original;
65
+ const current = isPresent(datastoreId) && datastoreId === currentDatastoreId;
66
+ return (_jsx("div", { className: columnMinWidths[datastoreColumnIds.name], children: _jsxs("div", { className: "flex min-w-0 items-center gap-2", style: indented ? nestedIndent(depth + 1) : undefined, children: [indented && depth > 0 && _jsx(NestedMarker, {}), _jsx("span", { className: cn("truncate", isOrganization || isRealmDefault ? "typography-caption-medium" : "typography-caption"), children: name }), !isPresent(datastoreId) && (_jsxs(Tooltip, { children: [_jsx(TooltipTrigger, { asChild: true, children: _jsx(TriangleAlert, { className: "size-3.5 shrink-0 text-warning-foreground", "aria-label": "No datastore provisioned" }) }), _jsx(TooltipContent, { children: "No datastore provisioned for this group yet." })] })), isRealmDefault && (_jsx(Badge, { variant: "copy", size: "sm", className: "shrink-0", children: "Default" })), current && (_jsxs(Badge, { "data-testid": `datastore-selected-badge-${row.original.id}`, variant: "copy", size: "sm", className: "shrink-0", children: [_jsx(Check, { className: "size-3" }), "Selected"] }))] }) }));
67
+ },
68
+ },
69
+ {
70
+ id: datastoreColumnIds.organizationName,
71
+ accessorKey: "organizationName",
72
+ header: datastoreColumnLabels[datastoreColumnIds.organizationName],
73
+ cell: ({ row }) => (_jsx("div", { className: cn(columnMinWidths[datastoreColumnIds.organizationName], "truncate typography-caption"), children: row.original.organizationName || "—" })),
74
+ },
75
+ {
76
+ id: datastoreColumnIds.datastoreId,
77
+ accessorKey: "datastoreId",
78
+ header: datastoreColumnLabels[datastoreColumnIds.datastoreId],
79
+ cell: ({ row }) => (_jsx("div", { className: cn(columnMinWidths[datastoreColumnIds.datastoreId], "truncate typography-small text-muted-foreground"), children: row.original.datastoreId ?? "—" })),
80
+ },
81
+ {
82
+ id: datastoreColumnIds.suggestedMatch,
83
+ accessorKey: "datastoreId",
84
+ header: unlinkedColumnLabels[datastoreColumnIds.suggestedMatch],
85
+ enableSorting: false,
86
+ cell: ({ row }) => {
87
+ const match = suggestedMatchByDatastoreId?.[row.original.datastoreId ?? ""];
88
+ const minWidthClassName = columnMinWidths[datastoreColumnIds.suggestedMatch];
89
+ if (!match)
90
+ return _jsx("div", { className: cn(minWidthClassName, "typography-small text-muted-foreground"), children: "\u2014" });
91
+ return (_jsxs("div", { className: cn(minWidthClassName, "truncate typography-small"), title: `${match.organizationName}${match.isOrganization ? "" : match.path}`, children: [_jsx("span", { className: "text-muted-foreground", children: match.organizationName }), !match.isOrganization && _jsx("span", { className: "text-default-foreground", children: match.path })] }));
92
+ },
93
+ },
94
+ {
95
+ id: datastoreColumnIds.status,
96
+ accessorKey: "datastoreId",
97
+ header: datastoreColumnLabels[datastoreColumnIds.status],
98
+ enableSorting: false,
99
+ filterFn: (row, _columnId, filterValue) => datastoreStatusFilterValue(row.original, statusByDatastoreId[row.original.datastoreId ?? ""]) === filterValue,
100
+ cell: ({ row }) => (_jsx("div", { className: columnMinWidths[datastoreColumnIds.status], children: _jsx(DatastoreStatusBadge, { node: row.original, status: statusByDatastoreId[row.original.datastoreId ?? ""] }) })),
101
+ },
102
+ {
103
+ id: datastoreColumnIds.provisionedBy,
104
+ accessorKey: "provisionedBy",
105
+ header: datastoreColumnLabels[datastoreColumnIds.provisionedBy],
106
+ cell: ({ row }) => (_jsx("div", { className: cn(columnMinWidths[datastoreColumnIds.provisionedBy], "truncate typography-small text-muted-foreground"), children: row.original.provisionedBy ?? "—" })),
107
+ },
108
+ {
109
+ id: datastoreColumnIds.provisionedAt,
110
+ accessorKey: "provisionedAt",
111
+ header: datastoreColumnLabels[datastoreColumnIds.provisionedAt],
112
+ cell: ({ row }) => {
113
+ const { provisionedAt } = row.original;
114
+ const minWidthClassName = columnMinWidths[datastoreColumnIds.provisionedAt];
115
+ const at = isPresent(provisionedAt) ? new Date(provisionedAt) : undefined;
116
+ if (!isPresent(at) || Number.isNaN(at.getTime())) {
117
+ return _jsx("div", { className: cn(minWidthClassName, "typography-small text-muted-foreground"), children: "\u2014" });
118
+ }
119
+ return (_jsx("div", { className: cn(minWidthClassName, "truncate typography-small text-muted-foreground"), title: at.toLocaleString(), children: formatDistanceToNow(at, { addSuffix: true }) }));
120
+ },
121
+ },
122
+ {
123
+ id: datastoreColumnIds.actions,
124
+ header: "",
125
+ enableSorting: false,
126
+ cell: ({ row }) => {
127
+ const datastoreRow = row.original;
128
+ const { datastoreId, removed, name, isRealmDefault, isUnlinked } = datastoreRow;
129
+ const hasDatastore = isPresent(datastoreId);
130
+ const current = hasDatastore && datastoreId === currentDatastoreId;
131
+ const status = hasDatastore ? statusByDatastoreId[datastoreId] : undefined;
132
+ const category = datastoreStatusCategory(datastoreRow, status);
133
+ const notRegistered = category === "notRegistered";
134
+ const reason = match({ notRegistered, materializing: isMaterializing(status) && !isRealmDefault })
135
+ .with({ notRegistered: true }, () => "Not registered - use Register to fix, then try selecting again.")
136
+ .with({ materializing: true }, () => "Still materializing - this can take a few minutes.")
137
+ .otherwise(() => undefined);
138
+ const canSelect = hasDatastore && !reason && !current && !isSwitching;
139
+ return (_jsxs("div", { className: cn(columnMinWidths[datastoreColumnIds.actions], "flex items-center justify-end gap-1.5"), children: [isUnlinked && (_jsx(Button, { "data-testid": `datastore-link-${datastoreRow.id}`, size: "sm", variant: "secondary", icon: Link2, onClick: () => onLink(datastoreRow), children: "Link" })), hasDatastore && !removed && category === "offline" && (_jsx(Button, { "data-testid": `datastore-bring-online-${datastoreRow.id}`, size: "sm", variant: "secondary", icon: Power, disabled: isBringingOnline, onClick: () => onBringOnline(datastoreRow), children: "Bring online" })), !isUnlinked && hasDatastore && !removed && notRegistered && (_jsx(Button, { "data-testid": `datastore-register-${datastoreRow.id}`, size: "sm", variant: "secondary", icon: RefreshCw, onClick: () => onRegister(datastoreRow), children: "Register" })), !isUnlinked && hasDatastore && current && (_jsx(Button, { "data-testid": `datastore-select-${datastoreRow.id}`, size: "sm", variant: "secondary", disabled: true, children: "Selected" })), !isUnlinked && hasDatastore && !current && !removed && (_jsx(Button, { "data-testid": `datastore-select-${datastoreRow.id}`, size: "sm", variant: "secondary", disabled: !canSelect, title: reason, onClick: () => onSelect(datastoreRow), children: "Select" })), isRealmDefault || isUnlinked ? (
140
+ // Same-sized spacer keeps Select/Selected aligned with rows that have the ellipsis.
141
+ _jsx("div", { className: "size-6", "aria-hidden": "true" })) : (_jsxs(Dropdown, { children: [_jsx(DropdownTrigger, { asChild: true, children: _jsx("button", { type: "button", "aria-label": `Actions for ${name}`, className: "shrink-0 rounded-sm-v4 p-1 text-muted-foreground hover:bg-faint hover:text-default-foreground", children: _jsx(MoreHorizontal, { className: "size-4" }) }) }), _jsxs(DropdownContent, { align: "end", className: "min-w-52", children: [_jsx(DropdownItem, { icon: _jsx(Pencil, { className: "size-4" }), onSelect: () => onRename(datastoreRow), children: "Rename" }), isPresent(datastoreRow.organizationAlias) && (_jsx(DropdownItem, { icon: _jsx(Users, { className: "size-4" }), onSelect: () => onManageUsers(datastoreRow), children: "Manage users" })), !hasDatastore &&
142
+ (matchableRowIds.has(datastoreRow.id) ? (_jsx(DropdownItem, { icon: _jsx(Link2, { className: "size-4" }), onSelect: () => onLinkExisting(datastoreRow), children: "Link existing datastore" })) : (_jsx(DropdownItem, { icon: _jsx(DatabaseZap, { className: "size-4" }), onSelect: () => onProvision(datastoreRow), children: "Provision datastore" }))), _jsx(DropdownItem, { icon: _jsx(Plus, { className: "size-4" }), onSelect: () => onAddChild(datastoreRow), children: "Add datastore" }), enableDatastoreRemoval && hasDatastore && !removed && (_jsxs(_Fragment, { children: [_jsx(DropdownSeparator, {}), _jsx(DropdownItem, { className: "text-error-foreground", icon: _jsx(Trash2, { className: "size-4" }), onSelect: () => onRemove(datastoreRow), children: "Remove datastore" })] })), enableDatastoreRemoval && hasDatastore && removed && (_jsxs(_Fragment, { children: [_jsx(DropdownSeparator, {}), _jsx(DropdownItem, { icon: _jsx(RotateCcw, { className: "size-4" }), onSelect: () => onRestore(datastoreRow), children: "Restore datastore" })] }))] })] }))] }));
143
+ },
144
+ },
145
+ ], [
146
+ statusByDatastoreId,
147
+ currentDatastoreId,
148
+ isSwitching,
149
+ indented,
150
+ matchableRowIds,
151
+ suggestedMatchByDatastoreId,
152
+ onSelect,
153
+ onAddChild,
154
+ onLink,
155
+ onProvision,
156
+ onLinkExisting,
157
+ onRemove,
158
+ onRestore,
159
+ onRegister,
160
+ onRename,
161
+ onManageUsers,
162
+ onBringOnline,
163
+ isBringingOnline,
164
+ ]);
165
+ }
@@ -0,0 +1,14 @@
1
+ import type { ColumnDef, OnChangeFn, SortingState, Table } from "@tanstack/react-table";
2
+ import type { DatastoreStatusFilterValue } from "../components/StatusBadge.js";
3
+ import type { DatastoreRow } from "../flatten.js";
4
+ export type StatusFilter = "ALL" | DatastoreStatusFilterValue;
5
+ type UseDatastoreTableResult = {
6
+ table: Table<DatastoreRow>;
7
+ searchQuery: string;
8
+ onSearchQueryChange: (query: string) => void;
9
+ statusFilter: StatusFilter;
10
+ onStatusFilterChange: (status: StatusFilter) => void;
11
+ };
12
+ export declare function useDatastoreTable(tableKey: string, rows: DatastoreRow[], columns: ColumnDef<DatastoreRow>[], sorting: SortingState, setSorting: OnChangeFn<SortingState>): UseDatastoreTableResult;
13
+ export {};
14
+ //# sourceMappingURL=useDatastoreTable.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useDatastoreTable.d.ts","sourceRoot":"","sources":["../../../../src/routes/datastores/hooks/useDatastoreTable.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAGxF,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,2BAA2B,CAAC;AAC5E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAI/C,MAAM,MAAM,YAAY,GAAG,KAAK,GAAG,0BAA0B,CAAC;AAE9D,KAAK,uBAAuB,GAAG;IAC7B,KAAK,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,mBAAmB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7C,YAAY,EAAE,YAAY,CAAC;IAC3B,oBAAoB,EAAE,CAAC,MAAM,EAAE,YAAY,KAAK,IAAI,CAAC;CACtD,CAAC;AAGF,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,YAAY,EAAE,EACpB,OAAO,EAAE,SAAS,CAAC,YAAY,CAAC,EAAE,EAClC,OAAO,EAAE,YAAY,EACrB,UAAU,EAAE,UAAU,CAAC,YAAY,CAAC,GACnC,uBAAuB,CAiEzB"}
@@ -0,0 +1,45 @@
1
+ import { useReactTable } from "@tanstack/react-table";
2
+ import { useCallback, useMemo } from "react";
3
+ import { datastoreColumnIds } from "./useDatastoreColumns.js";
4
+ import { createTableConfig, useTableState } from "#components/table/index";
5
+ // Sorting is owned by the caller so the columns can drop the hierarchy indent once a sort makes it a lie.
6
+ export function useDatastoreTable(tableKey, rows, columns, sorting, setSorting) {
7
+ const { pagination, setPagination, columnFilters, setColumnFilters, columnVisibility, setColumnVisibility, columnOrder, setColumnOrder, searchQuery, setSearchQuery, debouncedSearchQuery, } = useTableState(tableKey, [], { useLocalState: true });
8
+ const filteredRows = useMemo(() => {
9
+ const term = debouncedSearchQuery.trim().toLowerCase();
10
+ if (!term)
11
+ return rows;
12
+ return rows.filter((row) => row.name.toLowerCase().includes(term) ||
13
+ row.organizationName.toLowerCase().includes(term) ||
14
+ (row.datastoreId ?? "").toLowerCase().includes(term));
15
+ }, [rows, debouncedSearchQuery]);
16
+ const table = useReactTable(createTableConfig({
17
+ data: filteredRows,
18
+ columns,
19
+ columnPinning: { left: [datastoreColumnIds.name], right: [datastoreColumnIds.actions] },
20
+ sorting,
21
+ setSorting,
22
+ columnFilters,
23
+ setColumnFilters,
24
+ columnVisibility,
25
+ setColumnVisibility,
26
+ columnOrder,
27
+ setColumnOrder,
28
+ pagination,
29
+ setPagination,
30
+ }));
31
+ const statusFilter = columnFilters.find((f) => f.id === datastoreColumnIds.status)?.value ?? "ALL";
32
+ const handleStatusFilterChange = useCallback((status) => {
33
+ setColumnFilters((prev) => [
34
+ ...prev.filter((f) => f.id !== datastoreColumnIds.status),
35
+ ...(status !== "ALL" ? [{ id: datastoreColumnIds.status, value: status }] : []),
36
+ ]);
37
+ }, [setColumnFilters]);
38
+ return {
39
+ table,
40
+ searchQuery,
41
+ onSearchQueryChange: setSearchQuery,
42
+ statusFilter,
43
+ onStatusFilterChange: handleStatusFilterChange,
44
+ };
45
+ }
@@ -0,0 +1,2 @@
1
+ export declare function DatastoresRoute(): import("react/jsx-runtime").JSX.Element;
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/routes/datastores/index.tsx"],"names":[],"mappings":"AAqFA,wBAAgB,eAAe,4CAypB9B"}