@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.
- package/README.md +100 -37
- package/dist/components/breadcrumbs/index.d.ts +26 -0
- package/dist/components/breadcrumbs/index.d.ts.map +1 -0
- package/dist/components/breadcrumbs/index.js +36 -0
- package/dist/components/channel-icon/index.d.ts +1 -2
- package/dist/components/channel-icon/index.d.ts.map +1 -1
- package/dist/components/channel-icon/index.js +0 -4
- package/dist/components/chip/index.d.ts +14 -0
- package/dist/components/chip/index.d.ts.map +1 -0
- package/dist/components/chip/index.js +8 -0
- package/dist/components/editable-text/index.d.ts +13 -0
- package/dist/components/editable-text/index.d.ts.map +1 -0
- package/dist/components/editable-text/index.js +61 -0
- package/dist/components/explain-fact/ExplainFact.d.ts +16 -0
- package/dist/components/explain-fact/ExplainFact.d.ts.map +1 -0
- package/dist/components/{rdfox-explain/RDFoxExplain.js → explain-fact/ExplainFact.js} +12 -12
- package/dist/components/explain-fact/OutdatedFactNotice.d.ts.map +1 -0
- package/dist/components/input/index.d.ts +2 -0
- package/dist/components/input/index.d.ts.map +1 -1
- package/dist/components/input/index.js +2 -0
- package/dist/components/input/input-numeric.d.ts +19 -0
- package/dist/components/input/input-numeric.d.ts.map +1 -0
- package/dist/components/input/input-numeric.js +85 -0
- package/dist/components/input/input-tags.d.ts +17 -0
- package/dist/components/input/input-tags.d.ts.map +1 -0
- package/dist/components/input/input-tags.js +46 -0
- package/dist/components/multi-select/index.d.ts +32 -0
- package/dist/components/multi-select/index.d.ts.map +1 -0
- package/dist/components/multi-select/index.js +33 -0
- package/dist/components/multi-select/toggle-value.d.ts +2 -0
- package/dist/components/multi-select/toggle-value.d.ts.map +1 -0
- package/dist/components/multi-select/toggle-value.js +3 -0
- package/dist/components/plan-row/index.d.ts +2 -1
- package/dist/components/plan-row/index.d.ts.map +1 -1
- package/dist/components/plan-row/index.js +2 -14
- package/dist/components/sidebar/index.d.ts +4 -1
- package/dist/components/sidebar/index.d.ts.map +1 -1
- package/dist/components/sidebar/index.js +2 -2
- package/dist/components/skeleton/index.js +1 -1
- package/dist/components/tool-invocation-card/ExplainFactResultDisplay.d.ts +9 -0
- package/dist/components/tool-invocation-card/ExplainFactResultDisplay.d.ts.map +1 -0
- package/dist/components/tool-invocation-card/{ExplainRDFoxResultDisplay.js → ExplainFactResultDisplay.js} +3 -3
- package/dist/components/tool-invocation-card/ToolOutputRenderer.js +2 -2
- package/dist/components/tool-invocation-card/types.d.ts +4 -4
- package/dist/components/tool-invocation-card/types.d.ts.map +1 -1
- package/dist/components/tool-invocation-card/types.js +2 -2
- package/dist/components/tree-multi-select/index.d.ts +1 -1
- package/dist/components/tree-multi-select/index.d.ts.map +1 -1
- package/dist/components/tree-multi-select/index.js +1 -1
- package/dist/components/tree-multi-select/tree-multi-select-rows.d.ts +2 -1
- package/dist/components/tree-multi-select/tree-multi-select-rows.d.ts.map +1 -1
- package/dist/components/tree-multi-select/tree-multi-select-rows.js +21 -31
- package/dist/components/tree-multi-select/tree-multi-select.d.ts +2 -0
- package/dist/components/tree-multi-select/tree-multi-select.d.ts.map +1 -1
- package/dist/components/tree-multi-select/tree-multi-select.js +21 -8
- package/dist/explain-fact/DatalogCode.d.ts.map +1 -0
- package/dist/explain-fact/EntityChip.d.ts.map +1 -0
- package/dist/explain-fact/EntityChip.js +17 -0
- package/dist/explain-fact/ExplainCompactView.d.ts.map +1 -0
- package/dist/explain-fact/ExplainFactState.d.ts +7 -0
- package/dist/explain-fact/ExplainFactState.d.ts.map +1 -0
- package/dist/{rdfox-explain/RDFoxExplainState.js → explain-fact/ExplainFactState.js} +1 -1
- package/dist/explain-fact/ExplainFullView.d.ts.map +1 -0
- package/dist/explain-fact/ExplainStates.d.ts.map +1 -0
- package/dist/explain-fact/ExplainTag.d.ts.map +1 -0
- package/dist/explain-fact/FactNotice.d.ts +7 -0
- package/dist/explain-fact/FactNotice.d.ts.map +1 -0
- package/dist/explain-fact/FactNotice.js +25 -0
- package/dist/explain-fact/FactValue.d.ts.map +1 -0
- package/dist/explain-fact/NumDot.d.ts.map +1 -0
- package/dist/explain-fact/PanelLabel.d.ts.map +1 -0
- package/dist/explain-fact/ProofSubjectHeader.d.ts.map +1 -0
- package/dist/explain-fact/ProvenanceBadge.d.ts.map +1 -0
- package/dist/{rdfox-explain → explain-fact}/ProvenanceBadge.js +2 -1
- package/dist/explain-fact/RuleVariableTypes.d.ts.map +1 -0
- package/dist/explain-fact/SubstitutedFactNotice.d.ts.map +1 -0
- package/dist/explain-fact/ValuePill.d.ts.map +1 -0
- package/dist/explain-fact/conclusion/ConclusionCard.d.ts.map +1 -0
- package/dist/explain-fact/conclusion/ConclusionSubtitle.d.ts.map +1 -0
- package/dist/{rdfox-explain → explain-fact}/conclusion/ConclusionSubtitle.js +3 -1
- package/dist/explain-fact/conclusion/index.d.ts.map +1 -0
- package/dist/explain-fact/explain-styles.d.ts.map +1 -0
- package/dist/explain-fact/fact-token.d.ts.map +1 -0
- package/dist/explain-fact/formula-hues.d.ts.map +1 -0
- package/dist/{rdfox-explain → explain-fact}/index.d.ts +2 -3
- package/dist/explain-fact/index.d.ts.map +1 -0
- package/dist/{rdfox-explain → explain-fact}/index.js +2 -3
- package/dist/explain-fact/inspector/ExplainInspector.d.ts.map +1 -0
- package/dist/explain-fact/inspector/ExplainInspector.js +20 -0
- package/dist/explain-fact/inspector/InspectorBindings.d.ts.map +1 -0
- package/dist/explain-fact/inspector/InspectorFact.d.ts.map +1 -0
- package/dist/explain-fact/inspector/InspectorHeader.d.ts.map +1 -0
- package/dist/{rdfox-explain → explain-fact}/inspector/InspectorRule.d.ts +3 -0
- package/dist/explain-fact/inspector/InspectorRule.d.ts.map +1 -0
- package/dist/{rdfox-explain → explain-fact}/inspector/InspectorRule.js +4 -5
- package/dist/explain-fact/inspector/SupportsSection.d.ts.map +1 -0
- package/dist/{rdfox-explain → explain-fact}/inspector/SupportsSection.js +2 -1
- package/dist/explain-fact/inspector/index.d.ts.map +1 -0
- package/dist/explain-fact/proof-tree/ProofFactLabel.d.ts.map +1 -0
- package/dist/explain-fact/proof-tree/ProofRowBadge.d.ts.map +1 -0
- package/dist/explain-fact/proof-tree/ProofRowContent.d.ts.map +1 -0
- package/dist/explain-fact/proof-tree/ProofRowValue.d.ts.map +1 -0
- package/dist/explain-fact/proof-tree/ProofTree.d.ts.map +1 -0
- package/dist/{rdfox-explain → explain-fact}/proof-tree/ProofTree.js +1 -1
- package/dist/explain-fact/proof-tree/ProofTreeFormulaFooter.d.ts.map +1 -0
- package/dist/explain-fact/proof-tree/ProofTreeNode.d.ts.map +1 -0
- package/dist/explain-fact/proof-tree/SupportsTag.d.ts.map +1 -0
- package/dist/explain-fact/proof-tree/SupportsTag.js +6 -0
- package/dist/explain-fact/proof-tree/index.d.ts.map +1 -0
- package/dist/explain-fact/proof-tree/proof-tree-navigation.d.ts.map +1 -0
- package/dist/explain-fact/proof-tree/proof-tree-root-view.d.ts.map +1 -0
- package/dist/explain-fact/proof-tree/visible-premises.d.ts.map +1 -0
- package/dist/explain-fact/rule-presentation.d.ts.map +1 -0
- package/dist/{rdfox-explain → explain-fact}/tree-model.d.ts +18 -9
- package/dist/explain-fact/tree-model.d.ts.map +1 -0
- package/dist/{rdfox-explain → explain-fact}/tree-model.js +19 -10
- package/dist/explain-fact/use-fact-measure.d.ts.map +1 -0
- package/dist/globals.css +383 -108
- package/dist/graph/nodes/AdMockupCard.js +1 -1
- package/dist/graph/nodes/CreativeMediaCard.js +1 -1
- package/dist/graph/nodes/EntityCardShell.js +1 -1
- package/dist/hooks/use-conversation-starters.d.ts +1 -1
- package/dist/hooks/useValidateActionPlan.d.ts.map +1 -1
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -0
- package/dist/ldo-ui.d.ts +1 -1
- package/dist/ldo-ui.d.ts.map +1 -1
- package/dist/ldo-ui.js +1 -1
- package/dist/lib/datastore-route-paths.d.ts +2 -2
- package/dist/lib/datastore-route-paths.d.ts.map +1 -1
- package/dist/lib/datastore-route-paths.js +2 -2
- package/dist/lib/datastore-route-table.d.ts +36 -0
- package/dist/lib/datastore-route-table.d.ts.map +1 -0
- package/dist/lib/datastore-route-table.js +43 -0
- package/dist/lib/datastore-routes.d.ts +1 -1
- package/dist/lib/datastore-routes.d.ts.map +1 -1
- package/dist/lib/datastore-routes.js +1 -1
- package/dist/lib/spa-routes.d.ts +3 -0
- package/dist/lib/spa-routes.d.ts.map +1 -0
- package/dist/lib/spa-routes.js +5 -0
- package/dist/routes/data-explorer/components/Breadcrumbs.d.ts.map +1 -1
- package/dist/routes/data-explorer/components/Breadcrumbs.js +5 -5
- package/dist/routes/datastores/components/DatastoreFormDialog.d.ts +18 -0
- package/dist/routes/datastores/components/DatastoreFormDialog.d.ts.map +1 -0
- package/dist/routes/datastores/components/DatastoreFormDialog.js +27 -0
- package/dist/routes/datastores/components/DatastoreTableSkeleton.d.ts +2 -0
- package/dist/routes/datastores/components/DatastoreTableSkeleton.d.ts.map +1 -0
- package/dist/routes/datastores/components/DatastoreTableSkeleton.js +7 -0
- package/dist/routes/datastores/components/DatastoresToolbar.d.ts +18 -0
- package/dist/routes/datastores/components/DatastoresToolbar.d.ts.map +1 -0
- package/dist/routes/datastores/components/DatastoresToolbar.js +29 -0
- package/dist/routes/datastores/components/LinkUnlinkedDatastoreDialog.d.ts +14 -0
- package/dist/routes/datastores/components/LinkUnlinkedDatastoreDialog.d.ts.map +1 -0
- package/dist/routes/datastores/components/LinkUnlinkedDatastoreDialog.js +83 -0
- package/dist/routes/datastores/components/RenameDatastoreGroupDialog.d.ts +9 -0
- package/dist/routes/datastores/components/RenameDatastoreGroupDialog.d.ts.map +1 -0
- package/dist/routes/datastores/components/RenameDatastoreGroupDialog.js +21 -0
- package/dist/routes/datastores/components/StatusBadge.d.ts +21 -0
- package/dist/routes/datastores/components/StatusBadge.d.ts.map +1 -0
- package/dist/routes/datastores/components/StatusBadge.js +49 -0
- package/dist/routes/datastores/components/UnlinkedDatastoresPanel.d.ts +20 -0
- package/dist/routes/datastores/components/UnlinkedDatastoresPanel.d.ts.map +1 -0
- package/dist/routes/datastores/components/UnlinkedDatastoresPanel.js +13 -0
- package/dist/routes/datastores/flatten.d.ts +33 -0
- package/dist/routes/datastores/flatten.d.ts.map +1 -0
- package/dist/routes/datastores/flatten.js +86 -0
- package/dist/routes/datastores/hooks/useDatastoreColumns.d.ts +47 -0
- package/dist/routes/datastores/hooks/useDatastoreColumns.d.ts.map +1 -0
- package/dist/routes/datastores/hooks/useDatastoreColumns.js +165 -0
- package/dist/routes/datastores/hooks/useDatastoreTable.d.ts +14 -0
- package/dist/routes/datastores/hooks/useDatastoreTable.d.ts.map +1 -0
- package/dist/routes/datastores/hooks/useDatastoreTable.js +45 -0
- package/dist/routes/datastores/index.d.ts +2 -0
- package/dist/routes/datastores/index.d.ts.map +1 -0
- package/dist/routes/datastores/index.js +467 -0
- package/dist/routes/explain/ExplainEmpty.d.ts +2 -0
- package/dist/routes/explain/ExplainEmpty.d.ts.map +1 -0
- package/dist/routes/explain/ExplainEmpty.js +8 -0
- package/dist/routes/explain/index.d.ts +2 -0
- package/dist/routes/explain/index.d.ts.map +1 -0
- package/dist/routes/explain/index.js +16 -0
- package/dist/routes/explain/url-params.d.ts +9 -0
- package/dist/routes/explain/url-params.d.ts.map +1 -0
- package/dist/routes/explain/url-params.js +21 -0
- package/dist/routes/integrations/components/ConnectionRow.d.ts.map +1 -1
- package/dist/routes/integrations/components/ConnectionRow.js +1 -1
- package/dist/routes/integrations/connection-view.d.ts.map +1 -1
- package/dist/routes/integrations/connection-view.js +17 -1
- package/dist/routes/integrations/types.d.ts +2 -1
- package/dist/routes/integrations/types.d.ts.map +1 -1
- package/dist/routes/memories/components/ChangeScopeDialog.d.ts +12 -0
- package/dist/routes/memories/components/ChangeScopeDialog.d.ts.map +1 -0
- package/dist/routes/memories/components/ChangeScopeDialog.js +89 -0
- package/dist/routes/memories/components/ConflictMemoryCard.d.ts +13 -0
- package/dist/routes/memories/components/ConflictMemoryCard.d.ts.map +1 -0
- package/dist/routes/memories/components/ConflictMemoryCard.js +43 -0
- package/dist/routes/memories/components/ConflictTimeoutFooter.d.ts +7 -0
- package/dist/routes/memories/components/ConflictTimeoutFooter.d.ts.map +1 -0
- package/dist/routes/memories/components/ConflictTimeoutFooter.js +6 -0
- package/dist/routes/memories/components/ConsolidationReviewDialog.d.ts +61 -0
- package/dist/routes/memories/components/ConsolidationReviewDialog.d.ts.map +1 -0
- package/dist/routes/memories/components/ConsolidationReviewDialog.js +121 -0
- package/dist/routes/memories/components/EmptyStates.d.ts +18 -0
- package/dist/routes/memories/components/EmptyStates.d.ts.map +1 -0
- package/dist/routes/memories/components/EmptyStates.js +22 -0
- package/dist/routes/memories/components/ImportanceSlider.d.ts +11 -0
- package/dist/routes/memories/components/ImportanceSlider.d.ts.map +1 -0
- package/dist/routes/memories/components/ImportanceSlider.js +31 -0
- package/dist/routes/memories/components/LiveContextTab.d.ts +6 -0
- package/dist/routes/memories/components/LiveContextTab.d.ts.map +1 -0
- package/dist/routes/memories/components/LiveContextTab.js +37 -0
- package/dist/routes/memories/components/LoadingSkeleton.d.ts +2 -0
- package/dist/routes/memories/components/LoadingSkeleton.d.ts.map +1 -0
- package/dist/routes/memories/components/LoadingSkeleton.js +7 -0
- package/dist/routes/memories/components/MemoriesFilters.d.ts +31 -0
- package/dist/routes/memories/components/MemoriesFilters.d.ts.map +1 -0
- package/dist/routes/memories/components/MemoriesFilters.js +88 -0
- package/dist/routes/memories/components/MemoriesPanel.d.ts +6 -0
- package/dist/routes/memories/components/MemoriesPanel.d.ts.map +1 -0
- package/dist/routes/memories/components/MemoriesPanel.js +99 -0
- package/dist/routes/memories/components/MemoriesTabPanel.d.ts +30 -0
- package/dist/routes/memories/components/MemoriesTabPanel.d.ts.map +1 -0
- package/dist/routes/memories/components/MemoriesTabPanel.js +11 -0
- package/dist/routes/memories/components/MemoryActions.d.ts +12 -0
- package/dist/routes/memories/components/MemoryActions.d.ts.map +1 -0
- package/dist/routes/memories/components/MemoryActions.js +24 -0
- package/dist/routes/memories/components/MemoryFields.d.ts +32 -0
- package/dist/routes/memories/components/MemoryFields.d.ts.map +1 -0
- package/dist/routes/memories/components/MemoryFields.js +30 -0
- package/dist/routes/memories/components/MemoryFormDialog.d.ts +15 -0
- package/dist/routes/memories/components/MemoryFormDialog.d.ts.map +1 -0
- package/dist/routes/memories/components/MemoryFormDialog.js +299 -0
- package/dist/routes/memories/components/MemoryOnboardingWizard.d.ts +9 -0
- package/dist/routes/memories/components/MemoryOnboardingWizard.d.ts.map +1 -0
- package/dist/routes/memories/components/MemoryOnboardingWizard.js +99 -0
- package/dist/routes/memories/components/RestoreBlockedDialog.d.ts +8 -0
- package/dist/routes/memories/components/RestoreBlockedDialog.d.ts.map +1 -0
- package/dist/routes/memories/components/RestoreBlockedDialog.js +7 -0
- package/dist/routes/memories/components/SchemasTab.d.ts +6 -0
- package/dist/routes/memories/components/SchemasTab.d.ts.map +1 -0
- package/dist/routes/memories/components/SchemasTab.js +35 -0
- package/dist/routes/memories/components/SupersessionConflictDialog.d.ts +18 -0
- package/dist/routes/memories/components/SupersessionConflictDialog.d.ts.map +1 -0
- package/dist/routes/memories/components/SupersessionConflictDialog.js +78 -0
- package/dist/routes/memories/components/TeamPicker.d.ts +8 -0
- package/dist/routes/memories/components/TeamPicker.d.ts.map +1 -0
- package/dist/routes/memories/components/TeamPicker.js +25 -0
- package/dist/routes/memories/components/badges.d.ts +50 -0
- package/dist/routes/memories/components/badges.d.ts.map +1 -0
- package/dist/routes/memories/components/badges.js +106 -0
- package/dist/routes/memories/expiry-utils.d.ts +23 -0
- package/dist/routes/memories/expiry-utils.d.ts.map +1 -0
- package/dist/routes/memories/expiry-utils.js +97 -0
- package/dist/routes/memories/hooks/useConflictCheck.d.ts +18 -0
- package/dist/routes/memories/hooks/useConflictCheck.d.ts.map +1 -0
- package/dist/routes/memories/hooks/useConflictCheck.js +35 -0
- package/dist/routes/memories/hooks/useDuplicateDetection.d.ts +11 -0
- package/dist/routes/memories/hooks/useDuplicateDetection.d.ts.map +1 -0
- package/dist/routes/memories/hooks/useDuplicateDetection.js +73 -0
- package/dist/routes/memories/hooks/useLiveContext.d.ts +23 -0
- package/dist/routes/memories/hooks/useLiveContext.d.ts.map +1 -0
- package/dist/routes/memories/hooks/useLiveContext.js +102 -0
- package/dist/routes/memories/hooks/useMemoryColumns.d.ts +33 -0
- package/dist/routes/memories/hooks/useMemoryColumns.d.ts.map +1 -0
- package/dist/routes/memories/hooks/useMemoryColumns.js +188 -0
- package/dist/routes/memories/hooks/useMemoryTable.d.ts +33 -0
- package/dist/routes/memories/hooks/useMemoryTable.d.ts.map +1 -0
- package/dist/routes/memories/hooks/useMemoryTable.js +121 -0
- package/dist/routes/memories/index.d.ts +11 -0
- package/dist/routes/memories/index.d.ts.map +1 -0
- package/dist/routes/memories/index.js +472 -0
- package/dist/routes/memories/memory-form-validation.d.ts +8 -0
- package/dist/routes/memories/memory-form-validation.d.ts.map +1 -0
- package/dist/routes/memories/memory-form-validation.js +33 -0
- package/dist/routes/memories/memory-mutation-input.d.ts +6 -0
- package/dist/routes/memories/memory-mutation-input.d.ts.map +1 -0
- package/dist/routes/memories/memory-mutation-input.js +41 -0
- package/dist/routes/plans/components/actionPlansTableConfig.d.ts +3 -3
- package/dist/routes/rules/components/CreateRuleChatModal.d.ts +10 -0
- package/dist/routes/rules/components/CreateRuleChatModal.d.ts.map +1 -0
- package/dist/routes/rules/components/CreateRuleChatModal.js +52 -0
- package/dist/routes/rules/components/RuleActionabilityBadge.d.ts +8 -0
- package/dist/routes/rules/components/RuleActionabilityBadge.d.ts.map +1 -0
- package/dist/routes/rules/components/RuleActionabilityBadge.js +18 -0
- package/dist/routes/rules/components/RuleAffectedActionPlansSection.d.ts +6 -0
- package/dist/routes/rules/components/RuleAffectedActionPlansSection.d.ts.map +1 -0
- package/dist/routes/rules/components/RuleAffectedActionPlansSection.js +151 -0
- package/dist/routes/rules/components/RuleAst.d.ts +6 -0
- package/dist/routes/rules/components/RuleAst.d.ts.map +1 -0
- package/dist/routes/rules/components/RuleAst.js +23 -0
- package/dist/routes/rules/components/RuleDependentRulesSection.d.ts +6 -0
- package/dist/routes/rules/components/RuleDependentRulesSection.d.ts.map +1 -0
- package/dist/routes/rules/components/RuleDependentRulesSection.js +16 -0
- package/dist/routes/rules/components/RuleDetailsPage.d.ts +14 -0
- package/dist/routes/rules/components/RuleDetailsPage.d.ts.map +1 -0
- package/dist/routes/rules/components/RuleDetailsPage.js +51 -0
- package/dist/routes/rules/components/RuleProducersSection.d.ts +7 -0
- package/dist/routes/rules/components/RuleProducersSection.d.ts.map +1 -0
- package/dist/routes/rules/components/RuleProducersSection.js +10 -0
- package/dist/routes/rules/components/RuleSampleFactsSection.d.ts +7 -0
- package/dist/routes/rules/components/RuleSampleFactsSection.d.ts.map +1 -0
- package/dist/routes/rules/components/RuleSampleFactsSection.js +70 -0
- package/dist/routes/rules/components/RulesOverviewHeaderActions.d.ts +17 -0
- package/dist/routes/rules/components/RulesOverviewHeaderActions.d.ts.map +1 -0
- package/dist/routes/rules/components/RulesOverviewHeaderActions.js +55 -0
- package/dist/routes/rules/components/RulesOverviewPage.d.ts +13 -0
- package/dist/routes/rules/components/RulesOverviewPage.d.ts.map +1 -0
- package/dist/routes/rules/components/RulesOverviewPage.js +236 -0
- package/dist/routes/rules/components/SupportedActionShapesList/SupportedActionShapeDetails.d.ts +7 -0
- package/dist/routes/rules/components/SupportedActionShapesList/SupportedActionShapeDetails.d.ts.map +1 -0
- package/dist/routes/rules/components/SupportedActionShapesList/SupportedActionShapeDetails.js +47 -0
- package/dist/routes/rules/components/SupportedActionShapesList/SupportedActionShapesList.d.ts +8 -0
- package/dist/routes/rules/components/SupportedActionShapesList/SupportedActionShapesList.d.ts.map +1 -0
- package/dist/routes/rules/components/SupportedActionShapesList/SupportedActionShapesList.js +76 -0
- package/dist/routes/rules/components/SupportedActionShapesList/TokenList.d.ts +6 -0
- package/dist/routes/rules/components/SupportedActionShapesList/TokenList.d.ts.map +1 -0
- package/dist/routes/rules/components/SupportedActionShapesList/TokenList.js +9 -0
- package/dist/routes/rules/components/SupportedActionShapesList/index.d.ts +2 -0
- package/dist/routes/rules/components/SupportedActionShapesList/index.d.ts.map +1 -0
- package/dist/routes/rules/components/SupportedActionShapesList/index.js +1 -0
- package/dist/routes/rules/components/SupportedActionShapesList/shacl-shape.d.ts +20 -0
- package/dist/routes/rules/components/SupportedActionShapesList/shacl-shape.d.ts.map +1 -0
- package/dist/routes/rules/components/SupportedActionShapesList/shacl-shape.js +48 -0
- package/dist/routes/rules/components/datalog-editor/BindingsPreview.d.ts +9 -0
- package/dist/routes/rules/components/datalog-editor/BindingsPreview.d.ts.map +1 -0
- package/dist/routes/rules/components/datalog-editor/BindingsPreview.js +38 -0
- package/dist/routes/rules/components/datalog-editor/FactsPreview.d.ts +10 -0
- package/dist/routes/rules/components/datalog-editor/FactsPreview.d.ts.map +1 -0
- package/dist/routes/rules/components/datalog-editor/FactsPreview.js +43 -0
- package/dist/routes/rules/components/datalog-editor/PreviewPanel.d.ts +7 -0
- package/dist/routes/rules/components/datalog-editor/PreviewPanel.d.ts.map +1 -0
- package/dist/routes/rules/components/datalog-editor/PreviewPanel.js +8 -0
- package/dist/routes/rules/components/datalog-editor/QueryResults.d.ts +9 -0
- package/dist/routes/rules/components/datalog-editor/QueryResults.d.ts.map +1 -0
- package/dist/routes/rules/components/datalog-editor/QueryResults.js +22 -0
- package/dist/routes/rules/components/datalog-editor/SparqlQueryPanel.d.ts +11 -0
- package/dist/routes/rules/components/datalog-editor/SparqlQueryPanel.d.ts.map +1 -0
- package/dist/routes/rules/components/datalog-editor/SparqlQueryPanel.js +21 -0
- package/dist/routes/rules/components/rule-producers.d.ts +15 -0
- package/dist/routes/rules/components/rule-producers.d.ts.map +1 -0
- package/dist/routes/rules/components/rule-producers.js +76 -0
- package/dist/routes/rules/components/sample-facts-query.d.ts +9 -0
- package/dist/routes/rules/components/sample-facts-query.d.ts.map +1 -0
- package/dist/routes/rules/components/sample-facts-query.js +71 -0
- package/dist/routes/rules/datalog-editor.d.ts +6 -0
- package/dist/routes/rules/datalog-editor.d.ts.map +1 -0
- package/dist/routes/rules/datalog-editor.js +7 -0
- package/dist/routes/rules/hooks/useRuleFactsPreview.d.ts +53 -0
- package/dist/routes/rules/hooks/useRuleFactsPreview.d.ts.map +1 -0
- package/dist/routes/rules/hooks/useRuleFactsPreview.js +214 -0
- package/dist/routes/rules/hooks/useSparqlQueryExecution.d.ts +14 -0
- package/dist/routes/rules/hooks/useSparqlQueryExecution.d.ts.map +1 -0
- package/dist/routes/rules/hooks/useSparqlQueryExecution.js +77 -0
- package/dist/routes/rules/pages.d.ts +6 -0
- package/dist/routes/rules/pages.d.ts.map +1 -0
- package/dist/routes/rules/pages.js +7 -0
- package/dist/rules/RuleNameLink.d.ts +6 -0
- package/dist/rules/RuleNameLink.d.ts.map +1 -0
- package/dist/rules/RuleNameLink.js +8 -0
- package/package.json +64 -24
- package/src/globals.css +18 -18
- package/src/themes/manta-dark.css +1 -4
- package/src/themes/manta.css +1 -0
- package/src/themes/standard.css +12 -11
- package/dist/components/channel-icon/marketer-icon.d.ts +0 -4
- package/dist/components/channel-icon/marketer-icon.d.ts.map +0 -1
- package/dist/components/channel-icon/marketer-icon.js +0 -6
- package/dist/components/rdfox-explain/OutdatedFactNotice.d.ts.map +0 -1
- package/dist/components/rdfox-explain/RDFoxExplain.d.ts +0 -16
- package/dist/components/rdfox-explain/RDFoxExplain.d.ts.map +0 -1
- package/dist/components/tool-invocation-card/ExplainRDFoxResultDisplay.d.ts +0 -9
- package/dist/components/tool-invocation-card/ExplainRDFoxResultDisplay.d.ts.map +0 -1
- package/dist/lib/test-utils.d.ts +0 -4
- package/dist/lib/test-utils.d.ts.map +0 -1
- package/dist/lib/test-utils.js +0 -16
- package/dist/rdfox-explain/AbsentFactNotice.d.ts +0 -5
- package/dist/rdfox-explain/AbsentFactNotice.d.ts.map +0 -1
- package/dist/rdfox-explain/AbsentFactNotice.js +0 -6
- package/dist/rdfox-explain/DatalogCode.d.ts.map +0 -1
- package/dist/rdfox-explain/EntityChip.d.ts.map +0 -1
- package/dist/rdfox-explain/EntityChip.js +0 -9
- package/dist/rdfox-explain/ExplainCompactView.d.ts.map +0 -1
- package/dist/rdfox-explain/ExplainFullView.d.ts.map +0 -1
- package/dist/rdfox-explain/ExplainStates.d.ts.map +0 -1
- package/dist/rdfox-explain/ExplainTag.d.ts.map +0 -1
- package/dist/rdfox-explain/FactValue.d.ts.map +0 -1
- package/dist/rdfox-explain/NumDot.d.ts.map +0 -1
- package/dist/rdfox-explain/PanelLabel.d.ts.map +0 -1
- package/dist/rdfox-explain/ProofSubjectHeader.d.ts.map +0 -1
- package/dist/rdfox-explain/ProvenanceBadge.d.ts.map +0 -1
- package/dist/rdfox-explain/RDFoxExplainState.d.ts +0 -7
- package/dist/rdfox-explain/RDFoxExplainState.d.ts.map +0 -1
- package/dist/rdfox-explain/RuleVariableTypes.d.ts.map +0 -1
- package/dist/rdfox-explain/StoredFactNotice.d.ts +0 -5
- package/dist/rdfox-explain/StoredFactNotice.d.ts.map +0 -1
- package/dist/rdfox-explain/StoredFactNotice.js +0 -6
- package/dist/rdfox-explain/SubstitutedFactNotice.d.ts.map +0 -1
- package/dist/rdfox-explain/ValuePill.d.ts.map +0 -1
- package/dist/rdfox-explain/busy-aggregate-fixture.d.ts +0 -7
- package/dist/rdfox-explain/busy-aggregate-fixture.d.ts.map +0 -1
- package/dist/rdfox-explain/busy-aggregate-fixture.js +0 -6
- package/dist/rdfox-explain/conclusion/ConclusionCard.d.ts.map +0 -1
- package/dist/rdfox-explain/conclusion/ConclusionSubtitle.d.ts.map +0 -1
- package/dist/rdfox-explain/conclusion/index.d.ts.map +0 -1
- package/dist/rdfox-explain/explain-styles.d.ts.map +0 -1
- package/dist/rdfox-explain/fact-token.d.ts.map +0 -1
- package/dist/rdfox-explain/formula-hues.d.ts.map +0 -1
- package/dist/rdfox-explain/index.d.ts.map +0 -1
- package/dist/rdfox-explain/inspector/ExplainInspector.d.ts.map +0 -1
- package/dist/rdfox-explain/inspector/ExplainInspector.js +0 -22
- package/dist/rdfox-explain/inspector/InspectorBindings.d.ts.map +0 -1
- package/dist/rdfox-explain/inspector/InspectorFact.d.ts.map +0 -1
- package/dist/rdfox-explain/inspector/InspectorHeader.d.ts.map +0 -1
- package/dist/rdfox-explain/inspector/InspectorRule.d.ts.map +0 -1
- package/dist/rdfox-explain/inspector/SupportsSection.d.ts.map +0 -1
- package/dist/rdfox-explain/inspector/index.d.ts.map +0 -1
- package/dist/rdfox-explain/proof-tree/ProofFactLabel.d.ts.map +0 -1
- package/dist/rdfox-explain/proof-tree/ProofRowBadge.d.ts.map +0 -1
- package/dist/rdfox-explain/proof-tree/ProofRowContent.d.ts.map +0 -1
- package/dist/rdfox-explain/proof-tree/ProofRowValue.d.ts.map +0 -1
- package/dist/rdfox-explain/proof-tree/ProofTree.d.ts.map +0 -1
- package/dist/rdfox-explain/proof-tree/ProofTreeFormulaFooter.d.ts.map +0 -1
- package/dist/rdfox-explain/proof-tree/ProofTreeNode.d.ts.map +0 -1
- package/dist/rdfox-explain/proof-tree/SupportsTag.d.ts.map +0 -1
- package/dist/rdfox-explain/proof-tree/SupportsTag.js +0 -6
- package/dist/rdfox-explain/proof-tree/index.d.ts.map +0 -1
- package/dist/rdfox-explain/proof-tree/proof-tree-navigation.d.ts.map +0 -1
- package/dist/rdfox-explain/proof-tree/proof-tree-root-view.d.ts.map +0 -1
- package/dist/rdfox-explain/proof-tree/visible-premises.d.ts.map +0 -1
- package/dist/rdfox-explain/rule-presentation.d.ts.map +0 -1
- package/dist/rdfox-explain/tree-model.d.ts.map +0 -1
- package/dist/rdfox-explain/use-fact-measure.d.ts.map +0 -1
- package/dist/test-support.d.ts +0 -9
- package/dist/test-support.d.ts.map +0 -1
- package/dist/test-support.js +0 -18
- package/src/themes/marketer-dark.css +0 -70
- /package/dist/components/{rdfox-explain → explain-fact}/OutdatedFactNotice.d.ts +0 -0
- /package/dist/components/{rdfox-explain → explain-fact}/OutdatedFactNotice.js +0 -0
- /package/dist/{rdfox-explain → explain-fact}/DatalogCode.d.ts +0 -0
- /package/dist/{rdfox-explain → explain-fact}/DatalogCode.js +0 -0
- /package/dist/{rdfox-explain → explain-fact}/EntityChip.d.ts +0 -0
- /package/dist/{rdfox-explain → explain-fact}/ExplainCompactView.d.ts +0 -0
- /package/dist/{rdfox-explain → explain-fact}/ExplainCompactView.js +0 -0
- /package/dist/{rdfox-explain → explain-fact}/ExplainFullView.d.ts +0 -0
- /package/dist/{rdfox-explain → explain-fact}/ExplainFullView.js +0 -0
- /package/dist/{rdfox-explain → explain-fact}/ExplainStates.d.ts +0 -0
- /package/dist/{rdfox-explain → explain-fact}/ExplainStates.js +0 -0
- /package/dist/{rdfox-explain → explain-fact}/ExplainTag.d.ts +0 -0
- /package/dist/{rdfox-explain → explain-fact}/ExplainTag.js +0 -0
- /package/dist/{rdfox-explain → explain-fact}/FactValue.d.ts +0 -0
- /package/dist/{rdfox-explain → explain-fact}/FactValue.js +0 -0
- /package/dist/{rdfox-explain → explain-fact}/NumDot.d.ts +0 -0
- /package/dist/{rdfox-explain → explain-fact}/NumDot.js +0 -0
- /package/dist/{rdfox-explain → explain-fact}/PanelLabel.d.ts +0 -0
- /package/dist/{rdfox-explain → explain-fact}/PanelLabel.js +0 -0
- /package/dist/{rdfox-explain → explain-fact}/ProofSubjectHeader.d.ts +0 -0
- /package/dist/{rdfox-explain → explain-fact}/ProofSubjectHeader.js +0 -0
- /package/dist/{rdfox-explain → explain-fact}/ProvenanceBadge.d.ts +0 -0
- /package/dist/{rdfox-explain → explain-fact}/RuleVariableTypes.d.ts +0 -0
- /package/dist/{rdfox-explain → explain-fact}/RuleVariableTypes.js +0 -0
- /package/dist/{rdfox-explain → explain-fact}/SubstitutedFactNotice.d.ts +0 -0
- /package/dist/{rdfox-explain → explain-fact}/SubstitutedFactNotice.js +0 -0
- /package/dist/{rdfox-explain → explain-fact}/ValuePill.d.ts +0 -0
- /package/dist/{rdfox-explain → explain-fact}/ValuePill.js +0 -0
- /package/dist/{rdfox-explain → explain-fact}/conclusion/ConclusionCard.d.ts +0 -0
- /package/dist/{rdfox-explain → explain-fact}/conclusion/ConclusionCard.js +0 -0
- /package/dist/{rdfox-explain → explain-fact}/conclusion/ConclusionSubtitle.d.ts +0 -0
- /package/dist/{rdfox-explain → explain-fact}/conclusion/index.d.ts +0 -0
- /package/dist/{rdfox-explain → explain-fact}/conclusion/index.js +0 -0
- /package/dist/{rdfox-explain → explain-fact}/explain-styles.d.ts +0 -0
- /package/dist/{rdfox-explain → explain-fact}/explain-styles.js +0 -0
- /package/dist/{rdfox-explain → explain-fact}/fact-token.d.ts +0 -0
- /package/dist/{rdfox-explain → explain-fact}/fact-token.js +0 -0
- /package/dist/{rdfox-explain → explain-fact}/formula-hues.d.ts +0 -0
- /package/dist/{rdfox-explain → explain-fact}/formula-hues.js +0 -0
- /package/dist/{rdfox-explain → explain-fact}/inspector/ExplainInspector.d.ts +0 -0
- /package/dist/{rdfox-explain → explain-fact}/inspector/InspectorBindings.d.ts +0 -0
- /package/dist/{rdfox-explain → explain-fact}/inspector/InspectorBindings.js +0 -0
- /package/dist/{rdfox-explain → explain-fact}/inspector/InspectorFact.d.ts +0 -0
- /package/dist/{rdfox-explain → explain-fact}/inspector/InspectorFact.js +0 -0
- /package/dist/{rdfox-explain → explain-fact}/inspector/InspectorHeader.d.ts +0 -0
- /package/dist/{rdfox-explain → explain-fact}/inspector/InspectorHeader.js +0 -0
- /package/dist/{rdfox-explain → explain-fact}/inspector/SupportsSection.d.ts +0 -0
- /package/dist/{rdfox-explain → explain-fact}/inspector/index.d.ts +0 -0
- /package/dist/{rdfox-explain → explain-fact}/inspector/index.js +0 -0
- /package/dist/{rdfox-explain → explain-fact}/proof-tree/ProofFactLabel.d.ts +0 -0
- /package/dist/{rdfox-explain → explain-fact}/proof-tree/ProofFactLabel.js +0 -0
- /package/dist/{rdfox-explain → explain-fact}/proof-tree/ProofRowBadge.d.ts +0 -0
- /package/dist/{rdfox-explain → explain-fact}/proof-tree/ProofRowBadge.js +0 -0
- /package/dist/{rdfox-explain → explain-fact}/proof-tree/ProofRowContent.d.ts +0 -0
- /package/dist/{rdfox-explain → explain-fact}/proof-tree/ProofRowContent.js +0 -0
- /package/dist/{rdfox-explain → explain-fact}/proof-tree/ProofRowValue.d.ts +0 -0
- /package/dist/{rdfox-explain → explain-fact}/proof-tree/ProofRowValue.js +0 -0
- /package/dist/{rdfox-explain → explain-fact}/proof-tree/ProofTree.d.ts +0 -0
- /package/dist/{rdfox-explain → explain-fact}/proof-tree/ProofTreeFormulaFooter.d.ts +0 -0
- /package/dist/{rdfox-explain → explain-fact}/proof-tree/ProofTreeFormulaFooter.js +0 -0
- /package/dist/{rdfox-explain → explain-fact}/proof-tree/ProofTreeNode.d.ts +0 -0
- /package/dist/{rdfox-explain → explain-fact}/proof-tree/ProofTreeNode.js +0 -0
- /package/dist/{rdfox-explain → explain-fact}/proof-tree/SupportsTag.d.ts +0 -0
- /package/dist/{rdfox-explain → explain-fact}/proof-tree/index.d.ts +0 -0
- /package/dist/{rdfox-explain → explain-fact}/proof-tree/index.js +0 -0
- /package/dist/{rdfox-explain → explain-fact}/proof-tree/proof-tree-navigation.d.ts +0 -0
- /package/dist/{rdfox-explain → explain-fact}/proof-tree/proof-tree-navigation.js +0 -0
- /package/dist/{rdfox-explain → explain-fact}/proof-tree/proof-tree-root-view.d.ts +0 -0
- /package/dist/{rdfox-explain → explain-fact}/proof-tree/proof-tree-root-view.js +0 -0
- /package/dist/{rdfox-explain → explain-fact}/proof-tree/visible-premises.d.ts +0 -0
- /package/dist/{rdfox-explain → explain-fact}/proof-tree/visible-premises.js +0 -0
- /package/dist/{rdfox-explain → explain-fact}/rule-presentation.d.ts +0 -0
- /package/dist/{rdfox-explain → explain-fact}/rule-presentation.js +0 -0
- /package/dist/{rdfox-explain → explain-fact}/use-fact-measure.d.ts +0 -0
- /package/dist/{rdfox-explain → explain-fact}/use-fact-measure.js +0 -0
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
import { GQLMemoryKind } from "@manta-eu/client";
|
|
3
|
+
import { isPresent } from "@manta-eu/lib/present";
|
|
4
|
+
import { ChevronDown, X } from "lucide-react";
|
|
5
|
+
import { defaultColumnOrder, memoryColumnLabels } from "../hooks/useMemoryColumns.js";
|
|
6
|
+
import { Button } from "#components/button/index";
|
|
7
|
+
import { Combobox, ComboboxContent, ComboboxEmpty, ComboboxInput, ComboboxItem, ComboboxList, ComboboxTrigger, } from "#components/combobox/index";
|
|
8
|
+
import { Dropdown, DropdownCheckboxItem, DropdownContent, DropdownGroup, DropdownItem, DropdownTrigger, } from "#components/dropdown/index";
|
|
9
|
+
import { FilterChip, FilterSection, FilterSheet } from "#components/filter-sheet/index";
|
|
10
|
+
import { Input } from "#components/input/index";
|
|
11
|
+
import { TableColumnRearrangePopover } from "#components/table/index";
|
|
12
|
+
const statusFilterConfig = [
|
|
13
|
+
{ key: "autoCaptured", label: "Auto-captured" },
|
|
14
|
+
{
|
|
15
|
+
key: "hideStale",
|
|
16
|
+
label: "Still trusted",
|
|
17
|
+
title: "Within its trust horizon - says nothing about the validity window",
|
|
18
|
+
},
|
|
19
|
+
{ key: "promotion", label: "Promotion candidates" },
|
|
20
|
+
{ key: "deadWeight", label: "Dead weight", title: "Eligible for pre-loading but nothing has touched it in 90 days" },
|
|
21
|
+
{ key: "unused", label: "Never used", title: "Eligible for pre-loading, but the agent has never drawn on it" },
|
|
22
|
+
{
|
|
23
|
+
key: "needsReview",
|
|
24
|
+
label: "Needs review",
|
|
25
|
+
title: "No longer trusted, or about to be - re-confirm it to keep it in context",
|
|
26
|
+
},
|
|
27
|
+
];
|
|
28
|
+
export const kindFilterOptions = [
|
|
29
|
+
{ id: "ALL", label: "All kinds" },
|
|
30
|
+
{ id: GQLMemoryKind.Preference, label: "Preference" },
|
|
31
|
+
{ id: GQLMemoryKind.Fact, label: "Fact" },
|
|
32
|
+
{ id: GQLMemoryKind.Objective, label: "Objective" },
|
|
33
|
+
{ id: GQLMemoryKind.Context, label: "Context" },
|
|
34
|
+
];
|
|
35
|
+
const importanceFilterOptions = [
|
|
36
|
+
{ id: 0, label: "All importance" },
|
|
37
|
+
{ id: 1, label: "Disabled" },
|
|
38
|
+
{ id: 2, label: "Low" },
|
|
39
|
+
{ id: 3, label: "Medium" },
|
|
40
|
+
{ id: 4, label: "High" },
|
|
41
|
+
{ id: 5, label: "Critical" },
|
|
42
|
+
];
|
|
43
|
+
export function MemoriesFilters(props) {
|
|
44
|
+
const { tabs, kindFilter, onKindFilterChange, searchQuery, onSearchQueryChange, importanceFilter, onImportanceFilterChange, table, columnLabels = memoryColumnLabels, columnDefaultOrder = defaultColumnOrder, schemas, schemaFilter = "ALL", onSchemaFilterChange, statusFilters, onStatusFilterChange, visibleStatusFilters = [], } = props;
|
|
45
|
+
const allKindsSelected = kindFilter === "ALL";
|
|
46
|
+
const allImportancesSelected = importanceFilter === 0;
|
|
47
|
+
const allSchemasSelected = schemaFilter === "ALL";
|
|
48
|
+
const selectedKindLabel = kindFilterOptions.find((o) => o.id === kindFilter)?.label;
|
|
49
|
+
const selectedSchemaLabel = schemaFilter === "NONE" ? "No schema" : schemas?.find((s) => s.iri === schemaFilter)?.label;
|
|
50
|
+
const selectedImportanceOption = importanceFilterOptions.find((o) => o.id === importanceFilter);
|
|
51
|
+
const statusFilterOptions = onStatusFilterChange
|
|
52
|
+
? statusFilterConfig
|
|
53
|
+
.filter((cfg) => visibleStatusFilters.includes(cfg.key))
|
|
54
|
+
.map((cfg) => ({
|
|
55
|
+
id: cfg.key,
|
|
56
|
+
label: cfg.label,
|
|
57
|
+
active: !!statusFilters?.[cfg.key],
|
|
58
|
+
onChange: (value) => onStatusFilterChange(cfg.key, value),
|
|
59
|
+
...(cfg.title ? { title: cfg.title } : {}),
|
|
60
|
+
}))
|
|
61
|
+
: [];
|
|
62
|
+
const activeStatusCount = statusFilterOptions.filter((option) => option.active).length;
|
|
63
|
+
const hasActiveFilters = isPresent(searchQuery) ||
|
|
64
|
+
!allKindsSelected ||
|
|
65
|
+
!allImportancesSelected ||
|
|
66
|
+
!allSchemasSelected ||
|
|
67
|
+
activeStatusCount > 0;
|
|
68
|
+
function handleClearFilters() {
|
|
69
|
+
onSearchQueryChange("");
|
|
70
|
+
onKindFilterChange("ALL");
|
|
71
|
+
onImportanceFilterChange(0);
|
|
72
|
+
onSchemaFilterChange?.("ALL");
|
|
73
|
+
for (const option of statusFilterOptions) {
|
|
74
|
+
if (option.active)
|
|
75
|
+
option.onChange(false);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
const activeFilterCount = (isPresent(searchQuery) ? 1 : 0) +
|
|
79
|
+
(allKindsSelected ? 0 : 1) +
|
|
80
|
+
(allImportancesSelected ? 0 : 1) +
|
|
81
|
+
(allSchemasSelected ? 0 : 1) +
|
|
82
|
+
activeStatusCount;
|
|
83
|
+
function filterControls() {
|
|
84
|
+
return (_jsxs(_Fragment, { children: [_jsxs(Dropdown, { children: [_jsx(DropdownTrigger, { asChild: true, children: _jsxs(Button, { variant: "tertiary", size: "base", rounded: "lg", children: [_jsx("span", { children: allKindsSelected ? "Kind" : selectedKindLabel }), _jsx(ChevronDown, { className: "size-4" })] }) }), _jsx(DropdownContent, { align: "start", className: "w-44", children: _jsx(DropdownGroup, { label: "Filter by kind", children: kindFilterOptions.map((option) => (_jsx(DropdownItem, { selected: option.id === kindFilter, onClick: () => onKindFilterChange(option.id), children: option.label }, option.id))) }) })] }), isPresent(schemas) && onSchemaFilterChange && (_jsxs(Combobox, { children: [_jsx(ComboboxTrigger, { asChild: true, children: _jsxs(Button, { variant: "tertiary", size: "base", rounded: "lg", children: [_jsx("span", { children: allSchemasSelected ? "Schema" : selectedSchemaLabel }), _jsx(ChevronDown, { className: "size-4" })] }) }), _jsxs(ComboboxContent, { align: "start", className: "w-52", children: [_jsx(ComboboxInput, { placeholder: "Search schemas\u2026" }), _jsxs(ComboboxList, { children: [_jsx(ComboboxEmpty, { children: "No schemas found" }), _jsx(ComboboxItem, { value: "All schemas", selected: allSchemasSelected, onSelect: () => onSchemaFilterChange("ALL"), children: "All schemas" }), _jsx(ComboboxItem, { value: "No schema", selected: schemaFilter === "NONE", onSelect: () => onSchemaFilterChange("NONE"), children: "No schema" }), schemas.map((schema) => (_jsx(ComboboxItem, { value: schema.label, selected: schemaFilter === schema.iri, onSelect: () => onSchemaFilterChange(schema.iri), children: schema.label }, schema.iri)))] })] })] })), _jsxs(Dropdown, { children: [_jsx(DropdownTrigger, { asChild: true, children: _jsxs(Button, { variant: "tertiary", size: "base", rounded: "lg", children: [_jsx("span", { children: allImportancesSelected ? "Importance" : selectedImportanceOption?.label }), _jsx(ChevronDown, { className: "size-4" })] }) }), _jsx(DropdownContent, { align: "start", className: "w-44", children: _jsx(DropdownGroup, { label: "Filter by importance", children: importanceFilterOptions.map((option) => (_jsx(DropdownItem, { selected: option.id === importanceFilter, onClick: () => onImportanceFilterChange(option.id), children: option.label }, option.id))) }) })] }), isPresent(statusFilterOptions) && (_jsxs(Dropdown, { children: [_jsx(DropdownTrigger, { asChild: true, children: _jsxs(Button, { variant: activeStatusCount > 0 ? "secondary" : "tertiary", size: "base", rounded: "lg", children: [_jsx("span", { children: activeStatusCount > 0 ? `Status (${activeStatusCount})` : "Status" }), _jsx(ChevronDown, { className: "size-4" })] }) }), _jsx(DropdownContent, { align: "start", className: "w-56", children: _jsx(DropdownGroup, { label: "Filter by status", children: statusFilterOptions.map((option) => (_jsx(DropdownCheckboxItem, { checked: option.active, onCheckedChange: option.onChange, ...(option.title ? { title: option.title } : {}), children: option.label }, option.id))) }) })] })), hasActiveFilters && (_jsx(Button, { variant: "ghost", size: "base", rounded: "lg", onClick: handleClearFilters, icon: X, children: "Clear filters" }))] }));
|
|
85
|
+
}
|
|
86
|
+
const filterSheetContent = (_jsxs(_Fragment, { children: [_jsx(FilterSection, { title: "Kind", children: _jsxs(Dropdown, { children: [_jsx(DropdownTrigger, { asChild: true, children: _jsxs(Button, { variant: "tertiary", size: "base", rounded: "lg", className: "w-full justify-between", children: [_jsx("span", { children: selectedKindLabel }), _jsx(ChevronDown, { className: "size-4" })] }) }), _jsx(DropdownContent, { align: "start", className: "w-(--radix-dropdown-menu-trigger-width)", children: _jsx(DropdownGroup, { label: "Filter by kind", children: kindFilterOptions.map((option) => (_jsx(DropdownItem, { selected: option.id === kindFilter, onClick: () => onKindFilterChange(option.id), children: option.label }, option.id))) }) })] }) }), isPresent(schemas) && onSchemaFilterChange && (_jsx(FilterSection, { title: "Schema", children: _jsxs(Dropdown, { children: [_jsx(DropdownTrigger, { asChild: true, children: _jsxs(Button, { variant: "tertiary", size: "base", rounded: "lg", className: "w-full justify-between", children: [_jsx("span", { children: allSchemasSelected ? "All schemas" : selectedSchemaLabel }), _jsx(ChevronDown, { className: "size-4" })] }) }), _jsx(DropdownContent, { align: "start", className: "max-h-64 w-(--radix-dropdown-menu-trigger-width) overflow-y-auto", children: _jsxs(DropdownGroup, { label: "Filter by schema", children: [_jsx(DropdownItem, { selected: allSchemasSelected, onClick: () => onSchemaFilterChange("ALL"), children: "All schemas" }), _jsx(DropdownItem, { selected: schemaFilter === "NONE", onClick: () => onSchemaFilterChange("NONE"), children: "No schema" }), schemas.map((schema) => (_jsx(DropdownItem, { selected: schemaFilter === schema.iri, onClick: () => onSchemaFilterChange(schema.iri), children: schema.label }, schema.iri)))] }) })] }) })), _jsx(FilterSection, { title: "Importance", children: _jsxs(Dropdown, { children: [_jsx(DropdownTrigger, { asChild: true, children: _jsxs(Button, { variant: "tertiary", size: "base", rounded: "lg", className: "w-full justify-between", children: [_jsx("span", { children: selectedImportanceOption?.label }), _jsx(ChevronDown, { className: "size-4" })] }) }), _jsx(DropdownContent, { align: "start", className: "w-(--radix-dropdown-menu-trigger-width)", children: _jsx(DropdownGroup, { label: "Filter by importance", children: importanceFilterOptions.map((option) => (_jsx(DropdownItem, { selected: option.id === importanceFilter, onClick: () => onImportanceFilterChange(option.id), children: option.label }, option.id))) }) })] }) }), isPresent(statusFilterOptions) && (_jsx(FilterSection, { title: "Status", children: statusFilterOptions.map((option) => (_jsx(FilterChip, { selected: option.active, label: option.label, description: option.title, onClick: () => option.onChange(!option.active) }, option.id))) }))] }));
|
|
87
|
+
return (_jsxs("div", { className: "flex min-w-0 flex-col gap-3 3xl:flex-row 3xl:items-center", children: [isPresent(tabs) && _jsx("div", { className: "min-w-0 3xl:shrink", children: tabs }), _jsxs("div", { className: "flex flex-wrap items-center gap-2 flex-1 min-w-0", children: [_jsx(Input, { containerClassName: "min-w-0 flex-1 sm:w-64 sm:flex-none", type: "search", variant: "search", placeholder: "Search memories...", value: searchQuery, onChange: (event) => onSearchQueryChange(event.target.value) }), _jsx("div", { className: "sm:hidden", children: _jsx(FilterSheet, { activeCount: activeFilterCount, onReset: handleClearFilters, children: filterSheetContent }) }), _jsx("div", { className: "hidden sm:contents", children: filterControls() }), _jsx("div", { className: "ml-auto hidden shrink-0 sm:block", children: _jsx(TableColumnRearrangePopover, { enableReset: true, table: table, columnLabels: columnLabels, defaultOrder: columnDefaultOrder }) })] })] }));
|
|
88
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MemoriesPanel.d.ts","sourceRoot":"","sources":["../../../../src/routes/memories/components/MemoriesPanel.tsx"],"names":[],"mappings":"AA4BA,MAAM,MAAM,kBAAkB,GAAG;IAC/B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB,CAAC;AAEF,wBAAgB,aAAa,CAAC,KAAK,EAAE,kBAAkB,2CA2KtD"}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { GQLMemoryScope, useCreateMemoryMutation, useDeleteMemoryMutation, useMemoriesQuery, useUpdateMemoryMutation, } from "@manta-eu/client";
|
|
3
|
+
import { parseError } from "@manta-eu/client/shared/error-utils";
|
|
4
|
+
import { userManualMemorySource } from "@manta-eu/client/shared/memory-sources";
|
|
5
|
+
import { isPresent } from "@manta-eu/lib/present";
|
|
6
|
+
import { useQueryClient } from "@tanstack/react-query";
|
|
7
|
+
import { Brain, Building2, EllipsisIcon, Pencil, Plus, Trash2, X } from "lucide-react";
|
|
8
|
+
import { useCallback, useMemo, useState } from "react";
|
|
9
|
+
import { toast } from "sonner";
|
|
10
|
+
import { liveContextQueryKey } from "../hooks/useLiveContext.js";
|
|
11
|
+
import { buildCreateMemoryInput, buildUpdateMemoryInput } from "../memory-mutation-input.js";
|
|
12
|
+
import { KindBadge, ScopeBadge } from "./badges.js";
|
|
13
|
+
import { MemoryFormDialog } from "./MemoryFormDialog.js";
|
|
14
|
+
import { Banner } from "#components/banner/index";
|
|
15
|
+
import { Button } from "#components/button/index";
|
|
16
|
+
import { Dropdown, DropdownContent, DropdownGroup, DropdownItem, DropdownTrigger } from "#components/dropdown/index";
|
|
17
|
+
import { Skeleton } from "#components/skeleton/index";
|
|
18
|
+
import { useMantaClient } from "#providers/index";
|
|
19
|
+
export function MemoriesPanel(props) {
|
|
20
|
+
const { isOperator, onClose } = props;
|
|
21
|
+
const { mantaClient } = useMantaClient();
|
|
22
|
+
const queryClient = useQueryClient();
|
|
23
|
+
const { data, isLoading, error: queryError } = useMemoriesQuery(mantaClient);
|
|
24
|
+
const allMemories = data?.memories.memories ?? [];
|
|
25
|
+
const memories = useMemo(() => allMemories.filter((m) => m.memorySource === userManualMemorySource), [allMemories]);
|
|
26
|
+
const errorMessage = queryError ? parseError(queryError, "Failed to load memories").message : null;
|
|
27
|
+
const createMutation = useCreateMemoryMutation(mantaClient);
|
|
28
|
+
const updateMutation = useUpdateMemoryMutation(mantaClient);
|
|
29
|
+
const deleteMutation = useDeleteMemoryMutation(mantaClient);
|
|
30
|
+
const [addDialog, setAddDialog] = useState(null);
|
|
31
|
+
const [editingMemory, setEditingMemory] = useState(null);
|
|
32
|
+
const invalidate = useCallback(() => {
|
|
33
|
+
void queryClient.invalidateQueries({ queryKey: useMemoriesQuery.getKey() });
|
|
34
|
+
void queryClient.invalidateQueries({ queryKey: liveContextQueryKey });
|
|
35
|
+
}, [queryClient]);
|
|
36
|
+
const handleCreate = useCallback(async (form, supersedesMemoryIris) => {
|
|
37
|
+
if (!addDialog)
|
|
38
|
+
return;
|
|
39
|
+
if (!isOperator && addDialog.scope !== GQLMemoryScope.User)
|
|
40
|
+
return;
|
|
41
|
+
try {
|
|
42
|
+
const result = await createMutation.mutateAsync({
|
|
43
|
+
input: buildCreateMemoryInput(form, addDialog.scope, supersedesMemoryIris),
|
|
44
|
+
});
|
|
45
|
+
if (result.createMemory.error)
|
|
46
|
+
throw new Error(result.createMemory.error);
|
|
47
|
+
toast.success("Memory added");
|
|
48
|
+
setAddDialog(null);
|
|
49
|
+
invalidate();
|
|
50
|
+
}
|
|
51
|
+
catch (e) {
|
|
52
|
+
const err = parseError(e, "Failed to add memory");
|
|
53
|
+
toast.error(err.message, { description: err.description });
|
|
54
|
+
}
|
|
55
|
+
}, [addDialog, createMutation, invalidate, isOperator]);
|
|
56
|
+
const handleUpdate = useCallback(async (form, supersedesMemoryIris) => {
|
|
57
|
+
if (!editingMemory)
|
|
58
|
+
return;
|
|
59
|
+
if (!isOperator && editingMemory.scope !== GQLMemoryScope.User)
|
|
60
|
+
return;
|
|
61
|
+
try {
|
|
62
|
+
const result = await updateMutation.mutateAsync({
|
|
63
|
+
input: buildUpdateMemoryInput(editingMemory.iri, form, editingMemory.scope, supersedesMemoryIris),
|
|
64
|
+
});
|
|
65
|
+
if (result.updateMemory.error)
|
|
66
|
+
throw new Error(result.updateMemory.error);
|
|
67
|
+
toast.success("Memory updated");
|
|
68
|
+
setEditingMemory(null);
|
|
69
|
+
invalidate();
|
|
70
|
+
}
|
|
71
|
+
catch (e) {
|
|
72
|
+
const err = parseError(e, "Failed to update memory");
|
|
73
|
+
toast.error(err.message, { description: err.description });
|
|
74
|
+
}
|
|
75
|
+
}, [editingMemory, updateMutation, invalidate, isOperator]);
|
|
76
|
+
const handleDelete = useCallback(async (iri) => {
|
|
77
|
+
try {
|
|
78
|
+
await deleteMutation.mutateAsync({ memoryIri: iri });
|
|
79
|
+
toast.success("Memory deleted");
|
|
80
|
+
invalidate();
|
|
81
|
+
}
|
|
82
|
+
catch (e) {
|
|
83
|
+
const err = parseError(e, "Failed to delete memory");
|
|
84
|
+
toast.error(err.message, { description: err.description });
|
|
85
|
+
}
|
|
86
|
+
}, [deleteMutation, invalidate]);
|
|
87
|
+
return (_jsxs("div", { className: "flex flex-col h-full", children: [_jsxs("div", { className: "shrink-0 flex items-center justify-between gap-2 px-4 py-3 border-b border-muted-border", children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsx(Brain, { className: "size-4 text-muted-foreground" }), _jsx("span", { className: "typography-small-medium text-default-foreground", children: "Memories" })] }), _jsxs("div", { className: "flex items-center gap-1", children: [isOperator && (_jsx(Button, { variant: "ghost", size: "sm", icon: Building2, onClick: () => setAddDialog({ scope: GQLMemoryScope.Company }), children: "Add org" })), _jsx(Button, { size: "sm", icon: Plus, onClick: () => setAddDialog({ scope: GQLMemoryScope.User }), children: "Add" }), _jsx(Button, { variant: "ghost", size: "sm", iconOnly: true, icon: X, "aria-label": "Close memories panel", onClick: onClose })] })] }), _jsxs("div", { className: "flex-1 overflow-auto", children: [isLoading && (_jsx("ul", { className: "divide-y divide-muted-border", children: Array.from({ length: 4 }, (_, i) => (_jsxs("li", { className: "flex items-start gap-3 px-4 py-3", children: [_jsxs("div", { className: "flex-1 min-w-0 flex flex-col gap-1.5", children: [_jsx(Skeleton, { className: "h-4 w-2/3 rounded-md" }), _jsx(Skeleton, { className: "h-3.5 w-full rounded-md" })] }), _jsxs("div", { className: "shrink-0 flex items-center gap-2 pt-0.5", children: [_jsx(Skeleton, { className: "h-5 w-14 rounded-full" }), _jsx(Skeleton, { className: "size-7 rounded-md" })] })] }, `panel-skeleton-${i}`))) })), errorMessage && _jsx(Banner, { label: errorMessage, className: "m-4" }), !isLoading && !errorMessage && !isPresent(memories) && (_jsxs("div", { className: "flex flex-col items-center justify-center gap-3 p-8 text-center", children: [_jsx(Brain, { className: "size-8 text-muted-foreground" }), _jsx("p", { className: "typography-small text-muted-foreground", children: "No memories yet. Add something Manta should always keep in mind." })] })), !isLoading && isPresent(memories) && (_jsx("ul", { className: "divide-y divide-muted-border", children: memories.map((memory) => (_jsx(MemoryListItem, { memory: memory, isOperator: isOperator, onEdit: () => setEditingMemory(memory), onDelete: () => void handleDelete(memory.iri) }, memory.iri))) }))] }), addDialog && (_jsx(MemoryFormDialog, { open: true, onOpenChange: (open) => {
|
|
88
|
+
if (!open)
|
|
89
|
+
setAddDialog(null);
|
|
90
|
+
}, scope: addDialog.scope, onSave: handleCreate, isSaving: createMutation.isPending })), editingMemory && (_jsx(MemoryFormDialog, { open: true, onOpenChange: (open) => {
|
|
91
|
+
if (!open)
|
|
92
|
+
setEditingMemory(null);
|
|
93
|
+
}, scope: editingMemory.scope, initial: editingMemory, onSave: handleUpdate, isSaving: updateMutation.isPending }))] }));
|
|
94
|
+
}
|
|
95
|
+
function MemoryListItem(props) {
|
|
96
|
+
const { memory, isOperator, onEdit, onDelete } = props;
|
|
97
|
+
const canEdit = memory.scope !== GQLMemoryScope.Company || isOperator;
|
|
98
|
+
return (_jsxs("li", { className: "flex items-start gap-3 px-4 py-3", children: [_jsxs("div", { className: "flex-1 min-w-0", children: [_jsx("p", { className: "typography-caption-medium text-default-foreground truncate", children: memory.label }), _jsx("p", { className: "typography-small text-muted-foreground line-clamp-2 mt-0.5", children: memory.description })] }), _jsxs("div", { className: "shrink-0 flex items-center gap-2 pt-0.5", children: [isOperator && _jsx(ScopeBadge, { scope: memory.scope }), _jsx(KindBadge, { kind: memory.kind }), canEdit && (_jsxs(Dropdown, { children: [_jsx(DropdownTrigger, { asChild: true, children: _jsx(Button, { variant: "tertiary", size: "sm", iconOnly: true, icon: EllipsisIcon, "aria-label": "Memory actions" }) }), _jsx(DropdownContent, { align: "end", className: "z-60", children: _jsxs(DropdownGroup, { children: [_jsxs(DropdownItem, { onSelect: onEdit, children: [_jsx(Pencil, { size: 16 }), "Edit"] }), _jsxs(DropdownItem, { onSelect: onDelete, children: [_jsx(Trash2, { size: 16, className: "text-error-foreground" }), "Delete"] })] }) })] }))] })] }));
|
|
99
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { GQLMemory, 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
|
+
import type { KindFilter, SchemaFilter } from "./MemoriesFilters.js";
|
|
6
|
+
export type MemoriesTabPanelProps = {
|
|
7
|
+
tabs?: ReactNode;
|
|
8
|
+
isLoading: boolean;
|
|
9
|
+
errorMessage: string | null;
|
|
10
|
+
table: Table<GQLMemory>;
|
|
11
|
+
kindFilter: KindFilter;
|
|
12
|
+
onKindFilterChange: (kind: KindFilter) => void;
|
|
13
|
+
searchQuery: string;
|
|
14
|
+
onSearchQueryChange: (query: string) => void;
|
|
15
|
+
importanceFilter: ImportanceFilter;
|
|
16
|
+
onImportanceFilterChange: (importance: ImportanceFilter) => void;
|
|
17
|
+
memories: GQLMemory[];
|
|
18
|
+
emptyState?: ReactNode;
|
|
19
|
+
columnLabels?: Record<string, string>;
|
|
20
|
+
columnDefaultOrder?: string[];
|
|
21
|
+
schemas?: GQLMemorySchema[];
|
|
22
|
+
schemaFilter?: SchemaFilter;
|
|
23
|
+
onSchemaFilterChange?: (iri: SchemaFilter) => void;
|
|
24
|
+
onRowClick?: (memory: GQLMemory) => void;
|
|
25
|
+
statusFilters?: Record<StatusFilterKey, boolean>;
|
|
26
|
+
onStatusFilterChange?: (key: StatusFilterKey, value: boolean) => void;
|
|
27
|
+
visibleStatusFilters?: StatusFilterKey[];
|
|
28
|
+
};
|
|
29
|
+
export declare function MemoriesTabPanel(props: MemoriesTabPanelProps): import("react/jsx-runtime").JSX.Element;
|
|
30
|
+
//# sourceMappingURL=MemoriesTabPanel.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MemoriesTabPanel.d.ts","sourceRoot":"","sources":["../../../../src/routes/memories/components/MemoriesTabPanel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAEnE,OAAO,KAAK,EAAO,KAAK,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAEjF,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAMlE,MAAM,MAAM,qBAAqB,GAAG;IAClC,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,SAAS,EAAE,OAAO,CAAC;IACnB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;IACxB,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,QAAQ,EAAE,SAAS,EAAE,CAAC;IACtB,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB,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,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,SAAS,KAAK,IAAI,CAAC;IACzC,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,gBAAgB,CAAC,KAAK,EAAE,qBAAqB,2CAyE5D"}
|
|
@@ -0,0 +1,11 @@
|
|
|
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 { LoadingSkeleton } from "./LoadingSkeleton.js";
|
|
4
|
+
import { MemoriesFilters } from "./MemoriesFilters.js";
|
|
5
|
+
import { Banner } from "#components/banner/index";
|
|
6
|
+
import { DataTable } from "#components/table/index";
|
|
7
|
+
import { TablePagination } from "#components/table-pagination/index";
|
|
8
|
+
export function MemoriesTabPanel(props) {
|
|
9
|
+
const { tabs, isLoading, errorMessage, table, kindFilter, onKindFilterChange, searchQuery, onSearchQueryChange, importanceFilter, onImportanceFilterChange, memories, emptyState, columnLabels, columnDefaultOrder, schemas, schemaFilter, onSchemaFilterChange, onRowClick, statusFilters, onStatusFilterChange, visibleStatusFilters, } = props;
|
|
10
|
+
return (_jsxs(_Fragment, { children: [_jsx("div", { className: "border-b border-muted-border px-5 py-3 shrink-0", children: _jsx(MemoriesFilters, { tabs: tabs, kindFilter: kindFilter, onKindFilterChange: onKindFilterChange, searchQuery: searchQuery, onSearchQueryChange: onSearchQueryChange, importanceFilter: importanceFilter, onImportanceFilterChange: onImportanceFilterChange, table: table, columnLabels: columnLabels, columnDefaultOrder: columnDefaultOrder, schemas: schemas, schemaFilter: schemaFilter, onSchemaFilterChange: onSchemaFilterChange, statusFilters: statusFilters, onStatusFilterChange: onStatusFilterChange, visibleStatusFilters: visibleStatusFilters }) }), _jsxs("div", { className: "flex-1 overflow-auto p-4", children: [isLoading && _jsx(LoadingSkeleton, {}), errorMessage && _jsx(Banner, { label: errorMessage }), !isLoading && !isPresent(memories) && emptyState, !isLoading && isPresent(memories) && (_jsxs("div", { className: "flex flex-col gap-3", children: [_jsx("div", { className: "rounded-xl border border-muted-border bg-card overflow-hidden", children: onRowClick ? (_jsx(DataTable, { table: table, onRowClick: (row) => onRowClick(row.original), rowClassName: (row) => (isPresent(row.original.supersededBy) ? "opacity-50" : undefined) })) : (_jsx(DataTable, { table: table, rowClassName: (row) => (isPresent(row.original.supersededBy) ? "opacity-50" : undefined) })) }), _jsx(TablePagination, { table: table, total: memories.length })] }))] })] }));
|
|
11
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { type GQLMemory } from "@manta-eu/client";
|
|
2
|
+
export type MemoryActionsProps = {
|
|
3
|
+
memory: GQLMemory;
|
|
4
|
+
isOperator?: boolean;
|
|
5
|
+
onEdit: (memory: GQLMemory) => void;
|
|
6
|
+
onDelete: (iri: string) => void;
|
|
7
|
+
onMove?: (memory: GQLMemory) => void;
|
|
8
|
+
onRestore?: (iri: string) => void;
|
|
9
|
+
onReconfirm?: (iri: string) => void;
|
|
10
|
+
};
|
|
11
|
+
export declare function MemoryActions(props: MemoryActionsProps): import("react/jsx-runtime").JSX.Element | null;
|
|
12
|
+
//# sourceMappingURL=MemoryActions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MemoryActions.d.ts","sourceRoot":"","sources":["../../../../src/routes/memories/components/MemoryActions.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAkB,KAAK,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAkBlE,MAAM,MAAM,kBAAkB,GAAG;IAC/B,MAAM,EAAE,SAAS,CAAC;IAClB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,MAAM,EAAE,CAAC,MAAM,EAAE,SAAS,KAAK,IAAI,CAAC;IACpC,QAAQ,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,SAAS,KAAK,IAAI,CAAC;IACrC,SAAS,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;CACrC,CAAC;AAEF,wBAAgB,aAAa,CAAC,KAAK,EAAE,kBAAkB,kDAsEtD"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
import { GQLMemoryScope } from "@manta-eu/client";
|
|
3
|
+
import { needsTrustReview } from "@manta-eu/client/shared/memory-preload-gate";
|
|
4
|
+
import { isPresent } from "@manta-eu/lib/present";
|
|
5
|
+
import { BadgeCheck, EllipsisIcon, MoveRight, Pencil, Trash2, Undo2 } from "lucide-react";
|
|
6
|
+
import { useState } from "react";
|
|
7
|
+
import { AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogTitle, } from "#components/alert-dialog/index";
|
|
8
|
+
import { Button } from "#components/button/index";
|
|
9
|
+
import { Dropdown, DropdownContent, DropdownGroup, DropdownItem, DropdownTrigger } from "#components/dropdown/index";
|
|
10
|
+
export function MemoryActions(props) {
|
|
11
|
+
const { memory, isOperator, onEdit, onDelete, onMove, onRestore, onReconfirm } = props;
|
|
12
|
+
const [confirmOpen, setConfirmOpen] = useState(false);
|
|
13
|
+
const isRealm = memory.scope === GQLMemoryScope.Company;
|
|
14
|
+
if (isPresent(memory.supersededBy)) {
|
|
15
|
+
const canRestore = isOperator || memory.scope === GQLMemoryScope.User;
|
|
16
|
+
if (!canRestore)
|
|
17
|
+
return null;
|
|
18
|
+
return (_jsx("div", { className: "text-right", onClick: (e) => e.stopPropagation(), children: _jsxs(Button, { variant: "tertiary", size: "sm", rounded: "lg", onClick: () => onRestore?.(memory.iri), className: "gap-1.5", children: [_jsx(Undo2, { size: 14 }), "Restore"] }) }));
|
|
19
|
+
}
|
|
20
|
+
if (!isRealm || isOperator) {
|
|
21
|
+
return (_jsxs(_Fragment, { children: [_jsx("div", { className: "text-right", onClick: (e) => e.stopPropagation(), children: _jsxs(Dropdown, { children: [_jsx(DropdownTrigger, { asChild: true, children: _jsx(Button, { variant: "tertiary", iconOnly: true, icon: EllipsisIcon, "aria-label": "Actions" }) }), _jsx(DropdownContent, { align: "end", className: "z-60 w-44", children: _jsxs(DropdownGroup, { children: [_jsxs(DropdownItem, { onSelect: () => onEdit(memory), children: [_jsx(Pencil, { size: 16 }), "Edit"] }), onReconfirm && needsTrustReview(memory) && (_jsxs(DropdownItem, { onSelect: () => onReconfirm(memory.iri), children: [_jsx(BadgeCheck, { size: 16 }), "Reconfirm"] })), onMove && isOperator && (_jsxs(DropdownItem, { onSelect: () => onMove(memory), children: [_jsx(MoveRight, { size: 16 }), "Move to\u2026"] })), _jsxs(DropdownItem, { onSelect: () => setConfirmOpen(true), children: [_jsx(Trash2, { size: 16, className: "text-error-foreground" }), "Delete"] })] }) })] }) }), _jsx(AlertDialog, { open: confirmOpen, onOpenChange: setConfirmOpen, children: _jsxs(AlertDialogContent, { children: [_jsxs(AlertDialogHeader, { children: [_jsx(AlertDialogTitle, { children: "Delete memory?" }), _jsxs(AlertDialogDescription, { children: ["\"", memory.label, "\" will be permanently deleted."] })] }), _jsxs(AlertDialogFooter, { children: [_jsx(AlertDialogCancel, { children: "Cancel" }), _jsx(AlertDialogAction, { variant: "destructive", onClick: () => onDelete(memory.iri), children: "Delete" })] })] }) })] }));
|
|
22
|
+
}
|
|
23
|
+
return null;
|
|
24
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { GQLMemoryKind, type GQLMemorySchema } from "@manta-eu/client";
|
|
2
|
+
import type { ReactNode } from "react";
|
|
3
|
+
export type FormErrors = Partial<Record<"label" | "description" | "teams" | "memoryTrustedUntil", string>>;
|
|
4
|
+
export type MemoryFormState = {
|
|
5
|
+
label: string;
|
|
6
|
+
description: string | null;
|
|
7
|
+
kind: GQLMemoryKind;
|
|
8
|
+
memorySubclass: string | null;
|
|
9
|
+
customProperties: Record<string, string>;
|
|
10
|
+
memoryValidUntil: string | null;
|
|
11
|
+
memoryTrustedUntil: string | null;
|
|
12
|
+
teams: string[];
|
|
13
|
+
importance: number;
|
|
14
|
+
};
|
|
15
|
+
export declare const emptyForm: MemoryFormState;
|
|
16
|
+
export type MemoryFieldsProps = {
|
|
17
|
+
form: MemoryFormState;
|
|
18
|
+
errors: FormErrors;
|
|
19
|
+
isTeam: boolean;
|
|
20
|
+
isOperator?: boolean;
|
|
21
|
+
schemas?: GQLMemorySchema[];
|
|
22
|
+
onChange: (next: Partial<MemoryFormState>) => void;
|
|
23
|
+
descriptionPlaceholder?: string;
|
|
24
|
+
labelPlaceholder?: string;
|
|
25
|
+
autoFocus?: boolean;
|
|
26
|
+
onEditProperties?: () => void;
|
|
27
|
+
filledPropertyCount?: number;
|
|
28
|
+
totalPropertyCount?: number;
|
|
29
|
+
children?: ReactNode;
|
|
30
|
+
};
|
|
31
|
+
export declare function MemoryFields(props: MemoryFieldsProps): import("react/jsx-runtime").JSX.Element;
|
|
32
|
+
//# sourceMappingURL=MemoryFields.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MemoryFields.d.ts","sourceRoot":"","sources":["../../../../src/routes/memories/components/MemoryFields.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,KAAK,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAIvE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAwBvC,MAAM,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,GAAG,aAAa,GAAG,OAAO,GAAG,oBAAoB,EAAE,MAAM,CAAC,CAAC,CAAC;AAE3G,MAAM,MAAM,eAAe,GAAG;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,IAAI,EAAE,aAAa,CAAC;IACpB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzC,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE,eAUvB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,IAAI,EAAE,eAAe,CAAC;IACtB,MAAM,EAAE,UAAU,CAAC;IACnB,MAAM,EAAE,OAAO,CAAC;IAChB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,OAAO,CAAC,EAAE,eAAe,EAAE,CAAC;IAC5B,QAAQ,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC,eAAe,CAAC,KAAK,IAAI,CAAC;IACnD,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,gBAAgB,CAAC,EAAE,MAAM,IAAI,CAAC;IAC9B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB,CAAC;AAEF,wBAAgB,YAAY,CAAC,KAAK,EAAE,iBAAiB,2CAyHpD"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
import { GQLMemoryKind } from "@manta-eu/client";
|
|
3
|
+
import { formatEntityName } from "@manta-eu/client/shared/rdf-namespaces";
|
|
4
|
+
import { isPresent } from "@manta-eu/lib/present";
|
|
5
|
+
import { ChevronDown, ChevronRight } from "lucide-react";
|
|
6
|
+
import { ImportanceSlider } from "./ImportanceSlider.js";
|
|
7
|
+
import { TeamPicker } from "./TeamPicker.js";
|
|
8
|
+
import { Button } from "#components/button/index";
|
|
9
|
+
import { Combobox, ComboboxContent, ComboboxEmpty, ComboboxInput, ComboboxItem, ComboboxList, ComboboxTrigger, } from "#components/combobox/index";
|
|
10
|
+
import { Input, Textarea } from "#components/input/index";
|
|
11
|
+
import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, createSelectClassName, } from "#components/select/index";
|
|
12
|
+
import { cn } from "#lib/utils";
|
|
13
|
+
export const emptyForm = {
|
|
14
|
+
label: "",
|
|
15
|
+
description: "",
|
|
16
|
+
kind: GQLMemoryKind.Fact,
|
|
17
|
+
memorySubclass: null,
|
|
18
|
+
customProperties: {},
|
|
19
|
+
memoryValidUntil: null,
|
|
20
|
+
memoryTrustedUntil: null,
|
|
21
|
+
teams: [],
|
|
22
|
+
importance: 3,
|
|
23
|
+
};
|
|
24
|
+
export function MemoryFields(props) {
|
|
25
|
+
const { form, errors, isTeam, isOperator = false, schemas, onChange, descriptionPlaceholder, labelPlaceholder, autoFocus = false, onEditProperties, filledPropertyCount = 0, totalPropertyCount = 0, children, } = props;
|
|
26
|
+
return (_jsxs(_Fragment, { children: [_jsxs("div", { className: "flex flex-col gap-1.5", children: [_jsx("label", { className: "typography-small", children: "Importance" }), _jsx(ImportanceSlider, { value: form.importance, onChange: (v) => onChange({ importance: v }) })] }), _jsxs("div", { className: "flex flex-col gap-1.5", children: [_jsx("label", { className: "typography-small", children: "Kind" }), _jsxs(Select, { value: form.kind, onValueChange: (v) => onChange({ kind: v }), children: [_jsx(SelectTrigger, { label: "Kind", id: "memory-kind", hiddenLabel: true, children: _jsx(SelectValue, {}) }), _jsxs(SelectContent, { children: [_jsx(SelectItem, { value: GQLMemoryKind.Preference, children: "Preference" }), _jsx(SelectItem, { value: GQLMemoryKind.Fact, children: "Fact" }), _jsx(SelectItem, { value: GQLMemoryKind.Objective, children: "Objective" }), _jsx(SelectItem, { value: GQLMemoryKind.Context, children: "Context" })] })] })] }), isPresent(schemas) && (_jsxs("div", { className: "flex flex-col gap-1.5", children: [_jsx("label", { className: "typography-small", children: "Schema" }), _jsxs("div", { className: "flex items-center gap-2", children: [_jsxs(Combobox, { children: [_jsx(ComboboxTrigger, { asChild: true, children: _jsxs("button", { type: "button", className: cn(createSelectClassName({ size: "base" }), "flex-1 min-w-0"), children: [_jsx("span", { className: cn("flex-1 min-w-0 truncate text-left", !form.memorySubclass && "text-placeholder-foreground"), children: form.memorySubclass
|
|
27
|
+
? (schemas.find((s) => s.iri === form.memorySubclass)?.label ??
|
|
28
|
+
formatEntityName(form.memorySubclass))
|
|
29
|
+
: "Default" }), _jsx(ChevronDown, { className: "size-4 shrink-0 text-muted-foreground" })] }) }), _jsxs(ComboboxContent, { align: "start", className: "w-[var(--radix-popover-trigger-width,320px)]", children: [_jsx(ComboboxInput, { placeholder: "Search schemas\u2026" }), _jsxs(ComboboxList, { children: [_jsx(ComboboxEmpty, { children: "No schemas found" }), _jsx(ComboboxItem, { value: "none", selected: form.memorySubclass === null, onSelect: () => onChange({ memorySubclass: null, customProperties: {} }), children: "Default" }), schemas.map((schema) => (_jsx(ComboboxItem, { value: schema.label, selected: form.memorySubclass === schema.iri, onSelect: () => onChange({ memorySubclass: schema.iri, customProperties: {} }), children: schema.label }, schema.iri)))] })] })] }), onEditProperties && totalPropertyCount > 0 && (_jsxs(Button, { type: "button", variant: "tertiary", size: "base", onClick: onEditProperties, className: "shrink-0", children: [filledPropertyCount > 0 ? `${filledPropertyCount}/${totalPropertyCount} filled` : "Edit properties", _jsx(ChevronRight, { className: "size-3.5" })] }))] })] })), _jsx(Input, { id: "memory-label", label: "Label", placeholder: labelPlaceholder, value: form.label, onChange: (e) => onChange({ label: e.target.value }), error: errors.label }), _jsx(Textarea, { id: "memory-description", label: "Description", placeholder: descriptionPlaceholder, value: form.description ?? "", onChange: (e) => onChange({ description: e.target.value }), minRows: 3, maxRows: 8, autoFocus: autoFocus, error: errors.description }), children, isTeam && (_jsx(TeamPicker, { selected: form.teams, onChange: (teams) => onChange({ teams }), isOperator: isOperator, error: errors.teams }))] }));
|
|
30
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { GQLMemoryScope, type GQLMemory, type GQLMemorySchema } from "@manta-eu/client";
|
|
2
|
+
import { type MemoryFormState } from "./MemoryFields.js";
|
|
3
|
+
export type MemoryFormDialogProps = {
|
|
4
|
+
open: boolean;
|
|
5
|
+
onOpenChange: (open: boolean) => void;
|
|
6
|
+
scope: GQLMemoryScope;
|
|
7
|
+
initial?: GQLMemory;
|
|
8
|
+
onSave: (form: MemoryFormState, supersedesMemoryIris?: string[]) => Promise<void>;
|
|
9
|
+
isSaving: boolean;
|
|
10
|
+
isOperator?: boolean;
|
|
11
|
+
schemas?: GQLMemorySchema[];
|
|
12
|
+
currentUserId?: string;
|
|
13
|
+
};
|
|
14
|
+
export declare function MemoryFormDialog(props: MemoryFormDialogProps): import("react/jsx-runtime").JSX.Element;
|
|
15
|
+
//# sourceMappingURL=MemoryFormDialog.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MemoryFormDialog.d.ts","sourceRoot":"","sources":["../../../../src/routes/memories/components/MemoryFormDialog.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAA6B,KAAK,SAAS,EAAE,KAAK,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAUnH,OAAO,EAA4C,KAAK,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAuBhG,MAAM,MAAM,qBAAqB,GAAG;IAClC,IAAI,EAAE,OAAO,CAAC;IACd,YAAY,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACtC,KAAK,EAAE,cAAc,CAAC;IACtB,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,MAAM,EAAE,CAAC,IAAI,EAAE,eAAe,EAAE,oBAAoB,CAAC,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAClF,QAAQ,EAAE,OAAO,CAAC;IAClB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,OAAO,CAAC,EAAE,eAAe,EAAE,CAAC;IAC5B,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AAsGF,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,qBAAqB,2CAwe5D"}
|