@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,12 @@
1
+ import { GQLMemoryScope, type GQLMemory } from "@manta-eu/client";
2
+ export type ChangeScopeDialogProps = {
3
+ open: boolean;
4
+ onOpenChange: (open: boolean) => void;
5
+ memory: GQLMemory;
6
+ isOperator?: boolean;
7
+ onSave: (newScope: GQLMemoryScope, newTeams: string[], supersedesMemoryIris: string[]) => Promise<void>;
8
+ isSaving: boolean;
9
+ currentUserId?: string;
10
+ };
11
+ export declare function ChangeScopeDialog(props: ChangeScopeDialogProps): import("react/jsx-runtime").JSX.Element;
12
+ //# sourceMappingURL=ChangeScopeDialog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChangeScopeDialog.d.ts","sourceRoot":"","sources":["../../../../src/routes/memories/components/ChangeScopeDialog.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAA6B,KAAK,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAiB7F,MAAM,MAAM,sBAAsB,GAAG;IACnC,IAAI,EAAE,OAAO,CAAC;IACd,YAAY,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACtC,MAAM,EAAE,SAAS,CAAC;IAClB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,MAAM,EAAE,CAAC,QAAQ,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,oBAAoB,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACxG,QAAQ,EAAE,OAAO,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AAQF,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,sBAAsB,2CAuK9D"}
@@ -0,0 +1,89 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { GQLMemoryScope } from "@manta-eu/client";
3
+ import { isPresent } from "@manta-eu/lib/present";
4
+ import { useCallback, useEffect, useState } from "react";
5
+ import { useConflictCheck } from "../hooks/useConflictCheck.js";
6
+ import { SupersessionConflictDialog } from "./SupersessionConflictDialog.js";
7
+ import { TeamPicker } from "./TeamPicker.js";
8
+ import { Button } from "#components/button/index";
9
+ import { Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, } from "#components/modal/index";
10
+ const scopeOptions = [
11
+ { value: GQLMemoryScope.User, label: "Personal" },
12
+ { value: GQLMemoryScope.Company, label: "Company" },
13
+ { value: GQLMemoryScope.Team, label: "Team" },
14
+ ];
15
+ export function ChangeScopeDialog(props) {
16
+ const { open, onOpenChange, memory, isOperator, onSave, isSaving, currentUserId } = props;
17
+ const [scope, setScope] = useState(memory.scope);
18
+ const [teams, setTeams] = useState(memory.teams);
19
+ const [pendingConflicts, setPendingConflicts] = useState([]);
20
+ const [pendingState, setPendingState] = useState(null);
21
+ const [timedOut, setTimedOut] = useState(false);
22
+ const { check, isChecking } = useConflictCheck();
23
+ useEffect(() => {
24
+ if (open) {
25
+ setScope(memory.scope);
26
+ setTeams(memory.teams);
27
+ setPendingConflicts([]);
28
+ setPendingState(null);
29
+ setTimedOut(false);
30
+ }
31
+ }, [open, memory]);
32
+ const isTeam = scope === GQLMemoryScope.Team;
33
+ const isSameScope = scope === memory.scope &&
34
+ (scope !== GQLMemoryScope.Team ||
35
+ (teams.length === memory.teams.length && teams.every((t) => memory.teams.includes(t))));
36
+ const canSave = !isSameScope && (!isTeam || isPresent(teams));
37
+ const isBusy = isSaving || isChecking;
38
+ const handleSave = useCallback(async () => {
39
+ const { conflicts, timedOut: checkTimedOut } = await check({
40
+ label: memory.label,
41
+ description: memory.description ?? "",
42
+ scope,
43
+ teams: isTeam ? teams : undefined,
44
+ excludeIri: memory.iri,
45
+ });
46
+ if (checkTimedOut) {
47
+ setPendingState({ scope, teams: isTeam ? teams : [] });
48
+ setTimedOut(true);
49
+ return;
50
+ }
51
+ if (!isPresent(conflicts)) {
52
+ await onSave(scope, isTeam ? teams : [], []);
53
+ return;
54
+ }
55
+ setPendingConflicts(conflicts);
56
+ setPendingState({ scope, teams: isTeam ? teams : [] });
57
+ }, [check, memory, scope, teams, isTeam, onSave]);
58
+ const handleConflictConfirm = useCallback(async (resolution) => {
59
+ if (!pendingState)
60
+ return;
61
+ const finalTeams = resolution.mergedTeams ?? pendingState.teams;
62
+ setPendingConflicts([]);
63
+ setPendingState(null);
64
+ await onSave(pendingState.scope, finalTeams, resolution.supersedesIris);
65
+ }, [pendingState, onSave]);
66
+ const handleSaveWithout = useCallback(async () => {
67
+ if (!pendingState)
68
+ return;
69
+ setPendingConflicts([]);
70
+ setPendingState(null);
71
+ await onSave(pendingState.scope, pendingState.teams, []);
72
+ }, [pendingState, onSave]);
73
+ const handleConflictCancel = useCallback(() => {
74
+ setPendingConflicts([]);
75
+ setPendingState(null);
76
+ }, []);
77
+ return (_jsxs(_Fragment, { children: [_jsx(Dialog, { open: open, onOpenChange: onOpenChange, children: _jsxs(DialogContent, { children: [_jsxs(DialogHeader, { children: [_jsx(DialogTitle, { text: "Change memory scope" }), _jsxs(DialogDescription, { children: ["Change the scope of \u201C", memory.label, "\u201D memory. All properties remain the same, but visibility changes."] })] }), _jsxs("div", { className: "flex flex-col gap-4 py-2", children: [_jsxs("div", { className: "flex flex-col gap-1.5", children: [_jsx("label", { className: "typography-small text-default-foreground", children: "Scope" }), _jsx("div", { className: "flex gap-2", children: scopeOptions
78
+ .filter(({ value }) => value !== GQLMemoryScope.Company || isOperator)
79
+ .map(({ value, label }) => (_jsx("button", { type: "button", onClick: () => setScope(value), className: `px-3 py-1.5 rounded-lg typography-small-medium transition-colors ${scope === value
80
+ ? "bg-primary text-primary-foreground"
81
+ : "bg-muted text-muted-foreground hover:bg-muted/80"}`, children: label }, value))) })] }), isTeam && _jsx(TeamPicker, { selected: teams, onChange: setTeams, isOperator: isOperator ?? false })] }), _jsx(DialogFooter, { children: timedOut && pendingState ? (_jsxs(_Fragment, { children: [_jsx("p", { className: "typography-small text-muted-foreground mr-auto", children: "Conflict check timed out. Move without checking?" }), _jsx(Button, { variant: "tertiary", onClick: () => {
82
+ setTimedOut(false);
83
+ setPendingState(null);
84
+ }, disabled: isSaving, children: "Cancel" }), _jsx(Button, { onClick: () => {
85
+ setTimedOut(false);
86
+ void onSave(pendingState.scope, pendingState.teams, []);
87
+ setPendingState(null);
88
+ }, disabled: isSaving, children: isSaving ? "Moving…" : "Move anyway" })] })) : (_jsxs(_Fragment, { children: [_jsx(Button, { variant: "tertiary", onClick: () => onOpenChange(false), disabled: isBusy, children: "Cancel" }), _jsx(Button, { onClick: handleSave, disabled: !canSave || isBusy, children: isChecking ? "Checking…" : isSaving ? "Moving…" : "Move" })] })) })] }) }), isPresent(pendingConflicts) && pendingState && (_jsx(SupersessionConflictDialog, { open: true, conflicts: pendingConflicts, scope: pendingState.scope, newTeams: pendingState.teams, currentUserId: currentUserId, onConfirm: handleConflictConfirm, onSaveWithout: handleSaveWithout, onCancel: handleConflictCancel }))] }));
89
+ }
@@ -0,0 +1,13 @@
1
+ import { GQLMemoryScope, type GQLConflictingMemory } from "@manta-eu/client";
2
+ export type ConflictMemoryCardProps = {
3
+ conflict: GQLConflictingMemory;
4
+ scope: GQLMemoryScope;
5
+ checked: boolean;
6
+ onToggleChecked: () => void;
7
+ showMerge: boolean;
8
+ merging: boolean;
9
+ onToggleMerge: () => void;
10
+ currentUserId?: string;
11
+ };
12
+ export declare function ConflictMemoryCard(props: ConflictMemoryCardProps): import("react/jsx-runtime").JSX.Element;
13
+ //# sourceMappingURL=ConflictMemoryCard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConflictMemoryCard.d.ts","sourceRoot":"","sources":["../../../../src/routes/memories/components/ConflictMemoryCard.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,KAAK,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAkC7E,MAAM,MAAM,uBAAuB,GAAG;IACpC,QAAQ,EAAE,oBAAoB,CAAC;IAC/B,KAAK,EAAE,cAAc,CAAC;IACtB,OAAO,EAAE,OAAO,CAAC;IACjB,eAAe,EAAE,MAAM,IAAI,CAAC;IAC5B,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,aAAa,EAAE,MAAM,IAAI,CAAC;IAC1B,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,uBAAuB,2CAsEhE"}
@@ -0,0 +1,43 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { GQLMemoryScope } from "@manta-eu/client";
3
+ import { isPresent } from "@manta-eu/lib/present";
4
+ import { match } from "ts-pattern";
5
+ import { formatHorizonRelative, isTrustExpired, memoryHorizon } from "../expiry-utils.js";
6
+ import { KindBadge } from "./badges.js";
7
+ import { Badge } from "#components/badge/index";
8
+ import { Checkbox } from "#components/checkbox/index";
9
+ import { cn } from "#lib/utils";
10
+ const importanceLabels = {
11
+ 1: "Disabled",
12
+ 2: "Low importance",
13
+ 3: "Medium importance",
14
+ 4: "High importance",
15
+ 5: "Critical",
16
+ };
17
+ const importanceDotClass = {
18
+ 1: "bg-muted-foreground/40",
19
+ 2: "bg-muted-foreground",
20
+ 3: "bg-default-foreground/50",
21
+ 4: "bg-warning-foreground",
22
+ 5: "bg-error-foreground",
23
+ };
24
+ function formatAuthor(createdBy, currentUserId) {
25
+ if (isPresent(currentUserId) && createdBy === currentUserId)
26
+ return "You";
27
+ return "Another user";
28
+ }
29
+ function MetaSeparator() {
30
+ return _jsx("span", { className: "text-muted-border", children: "\u00B7" });
31
+ }
32
+ export function ConflictMemoryCard(props) {
33
+ const { conflict, scope, checked, onToggleChecked, showMerge, merging, onToggleMerge, currentUserId } = props;
34
+ const showAuthor = scope !== GQLMemoryScope.User && isPresent(conflict.createdBy);
35
+ const horizon = memoryHorizon(conflict.memoryValidUntil, conflict.memoryTrustedUntil);
36
+ const unconfirmed = isTrustExpired(conflict.memoryTrustedUntil);
37
+ const horizonLabel = match(horizon)
38
+ .with({ kind: "none" }, () => null)
39
+ .with({ kind: "trust" }, (trust) => (unconfirmed ? null : formatHorizonRelative(trust)))
40
+ .with({ kind: "expiry" }, (expiry) => formatHorizonRelative(expiry))
41
+ .exhaustive();
42
+ return (_jsxs("div", { className: "flex flex-col gap-2 rounded-lg border border-muted-border p-3", children: [_jsxs("div", { className: "flex items-start gap-3", children: [_jsx(Checkbox, { checked: checked, onCheckedChange: onToggleChecked, className: "mt-0.5 shrink-0" }), _jsxs("div", { className: "flex flex-col gap-1.5 flex-1 min-w-0", children: [_jsx("span", { className: "typography-caption-medium text-default-foreground", children: conflict.label }), conflict.description && (_jsx("span", { className: "typography-small text-muted-foreground line-clamp-2", children: conflict.description })), conflict.reason && _jsx("span", { className: "typography-tiny text-accent-foreground italic", children: conflict.reason }), _jsxs("div", { className: "flex items-center gap-1.5 flex-wrap typography-tiny text-muted-foreground mt-0.5", children: [_jsx(KindBadge, { kind: conflict.kind }), _jsxs(Badge, { size: "sm", variant: "secondary", className: "capitalize", children: [_jsx("span", { className: cn("size-1.5 rounded-full shrink-0", importanceDotClass[conflict.importance]) }), importanceLabels[conflict.importance] ?? "Medium importance"] }), unconfirmed && (_jsxs(_Fragment, { children: [_jsx(MetaSeparator, {}), _jsx("span", { className: "text-warning-foreground", children: "Unconfirmed \u2014 no longer pre-loaded" })] })), horizonLabel && (_jsxs(_Fragment, { children: [_jsx(MetaSeparator, {}), _jsx("span", { children: horizonLabel })] })), showAuthor && (_jsxs(_Fragment, { children: [_jsx(MetaSeparator, {}), _jsxs("span", { children: ["Added by ", formatAuthor(conflict.createdBy, currentUserId)] })] }))] })] })] }), showMerge && isPresent(conflict.currentTeams) && (_jsxs("div", { className: "ml-8 flex flex-col gap-1.5", children: [_jsx("div", { className: "flex flex-wrap gap-1", children: conflict.currentTeams.map((g) => (_jsx("span", { className: "inline-flex items-center rounded-full px-2 py-0.5 typography-tiny bg-muted text-muted-foreground", children: g.replace(/^\//, "") }, g))) }), _jsxs("div", { className: "flex items-center gap-2", children: [_jsx(Checkbox, { checked: merging, onCheckedChange: onToggleMerge, disabled: !checked }), _jsx("span", { className: "typography-small text-muted-foreground", children: "Merge teams (union of old + new teams)" })] })] }))] }));
43
+ }
@@ -0,0 +1,7 @@
1
+ export type ConflictTimeoutFooterProps = {
2
+ onCancel: () => void;
3
+ onConfirm: () => void;
4
+ isSaving: boolean;
5
+ };
6
+ export declare function ConflictTimeoutFooter(props: ConflictTimeoutFooterProps): import("react/jsx-runtime").JSX.Element;
7
+ //# sourceMappingURL=ConflictTimeoutFooter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConflictTimeoutFooter.d.ts","sourceRoot":"","sources":["../../../../src/routes/memories/components/ConflictTimeoutFooter.tsx"],"names":[],"mappings":"AAEA,MAAM,MAAM,0BAA0B,GAAG;IACvC,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,QAAQ,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,0BAA0B,2CAatE"}
@@ -0,0 +1,6 @@
1
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Button } from "#components/button/index";
3
+ export function ConflictTimeoutFooter(props) {
4
+ const { onCancel, onConfirm, isSaving } = props;
5
+ return (_jsxs(_Fragment, { children: [_jsx("p", { className: "typography-small text-muted-foreground mr-auto", children: "Conflict check timed out. Save without checking?" }), _jsx(Button, { variant: "tertiary", onClick: onCancel, disabled: isSaving, children: "Cancel" }), _jsx(Button, { onClick: onConfirm, disabled: isSaving, children: isSaving ? "Saving…" : "Save anyway" })] }));
6
+ }
@@ -0,0 +1,61 @@
1
+ export type ConsolidationMemoryView = {
2
+ iri: string;
3
+ label: string;
4
+ description?: string | null;
5
+ teams?: readonly string[] | null;
6
+ };
7
+ export type ReviewProposalKind = "duplicate" | "pattern";
8
+ export type ConsolidationClusterView = {
9
+ memories: ConsolidationMemoryView[];
10
+ reason: string;
11
+ suggestedLabel: string;
12
+ suggestedDescription: string;
13
+ kind?: ReviewProposalKind;
14
+ };
15
+ export type ConsolidationDecision = {
16
+ memoryIris: string[];
17
+ label: string;
18
+ description: string;
19
+ kind: ReviewProposalKind;
20
+ };
21
+ export type ReviewCopy = {
22
+ intro: string;
23
+ labelField: string;
24
+ descriptionField: string;
25
+ confirm: string;
26
+ };
27
+ export declare const consolidationCopy: ReviewCopy;
28
+ export declare const abstractionCopy: ReviewCopy;
29
+ export declare function reviewCopyFor(kind: ReviewProposalKind | undefined): ReviewCopy;
30
+ export declare const reviewDialogTitle = "Review redundant memories";
31
+ export declare function consolidationSummary(clusterCount: number, index: number, isLoading: boolean, timedOut?: boolean, failed?: boolean): string;
32
+ export declare function consolidationProgressLabel(candidateCount: number, limit?: number): string;
33
+ export declare function consolidationCoverageNote(comparedCount: number | null | undefined, candidateCount: number, checkCompleted?: boolean): string | null;
34
+ export declare function mergedAudienceNote(memories: readonly ConsolidationMemoryView[]): string | null;
35
+ export declare const consolidationSlowAfterMs = 8000;
36
+ export type ConsolidationProgressProps = {
37
+ candidateCount: number;
38
+ };
39
+ export declare function ConsolidationProgress(props: ConsolidationProgressProps): import("react/jsx-runtime").JSX.Element;
40
+ export type ConsolidationClusterReviewProps = {
41
+ cluster: ConsolidationClusterView;
42
+ label: string;
43
+ description: string;
44
+ onLabelChange: (value: string) => void;
45
+ onDescriptionChange: (value: string) => void;
46
+ };
47
+ export declare function ConsolidationClusterReview(props: ConsolidationClusterReviewProps): import("react/jsx-runtime").JSX.Element;
48
+ export type ConsolidationReviewDialogProps = {
49
+ open: boolean;
50
+ clusters: ConsolidationClusterView[];
51
+ isLoading: boolean;
52
+ isSaving: boolean;
53
+ candidateCount: number;
54
+ comparedCount: number | null;
55
+ timedOut?: boolean;
56
+ errorMessage?: string | null;
57
+ onMerge: (decision: ConsolidationDecision) => void;
58
+ onClose: () => void;
59
+ };
60
+ export declare function ConsolidationReviewDialog(props: ConsolidationReviewDialogProps): import("react/jsx-runtime").JSX.Element;
61
+ //# sourceMappingURL=ConsolidationReviewDialog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConsolidationReviewDialog.d.ts","sourceRoot":"","sources":["../../../../src/routes/memories/components/ConsolidationReviewDialog.tsx"],"names":[],"mappings":"AAgBA,MAAM,MAAM,uBAAuB,GAAG;IACpC,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,KAAK,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI,CAAC;CAClC,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG,WAAW,GAAG,SAAS,CAAC;AAEzD,MAAM,MAAM,wBAAwB,GAAG;IACrC,QAAQ,EAAE,uBAAuB,EAAE,CAAC;IACpC,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,MAAM,CAAC;IACvB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,IAAI,CAAC,EAAE,kBAAkB,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,kBAAkB,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,gBAAgB,EAAE,MAAM,CAAC;IACzB,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,UAK/B,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,UAM7B,CAAC;AAEF,wBAAgB,aAAa,CAAC,IAAI,EAAE,kBAAkB,GAAG,SAAS,GAAG,UAAU,CAE9E;AAED,eAAO,MAAM,iBAAiB,8BAA8B,CAAC;AAE7D,wBAAgB,oBAAoB,CAClC,YAAY,EAAE,MAAM,EACpB,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,OAAO,EAClB,QAAQ,UAAQ,EAChB,MAAM,UAAQ,GACb,MAAM,CAWR;AAED,wBAAgB,0BAA0B,CAAC,cAAc,EAAE,MAAM,EAAE,KAAK,SAA8B,GAAG,MAAM,CAI9G;AAED,wBAAgB,yBAAyB,CACvC,aAAa,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EACxC,cAAc,EAAE,MAAM,EACtB,cAAc,UAAO,GACpB,MAAM,GAAG,IAAI,CAKf;AAED,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,SAAS,uBAAuB,EAAE,GAAG,MAAM,GAAG,IAAI,CAM9F;AAED,eAAO,MAAM,wBAAwB,OAAQ,CAAC;AAE9C,MAAM,MAAM,0BAA0B,GAAG;IAAE,cAAc,EAAE,MAAM,CAAA;CAAE,CAAC;AAEpE,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,0BAA0B,2CAoBtE;AAED,MAAM,MAAM,+BAA+B,GAAG;IAC5C,OAAO,EAAE,wBAAwB,CAAC;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,mBAAmB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CAC9C,CAAC;AAEF,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,+BAA+B,2CAkChF;AAED,MAAM,MAAM,8BAA8B,GAAG;IAC3C,IAAI,EAAE,OAAO,CAAC;IACd,QAAQ,EAAE,wBAAwB,EAAE,CAAC;IACrC,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,OAAO,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,OAAO,EAAE,CAAC,QAAQ,EAAE,qBAAqB,KAAK,IAAI,CAAC;IACnD,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB,CAAC;AAMF,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,8BAA8B,2CA8F9E"}
@@ -0,0 +1,121 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { consolidationCandidateLimit } from "@manta-eu/client/shared/memory-consolidation-limits";
3
+ import { unionOfTeams } from "@manta-eu/client/shared/memory-teams";
4
+ import { isPresent } from "@manta-eu/lib/present";
5
+ import { useCallback, useEffect, useState } from "react";
6
+ import { Button } from "#components/button/index";
7
+ import { Input, Textarea } from "#components/input/index";
8
+ import { Loader } from "#components/loader/index";
9
+ import { Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, } from "#components/modal/index";
10
+ export const consolidationCopy = {
11
+ intro: "These say the same thing. Merging them loses nothing.",
12
+ labelField: "Merged label",
13
+ descriptionField: "Merged description",
14
+ confirm: "Merge",
15
+ };
16
+ export const abstractionCopy = {
17
+ intro: "These are instances of one broader rule. The general memory replaces them, so anything true of only some of them is lost.",
18
+ labelField: "General label",
19
+ descriptionField: "General description",
20
+ confirm: "Replace with the general memory",
21
+ };
22
+ export function reviewCopyFor(kind) {
23
+ return kind === "pattern" ? abstractionCopy : consolidationCopy;
24
+ }
25
+ export const reviewDialogTitle = "Review redundant memories";
26
+ export function consolidationSummary(clusterCount, index, isLoading, timedOut = false, failed = false) {
27
+ if (isLoading)
28
+ return "Looking for memories that say the same thing, and for patterns worth stating once…";
29
+ if (clusterCount > 0 && (timedOut || failed)) {
30
+ const stopped = timedOut ? "ran out of time" : "could not finish";
31
+ return `The check ${stopped}, but found ${clusterCount} ${clusterCount === 1 ? "group" : "groups"} before stopping. Group ${index + 1} of ${clusterCount}.`;
32
+ }
33
+ if (timedOut)
34
+ return "The check ran out of time, so nothing was compared. Try again on a smaller scope.";
35
+ if (failed)
36
+ return "The check could not finish, so nothing was compared.";
37
+ if (clusterCount === 0)
38
+ return "Nothing to clean up. Every memory in this scope is distinct and specific to itself.";
39
+ if (index >= clusterCount)
40
+ return `You have reviewed all ${clusterCount} groups.`;
41
+ return `Group ${index + 1} of ${clusterCount}.`;
42
+ }
43
+ export function consolidationProgressLabel(candidateCount, limit = consolidationCandidateLimit) {
44
+ if (candidateCount <= 0)
45
+ return "Comparing your memories…";
46
+ if (candidateCount > limit)
47
+ return `Comparing ${limit} of ${candidateCount} memories…`;
48
+ return `Comparing ${candidateCount} memories…`;
49
+ }
50
+ export function consolidationCoverageNote(comparedCount, candidateCount, checkCompleted = true) {
51
+ if (!checkCompleted || comparedCount == null)
52
+ return null;
53
+ if (candidateCount < 2)
54
+ return null;
55
+ if (comparedCount >= candidateCount)
56
+ return null;
57
+ return `${comparedCount} of ${candidateCount} memories were compared; the rest had nothing resembling them.`;
58
+ }
59
+ export function mergedAudienceNote(memories) {
60
+ const perMemory = memories.map((m) => new Set(m.teams ?? []));
61
+ const union = unionOfTeams(memories.map((m) => m.teams));
62
+ if (!isPresent(union) || perMemory.every((teams) => teams.size === union.length))
63
+ return null;
64
+ return `These are not all shared with the same teams. The merged memory goes to all of them: ${[...union].sort().join(", ")}.`;
65
+ }
66
+ export const consolidationSlowAfterMs = 8_000;
67
+ export function ConsolidationProgress(props) {
68
+ const { candidateCount } = props;
69
+ const [slow, setSlow] = useState(false);
70
+ useEffect(() => {
71
+ const timer = setTimeout(() => setSlow(true), consolidationSlowAfterMs);
72
+ return () => clearTimeout(timer);
73
+ }, []);
74
+ return (_jsxs("div", { className: "flex flex-col items-center gap-3 py-10 text-center", children: [_jsx(Loader, { className: "size-6" }), _jsx("p", { className: "typography-caption-medium text-default-foreground", children: consolidationProgressLabel(candidateCount) }), _jsx("p", { className: "typography-small text-muted-foreground max-w-sm", children: slow
75
+ ? "Still comparing — this can take up to a minute on a large scope."
76
+ : "This usually takes a few seconds." })] }));
77
+ }
78
+ export function ConsolidationClusterReview(props) {
79
+ const { cluster, label, description, onLabelChange, onDescriptionChange } = props;
80
+ const copy = reviewCopyFor(cluster.kind);
81
+ const audienceNote = mergedAudienceNote(cluster.memories);
82
+ return (_jsxs("div", { className: "flex flex-col gap-4", children: [_jsx("p", { className: "typography-small-medium text-default-foreground", children: copy.intro }), _jsx("p", { className: "typography-small text-muted-foreground", children: cluster.reason }), audienceNote && _jsx("p", { className: "typography-small text-warning-foreground", children: audienceNote }), _jsxs("div", { className: "flex flex-col gap-2", children: [_jsxs("span", { className: "typography-small-medium", children: ["These ", cluster.memories.length, " memories will be replaced by one:"] }), cluster.memories.map((memory) => (_jsxs("div", { className: "rounded-lg border border-muted-border p-3", children: [_jsx("div", { className: "typography-caption-medium text-default-foreground", children: memory.label }), _jsx("div", { className: "typography-small text-muted-foreground", children: memory.description })] }, memory.iri)))] }), _jsxs("label", { className: "flex flex-col gap-1", children: [_jsx("span", { className: "typography-small-medium", children: copy.labelField }), _jsx(Input, { value: label, onChange: (e) => onLabelChange(e.target.value) })] }), _jsxs("label", { className: "flex flex-col gap-1", children: [_jsx("span", { className: "typography-small-medium", children: copy.descriptionField }), _jsx(Textarea, { rows: 3, value: description, onChange: (e) => onDescriptionChange(e.target.value) })] })] }));
83
+ }
84
+ function clusterKey(cluster) {
85
+ return cluster ? cluster.memories.map((m) => m.iri).join("|") : "";
86
+ }
87
+ export function ConsolidationReviewDialog(props) {
88
+ const { open, clusters, isLoading, isSaving, candidateCount, comparedCount, timedOut, errorMessage, onMerge, onClose, } = props;
89
+ const [index, setIndex] = useState(0);
90
+ const [draft, setDraft] = useState({ key: "", label: "", description: "" });
91
+ const current = clusters[index];
92
+ const copy = reviewCopyFor(current?.kind);
93
+ const currentKey = clusterKey(current);
94
+ const coverageNote = consolidationCoverageNote(comparedCount, candidateCount, !isPresent(errorMessage));
95
+ useEffect(() => {
96
+ if (open)
97
+ setIndex(0);
98
+ }, [open]);
99
+ if (draft.key !== currentKey) {
100
+ setDraft({
101
+ key: currentKey,
102
+ label: current?.suggestedLabel ?? "",
103
+ description: current?.suggestedDescription ?? "",
104
+ });
105
+ }
106
+ const { label, description } = draft;
107
+ const setLabel = useCallback((value) => setDraft((d) => ({ ...d, label: value })), []);
108
+ const setDescription = useCallback((value) => setDraft((d) => ({ ...d, description: value })), []);
109
+ const handleMerge = useCallback(() => {
110
+ if (!current)
111
+ return;
112
+ onMerge({
113
+ memoryIris: current.memories.map((m) => m.iri),
114
+ label: label.trim(),
115
+ description: description.trim(),
116
+ kind: current.kind ?? "duplicate",
117
+ });
118
+ }, [current, label, description, onMerge]);
119
+ const handleSkip = useCallback(() => setIndex((i) => Math.min(i + 1, clusters.length)), [clusters.length]);
120
+ return (_jsx(Dialog, { open: open, onOpenChange: (next) => !next && onClose(), children: _jsxs(DialogContent, { className: "max-w-2xl", children: [_jsxs(DialogHeader, { children: [_jsx(DialogTitle, { text: reviewDialogTitle }), _jsx(DialogDescription, { children: consolidationSummary(clusters.length, index, isLoading, timedOut, isPresent(errorMessage)) })] }), errorMessage && _jsx("p", { className: "typography-small text-error-foreground", children: errorMessage }), isLoading && _jsx(ConsolidationProgress, { candidateCount: candidateCount }), !isLoading && coverageNote && _jsx("p", { className: "typography-small text-muted-foreground", children: coverageNote }), !isLoading && current && (_jsx(ConsolidationClusterReview, { cluster: current, label: label, description: description, onLabelChange: setLabel, onDescriptionChange: setDescription })), _jsxs(DialogFooter, { children: [_jsx(Button, { variant: "ghost", onClick: onClose, children: "Close" }), !isLoading && current && (_jsxs(_Fragment, { children: [_jsx(Button, { variant: "secondary", onClick: handleSkip, disabled: isSaving, children: "Skip" }), _jsx(Button, { onClick: handleMerge, disabled: isSaving || !isPresent(label.trim()), children: isSaving ? "Saving…" : `${copy.confirm} (${current.memories.length})` })] }))] })] }) }));
121
+ }
@@ -0,0 +1,18 @@
1
+ export type MemoriesEmptyStateProps = {
2
+ isOperator?: boolean;
3
+ onAdd: () => void;
4
+ };
5
+ export declare function MemoriesEmptyState(props: MemoriesEmptyStateProps): import("react/jsx-runtime").JSX.Element;
6
+ type CompanyMemoriesEmptyStateProps = {
7
+ onAdd: () => void;
8
+ onSetUp: () => void;
9
+ };
10
+ export declare function CompanyMemoriesEmptyState(props: CompanyMemoriesEmptyStateProps): import("react/jsx-runtime").JSX.Element;
11
+ export declare function CapturedMemoriesEmptyState(): import("react/jsx-runtime").JSX.Element;
12
+ export type GroupMemoriesEmptyStateProps = {
13
+ isOperator?: boolean;
14
+ onAdd?: () => void;
15
+ };
16
+ export declare function GroupMemoriesEmptyState(props: GroupMemoriesEmptyStateProps): import("react/jsx-runtime").JSX.Element;
17
+ export {};
18
+ //# sourceMappingURL=EmptyStates.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EmptyStates.d.ts","sourceRoot":"","sources":["../../../../src/routes/memories/components/EmptyStates.tsx"],"names":[],"mappings":"AAKA,MAAM,MAAM,uBAAuB,GAAG;IACpC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB,CAAC;AAEF,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,uBAAuB,2CAchE;AAED,KAAK,8BAA8B,GAAG;IACpC,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB,CAAC;AAEF,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,8BAA8B,2CAmB9E;AAED,wBAAgB,0BAA0B,4CAYzC;AAED,MAAM,MAAM,4BAA4B,GAAG;IACzC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,IAAI,CAAC;CACpB,CAAC;AAEF,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,4BAA4B,2CAoB1E"}
@@ -0,0 +1,22 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Brain, Building2, MessageSquare, Plus, Users } from "lucide-react";
3
+ import { Link } from "react-router";
4
+ import { Button } from "#components/button/index";
5
+ import { EmptyState } from "#components/empty-state/index";
6
+ export function MemoriesEmptyState(props) {
7
+ const { onAdd } = props;
8
+ return (_jsx(EmptyState, { icon: Brain, title: "No memories yet", description: "Memories help Manta personalize every conversation. Add facts, preferences, or objectives you want Manta to always keep in mind.", children: _jsx(Button, { onClick: onAdd, icon: Plus, children: "Add memory" }) }));
9
+ }
10
+ export function CompanyMemoriesEmptyState(props) {
11
+ const { onAdd, onSetUp } = props;
12
+ return (_jsx(EmptyState, { icon: Building2, title: "No company memories yet", description: "Add shared context that Manta uses for everyone in the company.", children: _jsxs("div", { className: "flex w-full flex-col gap-2 sm:w-auto sm:flex-row", children: [_jsx(Button, { className: "w-full sm:w-auto", onClick: onSetUp, children: "Set up with guided questions" }), _jsx(Button, { className: "w-full sm:w-auto", variant: "ghost", onClick: onAdd, icon: Plus, children: "Add manually" })] }) }));
13
+ }
14
+ export function CapturedMemoriesEmptyState() {
15
+ return (_jsx(EmptyState, { icon: MessageSquare, title: "No captured memories yet", description: "Manta captures useful context from your conversations automatically. Start chatting and memories will appear here.", children: _jsx(Button, { asChild: true, children: _jsx(Link, { to: "/", children: "Start chatting" }) }) }));
16
+ }
17
+ export function GroupMemoriesEmptyState(props) {
18
+ const { isOperator, onAdd } = props;
19
+ return (_jsx(EmptyState, { icon: Users, title: "No team memories yet", description: isOperator
20
+ ? "Add shared context that Manta uses for specific teams in the company."
21
+ : "Your team hasn't added any shared memories yet.", children: onAdd && (_jsx(Button, { onClick: onAdd, icon: Plus, children: "Add team memory" })) }));
22
+ }
@@ -0,0 +1,11 @@
1
+ export type ImportanceSliderProps = {
2
+ value: number;
3
+ onChange: (v: number) => void;
4
+ className?: string;
5
+ };
6
+ export declare function ImportanceSlider(props: ImportanceSliderProps): import("react/jsx-runtime").JSX.Element;
7
+ export type ImportanceIconProps = {
8
+ value: number;
9
+ };
10
+ export declare function ImportanceIcon(props: ImportanceIconProps): import("react/jsx-runtime").JSX.Element | null;
11
+ //# sourceMappingURL=ImportanceSlider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ImportanceSlider.d.ts","sourceRoot":"","sources":["../../../../src/routes/memories/components/ImportanceSlider.tsx"],"names":[],"mappings":"AAqBA,MAAM,MAAM,qBAAqB,GAAG;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,qBAAqB,2CAyC5D;AAED,MAAM,MAAM,mBAAmB,GAAG;IAChC,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,wBAAgB,cAAc,CAAC,KAAK,EAAE,mBAAmB,kDAYxD"}
@@ -0,0 +1,31 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { isPresent } from "@manta-eu/lib/present";
3
+ import { ChevronDown, ChevronUp, ChevronsUp, Equal, Minus } from "lucide-react";
4
+ import { Slider } from "#components/slider/index";
5
+ import { cn } from "#lib/utils";
6
+ const importanceSteps = [1, 2, 3, 4, 5];
7
+ const importanceConfig = {
8
+ 1: { icon: Minus, className: "text-muted-foreground/50", label: "Disabled" },
9
+ 2: { icon: ChevronDown, className: "text-muted-foreground", label: "Low" },
10
+ 3: { icon: Equal, className: "text-default-foreground/60", label: "Medium" },
11
+ 4: { icon: ChevronUp, className: "text-warning-foreground", label: "High" },
12
+ 5: { icon: ChevronsUp, className: "text-error-foreground", label: "Critical" },
13
+ };
14
+ export function ImportanceSlider(props) {
15
+ const { value, onChange, className } = props;
16
+ return (_jsxs("div", { className: cn("flex flex-col gap-2 w-full", className), onClick: (e) => e.stopPropagation(), children: [_jsx(Slider, { min: 1, max: 5, step: 1, value: [value], onValueChange: (vals) => {
17
+ const v = vals[0];
18
+ if (isPresent(v))
19
+ onChange(v);
20
+ }, className: "w-full", "aria-label": "Importance" }), _jsx("div", { className: "flex justify-between px-2", children: importanceSteps.map((step) => (_jsx("div", { className: cn("w-0 overflow-visible flex", step === 1 ? "justify-start" : step === 5 ? "justify-end" : "justify-center"), children: _jsx("span", { onClick: () => onChange(step), className: cn("whitespace-nowrap cursor-pointer select-none", step === value
21
+ ? "typography-tiny-medium text-default-foreground"
22
+ : "typography-tiny text-muted-foreground hover:text-default-foreground"), children: importanceConfig[step]?.label }) }, step))) })] }));
23
+ }
24
+ export function ImportanceIcon(props) {
25
+ const { value } = props;
26
+ const config = importanceConfig[value];
27
+ if (!config)
28
+ return null;
29
+ const Icon = config.icon;
30
+ return (_jsxs("div", { className: cn("inline-flex items-center gap-1", config.className), "aria-label": `Importance: ${config.label}`, children: [_jsx(Icon, { className: "size-4 shrink-0" }), _jsx("span", { className: "typography-small", children: config.label })] }));
31
+ }
@@ -0,0 +1,6 @@
1
+ type LiveContextTabProps = {
2
+ query?: string;
3
+ };
4
+ export declare function LiveContextTab(props: LiveContextTabProps): import("react/jsx-runtime").JSX.Element;
5
+ export {};
6
+ //# sourceMappingURL=LiveContextTab.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LiveContextTab.d.ts","sourceRoot":"","sources":["../../../../src/routes/memories/components/LiveContextTab.tsx"],"names":[],"mappings":"AAQA,KAAK,mBAAmB,GAAG;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAE9C,wBAAgB,cAAc,CAAC,KAAK,EAAE,mBAAmB,2CA4CxD"}
@@ -0,0 +1,37 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { humanPlural } from "@manta-eu/lib/humanize";
3
+ import { isPresent } from "@manta-eu/lib/present";
4
+ import { ChevronRight, Layers, TriangleAlert } from "lucide-react";
5
+ import { useLiveContext } from "../hooks/useLiveContext.js";
6
+ import { Collapsible, CollapsibleContent, CollapsibleTrigger } from "#components/collapsible/index";
7
+ import { EmptyState } from "#components/empty-state/index";
8
+ import { Skeleton } from "#components/skeleton/index";
9
+ export function LiveContextTab(props) {
10
+ const { query = "" } = props;
11
+ const { data: groups, isLoading, error } = useLiveContext();
12
+ if (isLoading) {
13
+ return _jsx(LiveContextSkeleton, {});
14
+ }
15
+ if (error) {
16
+ return (_jsx(EmptyState, { icon: TriangleAlert, iconClassName: "text-error-foreground", title: "Failed to load Live Context", description: error instanceof Error ? error.message : "An unexpected error occurred." }));
17
+ }
18
+ if (!isPresent(groups)) {
19
+ return (_jsx(EmptyState, { icon: Layers, title: "No Live Context yet", description: 'Live Context surfaces high-importance company memories and facts. Add company memories with importance "high" or "critical" to see them here.' }));
20
+ }
21
+ const parsedQuery = String(query).trim().toLowerCase();
22
+ const filtered = isPresent(parsedQuery)
23
+ ? groups.filter((g) => g.typeLabel.toLowerCase().includes(parsedQuery))
24
+ : groups;
25
+ return (_jsxs("div", { className: "flex flex-col gap-6 max-w-3xl mx-auto", children: [!isPresent(filtered) && (_jsx(EmptyState, { icon: Layers, title: "No groups match", description: `No groups found for "${query}".` })), filtered.map((group) => (_jsx(EntityGroupSection, { group: group }, group.type)))] }));
26
+ }
27
+ function EntityGroupSection(props) {
28
+ const { group } = props;
29
+ return (_jsxs("div", { className: "flex flex-col gap-2", children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsx("span", { className: "typography-small-medium text-default-foreground", children: group.typeLabel }), _jsx("span", { className: "inline-flex items-center rounded-full px-2 py-0.5 typography-tiny bg-faint text-muted-foreground", children: group.entities.length }), _jsx("span", { className: "typography-tiny text-muted-foreground font-mono", children: group.type })] }), _jsx("div", { className: "flex flex-col rounded-xl border border-muted-border bg-card overflow-hidden divide-y divide-muted-border", children: group.entities.map((entity) => (_jsx(EntityCard, { compactedIri: entity.compactedIri, properties: entity.properties }, entity.iri))) })] }));
30
+ }
31
+ function EntityCard(props) {
32
+ const { compactedIri, properties } = props;
33
+ return (_jsxs(Collapsible, { children: [_jsxs(CollapsibleTrigger, { className: "group flex w-full items-center gap-2 px-4 py-3 text-left hover:bg-faint transition-colors", children: [_jsx(ChevronRight, { className: "size-3.5 shrink-0 text-muted-foreground transition-transform group-data-[state=open]:rotate-90" }), _jsx("span", { className: "typography-small font-mono text-default-foreground truncate", children: compactedIri }), _jsxs("span", { className: "ml-auto shrink-0 typography-tiny text-muted-foreground", children: [properties.length, " ", humanPlural("property", properties.length)] })] }), _jsx(CollapsibleContent, { children: _jsx("div", { className: "border-t border-muted-border", children: _jsx("table", { className: "w-full text-left", children: _jsx("tbody", { children: properties.map((prop) => (_jsxs("tr", { className: "border-b border-muted-border last:border-0", children: [_jsx("td", { className: "px-4 py-2 align-top w-52 shrink-0", children: _jsx("span", { className: "typography-tiny font-mono text-muted-foreground", children: prop.predicate }) }), _jsx("td", { className: "px-4 py-2 align-top break-all", children: _jsx("span", { className: `typography-small ${prop.isUri ? "text-accent-foreground font-mono" : "text-default-foreground"}`, children: prop.value }) })] }, prop.predicate))) }) }) }) })] }));
34
+ }
35
+ function LiveContextSkeleton() {
36
+ return (_jsx("div", { className: "flex flex-col gap-6 max-w-3xl mx-auto", children: Array.from({ length: 3 }, (_, i) => (_jsxs("div", { className: "flex flex-col gap-2", children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsx(Skeleton, { className: "h-4 w-32 rounded-md" }), _jsx(Skeleton, { className: "h-4 w-6 rounded-full" })] }), _jsx("div", { className: "rounded-xl border border-muted-border overflow-hidden", children: Array.from({ length: i + 1 }, (_, j) => (_jsxs("div", { className: "flex items-center gap-2 px-4 py-3 border-b border-muted-border last:border-0", children: [_jsx(Skeleton, { className: "size-3.5 rounded-sm" }), _jsx(Skeleton, { className: "h-4 flex-1 rounded-md" })] }, `lc-skel-entity-${i}-${j}`))) })] }, `lc-skel-group-${i}`))) }));
37
+ }
@@ -0,0 +1,2 @@
1
+ export declare function LoadingSkeleton(): import("react/jsx-runtime").JSX.Element;
2
+ //# sourceMappingURL=LoadingSkeleton.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LoadingSkeleton.d.ts","sourceRoot":"","sources":["../../../../src/routes/memories/components/LoadingSkeleton.tsx"],"names":[],"mappings":"AAKA,wBAAgB,eAAe,4CAqB9B"}
@@ -0,0 +1,7 @@
1
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Skeleton } from "#components/skeleton/index";
3
+ import { TableSkeleton } from "#components/table-skeleton/index";
4
+ const gridColsClassName = "grid-cols-[16fr_24fr_11fr_9fr_7fr_10fr_9fr_10fr_4fr]";
5
+ export function LoadingSkeleton() {
6
+ return (_jsx(TableSkeleton, { gridColsClassName: gridColsClassName, headerColumnCount: 9, rows: 5, renderRow: () => (_jsxs(_Fragment, { children: [_jsx(Skeleton, { className: "h-4 w-3/4 rounded-md" }), _jsx(Skeleton, { className: "h-4 w-5/6 rounded-md" }), _jsx(Skeleton, { className: "h-5 w-3/4 rounded-full" }), _jsx(Skeleton, { className: "h-5 w-2/3 rounded-full" }), _jsx(Skeleton, { className: "size-5 rounded-md" }), _jsx(Skeleton, { className: "h-4 w-3/4 rounded-md" }), _jsx(Skeleton, { className: "h-4 w-2/3 rounded-md" }), _jsx(Skeleton, { className: "h-4 w-3/4 rounded-md" }), _jsx(Skeleton, { className: "size-4 rounded-md" })] })) }));
7
+ }
@@ -0,0 +1,31 @@
1
+ import { GQLMemoryKind, type GQLMemorySchema } from "@manta-eu/client";
2
+ import type { Table } from "@tanstack/react-table";
3
+ import type { ReactNode } from "react";
4
+ import type { ImportanceFilter, StatusFilterKey } from "../hooks/useMemoryTable.js";
5
+ export type KindFilter = "ALL" | GQLMemoryKind;
6
+ export type SchemaFilter = "ALL" | "NONE" | string;
7
+ export declare const kindFilterOptions: {
8
+ id: KindFilter;
9
+ label: string;
10
+ }[];
11
+ type MemoriesFiltersProps<TData> = {
12
+ tabs?: ReactNode;
13
+ kindFilter: KindFilter;
14
+ onKindFilterChange: (kind: KindFilter) => void;
15
+ searchQuery: string;
16
+ onSearchQueryChange: (query: string) => void;
17
+ importanceFilter: ImportanceFilter;
18
+ onImportanceFilterChange: (importance: ImportanceFilter) => void;
19
+ table: Table<TData>;
20
+ columnLabels?: Record<string, string>;
21
+ columnDefaultOrder?: string[];
22
+ schemas?: GQLMemorySchema[];
23
+ schemaFilter?: SchemaFilter;
24
+ onSchemaFilterChange?: (iri: SchemaFilter) => void;
25
+ statusFilters?: Record<StatusFilterKey, boolean>;
26
+ onStatusFilterChange?: (key: StatusFilterKey, value: boolean) => void;
27
+ visibleStatusFilters?: StatusFilterKey[];
28
+ };
29
+ export declare function MemoriesFilters<TData>(props: MemoriesFiltersProps<TData>): import("react/jsx-runtime").JSX.Element;
30
+ export {};
31
+ //# sourceMappingURL=MemoriesFilters.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MemoriesFilters.d.ts","sourceRoot":"","sources":["../../../../src/routes/memories/components/MemoriesFilters.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,KAAK,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAEvE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAEnD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAuBjF,MAAM,MAAM,UAAU,GAAG,KAAK,GAAG,aAAa,CAAC;AAC/C,MAAM,MAAM,YAAY,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM,CAAC;AA2BnD,eAAO,MAAM,iBAAiB,EAAE;IAAE,EAAE,EAAE,UAAU,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,EAMhE,CAAC;AAWF,KAAK,oBAAoB,CAAC,KAAK,IAAI;IACjC,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,UAAU,EAAE,UAAU,CAAC;IACvB,kBAAkB,EAAE,CAAC,IAAI,EAAE,UAAU,KAAK,IAAI,CAAC;IAC/C,WAAW,EAAE,MAAM,CAAC;IACpB,mBAAmB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7C,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,wBAAwB,EAAE,CAAC,UAAU,EAAE,gBAAgB,KAAK,IAAI,CAAC;IACjE,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC9B,OAAO,CAAC,EAAE,eAAe,EAAE,CAAC;IAC5B,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,oBAAoB,CAAC,EAAE,CAAC,GAAG,EAAE,YAAY,KAAK,IAAI,CAAC;IACnD,aAAa,CAAC,EAAE,MAAM,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;IACjD,oBAAoB,CAAC,EAAE,CAAC,GAAG,EAAE,eAAe,EAAE,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IACtE,oBAAoB,CAAC,EAAE,eAAe,EAAE,CAAC;CAC1C,CAAC;AAEF,wBAAgB,eAAe,CAAC,KAAK,EAAE,KAAK,EAAE,oBAAoB,CAAC,KAAK,CAAC,2CAkTxE"}