@mindlogic-ai/logician-ui 3.1.0-alpha.9 → 3.2.0-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/Icon/_constants/iconList.d.ts +1 -1
- package/dist/components/Icon/_constants/iconList.d.ts.map +1 -1
- package/dist/components/Icon/_constants/iconList.js +18 -0
- package/dist/components/Icon/_constants/iconList.js.map +1 -1
- package/dist/components/Icon/_constants/iconList.mjs +20 -2
- package/dist/components/Icon/_constants/iconList.mjs.map +1 -1
- package/dist/components/Icon/index.d.ts +2 -1
- package/dist/components/Icon/index.d.ts.map +1 -1
- package/dist/components/Icon/index.js +20 -1
- package/dist/components/Icon/index.js.map +1 -1
- package/dist/components/Icon/index.mjs +4 -2
- package/dist/components/Icon/index.mjs.map +1 -1
- package/dist/components/SegmentedControl/SegmentedControl.d.ts.map +1 -1
- package/dist/components/SegmentedControl/SegmentedControl.js +20 -4
- package/dist/components/SegmentedControl/SegmentedControl.js.map +1 -1
- package/dist/components/SegmentedControl/SegmentedControl.mjs +20 -4
- package/dist/components/SegmentedControl/SegmentedControl.mjs.map +1 -1
- package/dist/components/Workflow/Workflow.d.ts +3 -0
- package/dist/components/Workflow/Workflow.d.ts.map +1 -0
- package/dist/components/Workflow/Workflow.js +109 -0
- package/dist/components/Workflow/Workflow.js.map +1 -0
- package/dist/components/Workflow/Workflow.mjs +107 -0
- package/dist/components/Workflow/Workflow.mjs.map +1 -0
- package/dist/components/Workflow/Workflow.translations.json.js +164 -0
- package/dist/components/Workflow/Workflow.translations.json.js.map +1 -0
- package/dist/components/Workflow/Workflow.translations.json.mjs +138 -0
- package/dist/components/Workflow/Workflow.translations.json.mjs.map +1 -0
- package/dist/components/Workflow/Workflow.types.d.ts +435 -0
- package/dist/components/Workflow/Workflow.types.d.ts.map +1 -0
- package/dist/components/Workflow/Workflow.types.js +19 -0
- package/dist/components/Workflow/Workflow.types.js.map +1 -0
- package/dist/components/Workflow/Workflow.types.mjs +16 -0
- package/dist/components/Workflow/Workflow.types.mjs.map +1 -0
- package/dist/components/Workflow/WorkflowContext/WorkflowContext.d.ts +10 -0
- package/dist/components/Workflow/WorkflowContext/WorkflowContext.d.ts.map +1 -0
- package/dist/components/Workflow/WorkflowContext/WorkflowContext.js +163 -0
- package/dist/components/Workflow/WorkflowContext/WorkflowContext.js.map +1 -0
- package/dist/components/Workflow/WorkflowContext/WorkflowContext.mjs +159 -0
- package/dist/components/Workflow/WorkflowContext/WorkflowContext.mjs.map +1 -0
- package/dist/components/Workflow/WorkflowContext/WorkflowContext.types.d.ts +117 -0
- package/dist/components/Workflow/WorkflowContext/WorkflowContext.types.d.ts.map +1 -0
- package/dist/components/Workflow/WorkflowContext/index.d.ts +3 -0
- package/dist/components/Workflow/WorkflowContext/index.d.ts.map +1 -0
- package/dist/components/Workflow/canvas/Canvas/BranchLabelBadge.d.ts +19 -0
- package/dist/components/Workflow/canvas/Canvas/BranchLabelBadge.d.ts.map +1 -0
- package/dist/components/Workflow/canvas/Canvas/BranchLabelBadge.js +44 -0
- package/dist/components/Workflow/canvas/Canvas/BranchLabelBadge.js.map +1 -0
- package/dist/components/Workflow/canvas/Canvas/BranchLabelBadge.mjs +42 -0
- package/dist/components/Workflow/canvas/Canvas/BranchLabelBadge.mjs.map +1 -0
- package/dist/components/Workflow/canvas/Canvas/Canvas.d.ts +10 -0
- package/dist/components/Workflow/canvas/Canvas/Canvas.d.ts.map +1 -0
- package/dist/components/Workflow/canvas/Canvas/Canvas.js +531 -0
- package/dist/components/Workflow/canvas/Canvas/Canvas.js.map +1 -0
- package/dist/components/Workflow/canvas/Canvas/Canvas.mjs +529 -0
- package/dist/components/Workflow/canvas/Canvas/Canvas.mjs.map +1 -0
- package/dist/components/Workflow/canvas/Canvas/Canvas.styles.d.ts +53 -0
- package/dist/components/Workflow/canvas/Canvas/Canvas.styles.d.ts.map +1 -0
- package/dist/components/Workflow/canvas/Canvas/Canvas.styles.js +96 -0
- package/dist/components/Workflow/canvas/Canvas/Canvas.styles.js.map +1 -0
- package/dist/components/Workflow/canvas/Canvas/Canvas.styles.mjs +93 -0
- package/dist/components/Workflow/canvas/Canvas/Canvas.styles.mjs.map +1 -0
- package/dist/components/Workflow/canvas/Canvas/CanvasControls.d.ts +27 -0
- package/dist/components/Workflow/canvas/Canvas/CanvasControls.d.ts.map +1 -0
- package/dist/components/Workflow/canvas/Canvas/CanvasControls.js +70 -0
- package/dist/components/Workflow/canvas/Canvas/CanvasControls.js.map +1 -0
- package/dist/components/Workflow/canvas/Canvas/CanvasControls.mjs +68 -0
- package/dist/components/Workflow/canvas/Canvas/CanvasControls.mjs.map +1 -0
- package/dist/components/Workflow/canvas/Canvas/LabeledEdge.d.ts +10 -0
- package/dist/components/Workflow/canvas/Canvas/LabeledEdge.d.ts.map +1 -0
- package/dist/components/Workflow/canvas/Canvas/LabeledEdge.js +106 -0
- package/dist/components/Workflow/canvas/Canvas/LabeledEdge.js.map +1 -0
- package/dist/components/Workflow/canvas/Canvas/LabeledEdge.mjs +104 -0
- package/dist/components/Workflow/canvas/Canvas/LabeledEdge.mjs.map +1 -0
- package/dist/components/Workflow/canvas/Canvas/edgeLabelVariant.d.ts +13 -0
- package/dist/components/Workflow/canvas/Canvas/edgeLabelVariant.d.ts.map +1 -0
- package/dist/components/Workflow/canvas/Canvas/edgeLabelVariant.js +18 -0
- package/dist/components/Workflow/canvas/Canvas/edgeLabelVariant.js.map +1 -0
- package/dist/components/Workflow/canvas/Canvas/edgeLabelVariant.mjs +16 -0
- package/dist/components/Workflow/canvas/Canvas/edgeLabelVariant.mjs.map +1 -0
- package/dist/components/Workflow/canvas/Canvas/index.d.ts +2 -0
- package/dist/components/Workflow/canvas/Canvas/index.d.ts.map +1 -0
- package/dist/components/Workflow/canvas/CollapsibleSection/CollapsibleSection.d.ts +30 -0
- package/dist/components/Workflow/canvas/CollapsibleSection/CollapsibleSection.d.ts.map +1 -0
- package/dist/components/Workflow/canvas/CollapsibleSection/CollapsibleSection.js +34 -0
- package/dist/components/Workflow/canvas/CollapsibleSection/CollapsibleSection.js.map +1 -0
- package/dist/components/Workflow/canvas/CollapsibleSection/CollapsibleSection.mjs +32 -0
- package/dist/components/Workflow/canvas/CollapsibleSection/CollapsibleSection.mjs.map +1 -0
- package/dist/components/Workflow/canvas/CollapsibleSection/index.d.ts +2 -0
- package/dist/components/Workflow/canvas/CollapsibleSection/index.d.ts.map +1 -0
- package/dist/components/Workflow/canvas/DrawerShell/DrawerHeader.d.ts +37 -0
- package/dist/components/Workflow/canvas/DrawerShell/DrawerHeader.d.ts.map +1 -0
- package/dist/components/Workflow/canvas/DrawerShell/DrawerHeader.js +33 -0
- package/dist/components/Workflow/canvas/DrawerShell/DrawerHeader.js.map +1 -0
- package/dist/components/Workflow/canvas/DrawerShell/DrawerHeader.mjs +31 -0
- package/dist/components/Workflow/canvas/DrawerShell/DrawerHeader.mjs.map +1 -0
- package/dist/components/Workflow/canvas/DrawerShell/DrawerIssues.d.ts +16 -0
- package/dist/components/Workflow/canvas/DrawerShell/DrawerIssues.d.ts.map +1 -0
- package/dist/components/Workflow/canvas/DrawerShell/DrawerIssues.js +54 -0
- package/dist/components/Workflow/canvas/DrawerShell/DrawerIssues.js.map +1 -0
- package/dist/components/Workflow/canvas/DrawerShell/DrawerIssues.mjs +52 -0
- package/dist/components/Workflow/canvas/DrawerShell/DrawerIssues.mjs.map +1 -0
- package/dist/components/Workflow/canvas/DrawerShell/DrawerShell.d.ts +27 -0
- package/dist/components/Workflow/canvas/DrawerShell/DrawerShell.d.ts.map +1 -0
- package/dist/components/Workflow/canvas/DrawerShell/DrawerShell.js +178 -0
- package/dist/components/Workflow/canvas/DrawerShell/DrawerShell.js.map +1 -0
- package/dist/components/Workflow/canvas/DrawerShell/DrawerShell.mjs +176 -0
- package/dist/components/Workflow/canvas/DrawerShell/DrawerShell.mjs.map +1 -0
- package/dist/components/Workflow/canvas/DrawerShell/index.d.ts +3 -0
- package/dist/components/Workflow/canvas/DrawerShell/index.d.ts.map +1 -0
- package/dist/components/Workflow/canvas/EdgeInspector/BuiltInEdgeInspector.d.ts +12 -0
- package/dist/components/Workflow/canvas/EdgeInspector/BuiltInEdgeInspector.d.ts.map +1 -0
- package/dist/components/Workflow/canvas/EdgeInspector/BuiltInEdgeInspector.js +68 -0
- package/dist/components/Workflow/canvas/EdgeInspector/BuiltInEdgeInspector.js.map +1 -0
- package/dist/components/Workflow/canvas/EdgeInspector/BuiltInEdgeInspector.mjs +66 -0
- package/dist/components/Workflow/canvas/EdgeInspector/BuiltInEdgeInspector.mjs.map +1 -0
- package/dist/components/Workflow/canvas/EdgeInspector/endpointTitle.d.ts +19 -0
- package/dist/components/Workflow/canvas/EdgeInspector/endpointTitle.d.ts.map +1 -0
- package/dist/components/Workflow/canvas/EdgeInspector/endpointTitle.js +35 -0
- package/dist/components/Workflow/canvas/EdgeInspector/endpointTitle.js.map +1 -0
- package/dist/components/Workflow/canvas/EdgeInspector/endpointTitle.mjs +32 -0
- package/dist/components/Workflow/canvas/EdgeInspector/endpointTitle.mjs.map +1 -0
- package/dist/components/Workflow/canvas/EdgeInspector/index.d.ts +3 -0
- package/dist/components/Workflow/canvas/EdgeInspector/index.d.ts.map +1 -0
- package/dist/components/Workflow/canvas/FieldWrapper/FieldWrapper.d.ts +54 -0
- package/dist/components/Workflow/canvas/FieldWrapper/FieldWrapper.d.ts.map +1 -0
- package/dist/components/Workflow/canvas/FieldWrapper/FieldWrapper.js +56 -0
- package/dist/components/Workflow/canvas/FieldWrapper/FieldWrapper.js.map +1 -0
- package/dist/components/Workflow/canvas/FieldWrapper/FieldWrapper.mjs +54 -0
- package/dist/components/Workflow/canvas/FieldWrapper/FieldWrapper.mjs.map +1 -0
- package/dist/components/Workflow/canvas/FieldWrapper/index.d.ts +3 -0
- package/dist/components/Workflow/canvas/FieldWrapper/index.d.ts.map +1 -0
- package/dist/components/Workflow/canvas/FloatingCard/FloatingCard.d.ts +16 -0
- package/dist/components/Workflow/canvas/FloatingCard/FloatingCard.d.ts.map +1 -0
- package/dist/components/Workflow/canvas/FloatingCard/FloatingCard.js +25 -0
- package/dist/components/Workflow/canvas/FloatingCard/FloatingCard.js.map +1 -0
- package/dist/components/Workflow/canvas/FloatingCard/FloatingCard.mjs +22 -0
- package/dist/components/Workflow/canvas/FloatingCard/FloatingCard.mjs.map +1 -0
- package/dist/components/Workflow/canvas/FloatingCard/index.d.ts +2 -0
- package/dist/components/Workflow/canvas/FloatingCard/index.d.ts.map +1 -0
- package/dist/components/Workflow/canvas/GenericNode/GenericNode.d.ts +14 -0
- package/dist/components/Workflow/canvas/GenericNode/GenericNode.d.ts.map +1 -0
- package/dist/components/Workflow/canvas/GenericNode/GenericNode.js +61 -0
- package/dist/components/Workflow/canvas/GenericNode/GenericNode.js.map +1 -0
- package/dist/components/Workflow/canvas/GenericNode/GenericNode.mjs +59 -0
- package/dist/components/Workflow/canvas/GenericNode/GenericNode.mjs.map +1 -0
- package/dist/components/Workflow/canvas/GenericNode/GenericNode.types.d.ts +11 -0
- package/dist/components/Workflow/canvas/GenericNode/GenericNode.types.d.ts.map +1 -0
- package/dist/components/Workflow/canvas/GenericNode/index.d.ts +3 -0
- package/dist/components/Workflow/canvas/GenericNode/index.d.ts.map +1 -0
- package/dist/components/Workflow/canvas/GraphErrorBanner/GraphErrorBanner.d.ts +15 -0
- package/dist/components/Workflow/canvas/GraphErrorBanner/GraphErrorBanner.d.ts.map +1 -0
- package/dist/components/Workflow/canvas/GraphErrorBanner/GraphErrorBanner.js +145 -0
- package/dist/components/Workflow/canvas/GraphErrorBanner/GraphErrorBanner.js.map +1 -0
- package/dist/components/Workflow/canvas/GraphErrorBanner/GraphErrorBanner.mjs +143 -0
- package/dist/components/Workflow/canvas/GraphErrorBanner/GraphErrorBanner.mjs.map +1 -0
- package/dist/components/Workflow/canvas/GraphErrorBanner/index.d.ts +2 -0
- package/dist/components/Workflow/canvas/GraphErrorBanner/index.d.ts.map +1 -0
- package/dist/components/Workflow/canvas/IconTile/IconTile.d.ts +10 -0
- package/dist/components/Workflow/canvas/IconTile/IconTile.d.ts.map +1 -0
- package/dist/components/Workflow/canvas/IconTile/IconTile.js +21 -0
- package/dist/components/Workflow/canvas/IconTile/IconTile.js.map +1 -0
- package/dist/components/Workflow/canvas/IconTile/IconTile.mjs +19 -0
- package/dist/components/Workflow/canvas/IconTile/IconTile.mjs.map +1 -0
- package/dist/components/Workflow/canvas/IconTile/IconTile.styles.d.ts +18 -0
- package/dist/components/Workflow/canvas/IconTile/IconTile.styles.d.ts.map +1 -0
- package/dist/components/Workflow/canvas/IconTile/IconTile.styles.js +40 -0
- package/dist/components/Workflow/canvas/IconTile/IconTile.styles.js.map +1 -0
- package/dist/components/Workflow/canvas/IconTile/IconTile.styles.mjs +37 -0
- package/dist/components/Workflow/canvas/IconTile/IconTile.styles.mjs.map +1 -0
- package/dist/components/Workflow/canvas/IconTile/IconTile.types.d.ts +15 -0
- package/dist/components/Workflow/canvas/IconTile/IconTile.types.d.ts.map +1 -0
- package/dist/components/Workflow/canvas/IconTile/index.d.ts +4 -0
- package/dist/components/Workflow/canvas/IconTile/index.d.ts.map +1 -0
- package/dist/components/Workflow/canvas/IssueList/IssueList.d.ts +24 -0
- package/dist/components/Workflow/canvas/IssueList/IssueList.d.ts.map +1 -0
- package/dist/components/Workflow/canvas/IssueList/IssueList.js +34 -0
- package/dist/components/Workflow/canvas/IssueList/IssueList.js.map +1 -0
- package/dist/components/Workflow/canvas/IssueList/IssueList.mjs +32 -0
- package/dist/components/Workflow/canvas/IssueList/IssueList.mjs.map +1 -0
- package/dist/components/Workflow/canvas/IssueList/index.d.ts +2 -0
- package/dist/components/Workflow/canvas/IssueList/index.d.ts.map +1 -0
- package/dist/components/Workflow/canvas/NodePalette/NodePalette.d.ts +9 -0
- package/dist/components/Workflow/canvas/NodePalette/NodePalette.d.ts.map +1 -0
- package/dist/components/Workflow/canvas/NodePalette/NodePalette.js +94 -0
- package/dist/components/Workflow/canvas/NodePalette/NodePalette.js.map +1 -0
- package/dist/components/Workflow/canvas/NodePalette/NodePalette.mjs +92 -0
- package/dist/components/Workflow/canvas/NodePalette/NodePalette.mjs.map +1 -0
- package/dist/components/Workflow/canvas/NodePalette/NodePalette.styles.d.ts +7 -0
- package/dist/components/Workflow/canvas/NodePalette/NodePalette.styles.d.ts.map +1 -0
- package/dist/components/Workflow/canvas/NodePalette/NodePalette.styles.js +13 -0
- package/dist/components/Workflow/canvas/NodePalette/NodePalette.styles.js.map +1 -0
- package/dist/components/Workflow/canvas/NodePalette/NodePalette.styles.mjs +10 -0
- package/dist/components/Workflow/canvas/NodePalette/NodePalette.styles.mjs.map +1 -0
- package/dist/components/Workflow/canvas/NodePalette/NodePaletteToggle.d.ts +10 -0
- package/dist/components/Workflow/canvas/NodePalette/NodePaletteToggle.d.ts.map +1 -0
- package/dist/components/Workflow/canvas/NodePalette/NodePaletteToggle.js +28 -0
- package/dist/components/Workflow/canvas/NodePalette/NodePaletteToggle.js.map +1 -0
- package/dist/components/Workflow/canvas/NodePalette/NodePaletteToggle.mjs +26 -0
- package/dist/components/Workflow/canvas/NodePalette/NodePaletteToggle.mjs.map +1 -0
- package/dist/components/Workflow/canvas/NodePalette/index.d.ts +4 -0
- package/dist/components/Workflow/canvas/NodePalette/index.d.ts.map +1 -0
- package/dist/components/Workflow/canvas/NodeShell/NodeShell.d.ts +3 -0
- package/dist/components/Workflow/canvas/NodeShell/NodeShell.d.ts.map +1 -0
- package/dist/components/Workflow/canvas/NodeShell/NodeShell.js +137 -0
- package/dist/components/Workflow/canvas/NodeShell/NodeShell.js.map +1 -0
- package/dist/components/Workflow/canvas/NodeShell/NodeShell.mjs +135 -0
- package/dist/components/Workflow/canvas/NodeShell/NodeShell.mjs.map +1 -0
- package/dist/components/Workflow/canvas/NodeShell/NodeShell.styles.d.ts +66 -0
- package/dist/components/Workflow/canvas/NodeShell/NodeShell.styles.d.ts.map +1 -0
- package/dist/components/Workflow/canvas/NodeShell/NodeShell.styles.js +87 -0
- package/dist/components/Workflow/canvas/NodeShell/NodeShell.styles.js.map +1 -0
- package/dist/components/Workflow/canvas/NodeShell/NodeShell.styles.mjs +77 -0
- package/dist/components/Workflow/canvas/NodeShell/NodeShell.styles.mjs.map +1 -0
- package/dist/components/Workflow/canvas/NodeShell/NodeShell.types.d.ts +35 -0
- package/dist/components/Workflow/canvas/NodeShell/NodeShell.types.d.ts.map +1 -0
- package/dist/components/Workflow/canvas/NodeShell/index.d.ts +4 -0
- package/dist/components/Workflow/canvas/NodeShell/index.d.ts.map +1 -0
- package/dist/components/Workflow/canvas/SeverityDot/SeverityDot.d.ts +15 -0
- package/dist/components/Workflow/canvas/SeverityDot/SeverityDot.d.ts.map +1 -0
- package/dist/components/Workflow/canvas/SeverityDot/SeverityDot.js +14 -0
- package/dist/components/Workflow/canvas/SeverityDot/SeverityDot.js.map +1 -0
- package/dist/components/Workflow/canvas/SeverityDot/SeverityDot.mjs +12 -0
- package/dist/components/Workflow/canvas/SeverityDot/SeverityDot.mjs.map +1 -0
- package/dist/components/Workflow/canvas/SeverityDot/index.d.ts +2 -0
- package/dist/components/Workflow/canvas/SeverityDot/index.d.ts.map +1 -0
- package/dist/components/Workflow/canvas/issueSeverity.d.ts +23 -0
- package/dist/components/Workflow/canvas/issueSeverity.d.ts.map +1 -0
- package/dist/components/Workflow/canvas/issueSeverity.js +51 -0
- package/dist/components/Workflow/canvas/issueSeverity.js.map +1 -0
- package/dist/components/Workflow/canvas/issueSeverity.mjs +47 -0
- package/dist/components/Workflow/canvas/issueSeverity.mjs.map +1 -0
- package/dist/components/Workflow/canvas/useFieldFocusRequest.d.ts +14 -0
- package/dist/components/Workflow/canvas/useFieldFocusRequest.d.ts.map +1 -0
- package/dist/components/Workflow/canvas/useFieldFocusRequest.js +48 -0
- package/dist/components/Workflow/canvas/useFieldFocusRequest.js.map +1 -0
- package/dist/components/Workflow/canvas/useFieldFocusRequest.mjs +46 -0
- package/dist/components/Workflow/canvas/useFieldFocusRequest.mjs.map +1 -0
- package/dist/components/Workflow/canvas/workflowLabelProps.d.ts +12 -0
- package/dist/components/Workflow/canvas/workflowLabelProps.d.ts.map +1 -0
- package/dist/components/Workflow/canvas/workflowLabelProps.js +17 -0
- package/dist/components/Workflow/canvas/workflowLabelProps.js.map +1 -0
- package/dist/components/Workflow/canvas/workflowLabelProps.mjs +15 -0
- package/dist/components/Workflow/canvas/workflowLabelProps.mjs.map +1 -0
- package/dist/components/Workflow/connectionRules.d.ts +59 -0
- package/dist/components/Workflow/connectionRules.d.ts.map +1 -0
- package/dist/components/Workflow/connectionRules.js +150 -0
- package/dist/components/Workflow/connectionRules.js.map +1 -0
- package/dist/components/Workflow/connectionRules.mjs +145 -0
- package/dist/components/Workflow/connectionRules.mjs.map +1 -0
- package/dist/components/Workflow/createNode.d.ts +27 -0
- package/dist/components/Workflow/createNode.d.ts.map +1 -0
- package/dist/components/Workflow/createNode.js +66 -0
- package/dist/components/Workflow/createNode.js.map +1 -0
- package/dist/components/Workflow/createNode.mjs +62 -0
- package/dist/components/Workflow/createNode.mjs.map +1 -0
- package/dist/components/Workflow/graphHistory.d.ts +23 -0
- package/dist/components/Workflow/graphHistory.d.ts.map +1 -0
- package/dist/components/Workflow/graphHistory.js +73 -0
- package/dist/components/Workflow/graphHistory.js.map +1 -0
- package/dist/components/Workflow/graphHistory.mjs +70 -0
- package/dist/components/Workflow/graphHistory.mjs.map +1 -0
- package/dist/components/Workflow/graphObserver.d.ts +13 -0
- package/dist/components/Workflow/graphObserver.d.ts.map +1 -0
- package/dist/components/Workflow/graphObserver.js +11 -0
- package/dist/components/Workflow/graphObserver.js.map +1 -0
- package/dist/components/Workflow/graphObserver.mjs +8 -0
- package/dist/components/Workflow/graphObserver.mjs.map +1 -0
- package/dist/components/Workflow/graphReducer.d.ts +75 -0
- package/dist/components/Workflow/graphReducer.d.ts.map +1 -0
- package/dist/components/Workflow/graphReducer.js +122 -0
- package/dist/components/Workflow/graphReducer.js.map +1 -0
- package/dist/components/Workflow/graphReducer.mjs +119 -0
- package/dist/components/Workflow/graphReducer.mjs.map +1 -0
- package/dist/components/Workflow/index.d.ts +22 -0
- package/dist/components/Workflow/index.d.ts.map +1 -0
- package/dist/components/Workflow/layout/autoLayout.d.ts +49 -0
- package/dist/components/Workflow/layout/autoLayout.d.ts.map +1 -0
- package/dist/components/Workflow/layout/autoLayout.js +149 -0
- package/dist/components/Workflow/layout/autoLayout.js.map +1 -0
- package/dist/components/Workflow/layout/autoLayout.mjs +146 -0
- package/dist/components/Workflow/layout/autoLayout.mjs.map +1 -0
- package/dist/components/Workflow/stories/toyNodeTypes.d.ts +40 -0
- package/dist/components/Workflow/stories/toyNodeTypes.d.ts.map +1 -0
- package/dist/components/Workflow/useWorkflowIssueMessage.d.ts +15 -0
- package/dist/components/Workflow/useWorkflowIssueMessage.d.ts.map +1 -0
- package/dist/components/Workflow/useWorkflowIssueMessage.js +45 -0
- package/dist/components/Workflow/useWorkflowIssueMessage.js.map +1 -0
- package/dist/components/Workflow/useWorkflowIssueMessage.mjs +43 -0
- package/dist/components/Workflow/useWorkflowIssueMessage.mjs.map +1 -0
- package/dist/components/Workflow/useWorkflowKeyboard.d.ts +10 -0
- package/dist/components/Workflow/useWorkflowKeyboard.d.ts.map +1 -0
- package/dist/components/Workflow/useWorkflowKeyboard.js +116 -0
- package/dist/components/Workflow/useWorkflowKeyboard.js.map +1 -0
- package/dist/components/Workflow/useWorkflowKeyboard.mjs +114 -0
- package/dist/components/Workflow/useWorkflowKeyboard.mjs.map +1 -0
- package/dist/icons.js +17 -0
- package/dist/icons.js.map +1 -1
- package/dist/icons.mjs +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +38 -0
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +14 -0
- package/dist/index.mjs.map +1 -1
- package/dist/test-support/setup.d.ts +5 -0
- package/dist/test-support/setup.d.ts.map +1 -0
- package/dist/theme/colors.d.ts +196 -44
- package/dist/theme/colors.d.ts.map +1 -1
- package/dist/theme/colors.js +184 -22
- package/dist/theme/colors.js.map +1 -1
- package/dist/theme/colors.mjs +184 -22
- package/dist/theme/colors.mjs.map +1 -1
- package/dist/theme/global.d.ts.map +1 -1
- package/dist/theme/global.js +30 -2
- package/dist/theme/global.js.map +1 -1
- package/dist/theme/global.mjs +30 -2
- package/dist/theme/global.mjs.map +1 -1
- package/package.json +10 -2
- package/src/components/Icon/_constants/iconList.ts +35 -0
- package/src/components/Icon/index.tsx +20 -0
- package/src/components/SegmentedControl/SegmentedControl.tsx +21 -4
- package/src/components/Workflow/README.md +362 -0
- package/src/components/Workflow/Workflow.translations.json +112 -0
- package/src/components/Workflow/Workflow.tsx +189 -0
- package/src/components/Workflow/Workflow.types.ts +496 -0
- package/src/components/Workflow/WorkflowContext/WorkflowContext.tsx +215 -0
- package/src/components/Workflow/WorkflowContext/WorkflowContext.types.ts +122 -0
- package/src/components/Workflow/WorkflowContext/index.ts +10 -0
- package/src/components/Workflow/WorkflowContext/workflowSelection.test.tsx +93 -0
- package/src/components/Workflow/canvas/Canvas/BranchLabelBadge.tsx +69 -0
- package/src/components/Workflow/canvas/Canvas/Canvas.styles.ts +91 -0
- package/src/components/Workflow/canvas/Canvas/Canvas.tsx +773 -0
- package/src/components/Workflow/canvas/Canvas/CanvasControls.tsx +178 -0
- package/src/components/Workflow/canvas/Canvas/LabeledEdge.tsx +198 -0
- package/src/components/Workflow/canvas/Canvas/edgeLabelVariant.test.ts +26 -0
- package/src/components/Workflow/canvas/Canvas/edgeLabelVariant.ts +23 -0
- package/src/components/Workflow/canvas/Canvas/index.ts +1 -0
- package/src/components/Workflow/canvas/CollapsibleSection/CollapsibleSection.tsx +96 -0
- package/src/components/Workflow/canvas/CollapsibleSection/index.ts +4 -0
- package/src/components/Workflow/canvas/DrawerShell/DrawerHeader.tsx +104 -0
- package/src/components/Workflow/canvas/DrawerShell/DrawerIssues.tsx +115 -0
- package/src/components/Workflow/canvas/DrawerShell/DrawerShell.tsx +408 -0
- package/src/components/Workflow/canvas/DrawerShell/index.ts +2 -0
- package/src/components/Workflow/canvas/EdgeInspector/BuiltInEdgeInspector.tsx +135 -0
- package/src/components/Workflow/canvas/EdgeInspector/endpointTitle.ts +38 -0
- package/src/components/Workflow/canvas/EdgeInspector/index.ts +2 -0
- package/src/components/Workflow/canvas/FieldWrapper/FieldWrapper.tsx +118 -0
- package/src/components/Workflow/canvas/FieldWrapper/index.ts +6 -0
- package/src/components/Workflow/canvas/FloatingCard/FloatingCard.tsx +37 -0
- package/src/components/Workflow/canvas/FloatingCard/index.ts +1 -0
- package/src/components/Workflow/canvas/GenericNode/GenericNode.tsx +114 -0
- package/src/components/Workflow/canvas/GenericNode/GenericNode.types.ts +10 -0
- package/src/components/Workflow/canvas/GenericNode/index.ts +5 -0
- package/src/components/Workflow/canvas/GraphErrorBanner/GraphErrorBanner.tsx +284 -0
- package/src/components/Workflow/canvas/GraphErrorBanner/index.ts +1 -0
- package/src/components/Workflow/canvas/IconTile/IconTile.styles.ts +40 -0
- package/src/components/Workflow/canvas/IconTile/IconTile.tsx +36 -0
- package/src/components/Workflow/canvas/IconTile/IconTile.types.ts +13 -0
- package/src/components/Workflow/canvas/IconTile/index.ts +7 -0
- package/src/components/Workflow/canvas/IssueList/IssueList.tsx +84 -0
- package/src/components/Workflow/canvas/IssueList/index.ts +1 -0
- package/src/components/Workflow/canvas/NodePalette/NodePalette.styles.ts +7 -0
- package/src/components/Workflow/canvas/NodePalette/NodePalette.tsx +180 -0
- package/src/components/Workflow/canvas/NodePalette/NodePaletteToggle.tsx +39 -0
- package/src/components/Workflow/canvas/NodePalette/index.ts +3 -0
- package/src/components/Workflow/canvas/NodeShell/NodeShell.styles.ts +84 -0
- package/src/components/Workflow/canvas/NodeShell/NodeShell.tsx +321 -0
- package/src/components/Workflow/canvas/NodeShell/NodeShell.types.ts +45 -0
- package/src/components/Workflow/canvas/NodeShell/index.ts +8 -0
- package/src/components/Workflow/canvas/SeverityDot/SeverityDot.tsx +33 -0
- package/src/components/Workflow/canvas/SeverityDot/index.ts +1 -0
- package/src/components/Workflow/canvas/issueSeverity.ts +48 -0
- package/src/components/Workflow/canvas/useFieldFocusRequest.ts +54 -0
- package/src/components/Workflow/canvas/workflowLabelProps.ts +11 -0
- package/src/components/Workflow/connectionRules.test.ts +326 -0
- package/src/components/Workflow/connectionRules.ts +190 -0
- package/src/components/Workflow/createNode.test.ts +61 -0
- package/src/components/Workflow/createNode.ts +67 -0
- package/src/components/Workflow/graphHistory.test.ts +178 -0
- package/src/components/Workflow/graphHistory.ts +91 -0
- package/src/components/Workflow/graphObserver.ts +21 -0
- package/src/components/Workflow/graphReducer.test.ts +314 -0
- package/src/components/Workflow/graphReducer.ts +196 -0
- package/src/components/Workflow/index.ts +74 -0
- package/src/components/Workflow/layout/autoLayout.test.ts +170 -0
- package/src/components/Workflow/layout/autoLayout.ts +200 -0
- package/src/components/Workflow/stories/Workflow.stories.tsx +111 -0
- package/src/components/Workflow/stories/toyNodeTypes.tsx +146 -0
- package/src/components/Workflow/useWorkflowIssueMessage.test.ts +101 -0
- package/src/components/Workflow/useWorkflowIssueMessage.ts +49 -0
- package/src/components/Workflow/useWorkflowKeyboard.ts +126 -0
- package/src/index.ts +1 -0
- package/src/test-support/setup.ts +11 -0
- package/src/theme/SemanticTokens.mdx +61 -7
- package/src/theme/colors.ts +216 -26
- package/src/theme/global.ts +31 -2
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { Icons } from './_constants/iconList';
|
|
2
2
|
|
|
3
|
+
export type { CreatedIcon } from './_utils/createIcon';
|
|
4
|
+
|
|
3
5
|
// 각 아이콘을 개별적으로 export (Icons. 없이 직접 사용 가능)
|
|
4
6
|
export const {
|
|
5
7
|
// BI Icons
|
|
@@ -117,13 +119,31 @@ export const {
|
|
|
117
119
|
// SL Icons
|
|
118
120
|
SlSettings,
|
|
119
121
|
// TB Icons
|
|
122
|
+
TbAlertCircle,
|
|
120
123
|
TbAppWindowFilled,
|
|
124
|
+
TbArrowBackUp,
|
|
125
|
+
TbArrowForwardUp,
|
|
126
|
+
TbCheck,
|
|
127
|
+
TbChevronDown,
|
|
128
|
+
TbChevronUp,
|
|
121
129
|
TbInfinity,
|
|
122
130
|
TbLayoutNavbar,
|
|
131
|
+
TbLock,
|
|
123
132
|
TbLockCog,
|
|
133
|
+
TbLockOpen,
|
|
134
|
+
TbMaximize,
|
|
124
135
|
TbMessageChatbotFilled,
|
|
136
|
+
TbSitemap,
|
|
125
137
|
TbSum,
|
|
126
138
|
TbWorldSearch,
|
|
139
|
+
TbX,
|
|
140
|
+
// Lucide icons surfaced under friendly names (Workflow chrome)
|
|
141
|
+
AlertTriangle,
|
|
142
|
+
AlertOctagon,
|
|
143
|
+
GripVertical,
|
|
144
|
+
StickyNote,
|
|
145
|
+
Minus,
|
|
146
|
+
Plus,
|
|
127
147
|
// Custom SVG Icons
|
|
128
148
|
Analytics,
|
|
129
149
|
Bulb,
|
|
@@ -66,9 +66,21 @@ export const SegmentedControl = forwardRef<
|
|
|
66
66
|
}
|
|
67
67
|
}}
|
|
68
68
|
size={size}
|
|
69
|
-
//
|
|
70
|
-
// bg.
|
|
71
|
-
//
|
|
69
|
+
// Light mode: track is bg.subtle (gray.50) and the selected indicator is
|
|
70
|
+
// bg.surface (white) lifted by an md shadow — a classic raised thumb.
|
|
71
|
+
//
|
|
72
|
+
// Selected indicator rides on `bg.raised` — a raised neutral surface that
|
|
73
|
+
// resolves white in light and the lightest neutral (gray.1100) in dark,
|
|
74
|
+
// so the thumb reads as lifted above the `bg.subtle` track in both modes
|
|
75
|
+
// (`bg.surface` could not: its dark value is darker than the track). Dark
|
|
76
|
+
// mode also needs two things light mode doesn't, and neither
|
|
77
|
+
// maps to a token: a drop shadow is invisible on a dark canvas, so the
|
|
78
|
+
// indicator gains a soft ambient shadow + a translucent-white hairline
|
|
79
|
+
// edge; and the track only contrasts against the app canvas — on a
|
|
80
|
+
// same-or-lighter dark surface (e.g. a bg.surface card) it would vanish
|
|
81
|
+
// and leave the control looking like floating text, so a translucent
|
|
82
|
+
// hairline ring defines its bounds on any dark background. Both rings are
|
|
83
|
+
// box-shadows (not borders) so the matched item-height math is preserved.
|
|
72
84
|
bg="bg.subtle"
|
|
73
85
|
p="1"
|
|
74
86
|
borderRadius={borderRadius}
|
|
@@ -77,8 +89,13 @@ export const SegmentedControl = forwardRef<
|
|
|
77
89
|
{...rest}
|
|
78
90
|
css={mergeCss(
|
|
79
91
|
{
|
|
80
|
-
'--segment-indicator-bg': `var(--chakra-colors-bg-
|
|
92
|
+
'--segment-indicator-bg': `var(--chakra-colors-bg-raised)`,
|
|
81
93
|
'--segment-indicator-shadow': `var(--chakra-shadows-md)`,
|
|
94
|
+
'.dark &': {
|
|
95
|
+
'--segment-indicator-shadow':
|
|
96
|
+
'0 1px 2px rgba(0, 0, 0, 0.45), 0 0 0 1px rgba(255, 255, 255, 0.08)',
|
|
97
|
+
boxShadow: '0 0 0 1px rgba(255, 255, 255, 0.12)',
|
|
98
|
+
},
|
|
82
99
|
},
|
|
83
100
|
css
|
|
84
101
|
)}
|
|
@@ -0,0 +1,362 @@
|
|
|
1
|
+
# Workflow
|
|
2
|
+
|
|
3
|
+
A node-based **workflow / graph editor** built on [React Flow](https://reactflow.dev).
|
|
4
|
+
It owns the hard parts — canvas interaction, a drag-and-drop palette, an
|
|
5
|
+
undo/redo graph model, auto-layout, selection, and issue rendering — and stays
|
|
6
|
+
**domain-free**: it ships with **no node types of its own**. You describe your
|
|
7
|
+
domain by registering node types, and you wire up the surrounding chrome
|
|
8
|
+
(persistence, validation, an inspector) however your app wants.
|
|
9
|
+
|
|
10
|
+
> Mental model: this is to a workflow editor what React Flow is to a canvas —
|
|
11
|
+
> batteries for the editor, but *you bring the nodes* (and decide what clicking
|
|
12
|
+
> one does).
|
|
13
|
+
|
|
14
|
+
- [Quick start](#quick-start)
|
|
15
|
+
- [Defining node types](#defining-node-types)
|
|
16
|
+
- [The inspector / drawer](#the-inspector--drawer)
|
|
17
|
+
- [Reacting to selection](#reacting-to-selection)
|
|
18
|
+
- [Controlled vs uncontrolled graph](#controlled-vs-uncontrolled-graph)
|
|
19
|
+
- [Validation & issues](#validation--issues)
|
|
20
|
+
- [Internationalization](#internationalization-translate)
|
|
21
|
+
- [Passing host data (`hostBridge`)](#passing-host-data-hostbridge)
|
|
22
|
+
- [Theming, layout & read-only](#theming-layout--read-only)
|
|
23
|
+
- [Props reference](#props-reference)
|
|
24
|
+
- [Gotchas](#gotchas)
|
|
25
|
+
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
## Quick start
|
|
29
|
+
|
|
30
|
+
The component must render inside a `LogicianProvider` (it uses design-system
|
|
31
|
+
tokens), and React Flow's stylesheet is bundled automatically.
|
|
32
|
+
|
|
33
|
+
```tsx
|
|
34
|
+
import { useState } from 'react';
|
|
35
|
+
import {
|
|
36
|
+
Workflow,
|
|
37
|
+
NodeInspector,
|
|
38
|
+
defineNodeType,
|
|
39
|
+
type Graph,
|
|
40
|
+
type NodeTypeDef,
|
|
41
|
+
} from '@mindlogic-ai/logician-ui';
|
|
42
|
+
import { Sparkles } from '@mindlogic-ai/logician-ui/icons';
|
|
43
|
+
import { FormControl, FormLabel, Input } from '@mindlogic-ai/logician-ui';
|
|
44
|
+
|
|
45
|
+
// 1. Describe your domain as node types.
|
|
46
|
+
type MessageConfig = { text: string };
|
|
47
|
+
|
|
48
|
+
const messageNode = defineNodeType<MessageConfig>({
|
|
49
|
+
kind: 'message',
|
|
50
|
+
label: 'Message',
|
|
51
|
+
category: 'ai',
|
|
52
|
+
icon: Sparkles,
|
|
53
|
+
defaultConfig: () => ({ text: '' }),
|
|
54
|
+
handles: () => ({ inputs: [{ id: 'in' }], outputs: [{ id: 'out' }] }),
|
|
55
|
+
getMetaChips: config => (config.text ? [config.text] : []),
|
|
56
|
+
// Optional: the body shown in the inspector drawer when this node is selected.
|
|
57
|
+
renderDrawer: ({ config, onChange, readOnly }) => (
|
|
58
|
+
<FormControl>
|
|
59
|
+
<FormLabel>Text</FormLabel>
|
|
60
|
+
<Input
|
|
61
|
+
value={config.text}
|
|
62
|
+
disabled={readOnly}
|
|
63
|
+
onChange={e => onChange({ ...config, text: e.target.value })}
|
|
64
|
+
/>
|
|
65
|
+
</FormControl>
|
|
66
|
+
),
|
|
67
|
+
});
|
|
68
|
+
|
|
69
|
+
const NODE_TYPES: NodeTypeDef[] = [messageNode];
|
|
70
|
+
|
|
71
|
+
// 2. Render the editor.
|
|
72
|
+
export function MyEditor() {
|
|
73
|
+
const [graph, setGraph] = useState<Graph>({ nodes: [], edges: [] });
|
|
74
|
+
return (
|
|
75
|
+
<Workflow nodeTypes={NODE_TYPES} graph={graph} onGraphChange={setGraph}>
|
|
76
|
+
{/* Opt in to the built-in inspector. Omit it to own inspection yourself
|
|
77
|
+
(see "Reacting to selection"). */}
|
|
78
|
+
<NodeInspector />
|
|
79
|
+
</Workflow>
|
|
80
|
+
);
|
|
81
|
+
}
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
That's a full editor: drag `Message` from the palette, connect nodes, undo/redo,
|
|
85
|
+
auto-arrange, and edit a selected node in the drawer.
|
|
86
|
+
|
|
87
|
+
---
|
|
88
|
+
|
|
89
|
+
## Defining node types
|
|
90
|
+
|
|
91
|
+
A node type is a plain object created with `defineNodeType<TConfig>(...)`, where
|
|
92
|
+
`TConfig` is the shape of that node's `config`. The framework knows nothing about
|
|
93
|
+
your kinds — it just renders what the registry describes.
|
|
94
|
+
|
|
95
|
+
| Field | Required | Purpose |
|
|
96
|
+
| --- | --- | --- |
|
|
97
|
+
| `kind` | ✓ | Stable id for the type (e.g. `'message'`). Used in `node.kind` and id generation. Keep it English/snake-ish. |
|
|
98
|
+
| `label` | ✓ | Short operational noun shown on the card and in the palette. Intentionally **not** translated (matches n8n/Make/Dify). |
|
|
99
|
+
| `category` | ✓ | One of `trigger` · `ai` · `logic` · `safety` · `output` · `note`. Drives the icon-tile color. Color attaches to **category**, not kind. |
|
|
100
|
+
| `icon` | ✓ | A `CreatedIcon` (wrap any icon with `createIcon` from this package, or use one of the exported icons). |
|
|
101
|
+
| `defaultConfig` | ✓ | Value or factory `() => TConfig` for a freshly-dropped node. Prefer the factory for nested/mutable defaults. |
|
|
102
|
+
| `handles` | ✓ | `(config) => ({ inputs, outputs })`. Can depend on config (e.g. a classifier emitting one output per category). |
|
|
103
|
+
| `renderDrawer` | – | The inspector body for this kind. Omit and clicking the node is a no-op for editing. |
|
|
104
|
+
| `renderNode` | – | Escape hatch to fully replace the card body (e.g. a sticky Note). Most types use `getInstanceTitle` + `getMetaChips` instead. |
|
|
105
|
+
| `getInstanceTitle` | – | `(config) => string` for the snake_case identifier line. Defaults to the node id. |
|
|
106
|
+
| `getMetaChips` | – | `(config) => (string \| { text, tone })[]` — small chips under the title. `tone: 'danger' \| 'warning'` tints a value. |
|
|
107
|
+
| `descriptionKey` / `description` | – | Palette description. Prefer `descriptionKey` (resolved through your `translate`). |
|
|
108
|
+
| `placement` | – | Declarative constraints read by the palette/canvas: `minCount`, `maxCount`, `pinned` (can't delete), `role: 'start' \| 'end'`, `mustFollow(Directly)`. |
|
|
109
|
+
| `canConnect` | – | `(ctx) => boolean \| string` to reject a connection (return a reason string to explain). |
|
|
110
|
+
| `outputSchema` | – | `(config) => JSONSchema \| undefined` for variable-resolution features. |
|
|
111
|
+
| `getGraphIssues` | – | FE, graph-aware advisories merged into the node's canvas chrome (e.g. an unconnected required exit). Pure + cheap; runs every render. |
|
|
112
|
+
| `localizeDefaults` / `hostDefaults` | – | Overlay defaults at creation time using the translator / the `hostBridge` (e.g. seed a node's model from the tenant's live list). |
|
|
113
|
+
|
|
114
|
+
`resolveDefaultConfig(def)` is exported if you need to materialize a default
|
|
115
|
+
config yourself.
|
|
116
|
+
|
|
117
|
+
---
|
|
118
|
+
|
|
119
|
+
## The inspector / drawer
|
|
120
|
+
|
|
121
|
+
There are **three levels** of customization — pick per app:
|
|
122
|
+
|
|
123
|
+
**1. Built-in drawer (default).** Mount `<NodeInspector />` as a child. It opens a
|
|
124
|
+
floating card on node/edge selection, renders the selected node's `renderDrawer`
|
|
125
|
+
(or a built-in edge inspector), and provides delete/duplicate + inline issues.
|
|
126
|
+
|
|
127
|
+
```tsx
|
|
128
|
+
<Workflow nodeTypes={NODE_TYPES} graph={graph} onGraphChange={setGraph}>
|
|
129
|
+
<NodeInspector dock="right" />
|
|
130
|
+
</Workflow>
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
`<NodeInspector>` props: `dock` (`'left' | 'right'`, default `'right'`) and
|
|
134
|
+
`renderEdgeDrawer` (custom edge body; falls back to label + endpoints).
|
|
135
|
+
|
|
136
|
+
**2. Custom node bodies.** Keep `<NodeInspector>` but put whatever you want inside
|
|
137
|
+
each node type's `renderDrawer` — that's where domain-specific UI lives (model
|
|
138
|
+
pickers, validators, even modals). The framework never sees it.
|
|
139
|
+
|
|
140
|
+
**3. Fully custom — drive your own UI.** Omit `<NodeInspector>` entirely and render
|
|
141
|
+
your own panel *anywhere in your app* from the selection signal. See below.
|
|
142
|
+
|
|
143
|
+
---
|
|
144
|
+
|
|
145
|
+
## Reacting to selection
|
|
146
|
+
|
|
147
|
+
The editor owns selection and canvas interaction; it surfaces what's selected so
|
|
148
|
+
**clicking a node can control any part of your UI** — a side panel in your app
|
|
149
|
+
shell, a modal, a route, anything.
|
|
150
|
+
|
|
151
|
+
```tsx
|
|
152
|
+
import { useState } from 'react';
|
|
153
|
+
import { Workflow, type WorkflowSelection } from '@mindlogic-ai/logician-ui';
|
|
154
|
+
|
|
155
|
+
function EditorWithMyOwnPanel() {
|
|
156
|
+
const [selection, setSelection] = useState<WorkflowSelection | null>(null);
|
|
157
|
+
return (
|
|
158
|
+
<div style={{ display: 'flex' }}>
|
|
159
|
+
<Workflow
|
|
160
|
+
nodeTypes={NODE_TYPES}
|
|
161
|
+
graph={graph}
|
|
162
|
+
onGraphChange={setGraph}
|
|
163
|
+
onSelectionChange={setSelection}
|
|
164
|
+
// no <NodeInspector> child → no built-in drawer
|
|
165
|
+
/>
|
|
166
|
+
{selection?.type === 'node' && <MyNodePanel node={selection.node} />}
|
|
167
|
+
</div>
|
|
168
|
+
);
|
|
169
|
+
}
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
Selection callbacks:
|
|
173
|
+
|
|
174
|
+
- `onSelectionChange(selection | null)` — fires on select, deselect (pane click,
|
|
175
|
+
`null`), and when the selected element is deleted. `WorkflowSelection` carries
|
|
176
|
+
`{ type, id, node }` or `{ type, id, edge }`.
|
|
177
|
+
- `onNodeClick(node)` / `onEdgeClick(edge)` — raw click convenience (e.g. "flip a
|
|
178
|
+
surface back into edit mode"). Selection still updates regardless.
|
|
179
|
+
|
|
180
|
+
You can also mount `<NodeInspector>` **and** listen to `onSelectionChange` — e.g.
|
|
181
|
+
to keep the built-in drawer but also highlight the selection elsewhere.
|
|
182
|
+
|
|
183
|
+
---
|
|
184
|
+
|
|
185
|
+
## Controlled vs uncontrolled graph
|
|
186
|
+
|
|
187
|
+
- **Controlled:** pass `graph` and `onGraphChange`. You own the source of truth.
|
|
188
|
+
Pass a *stable* reference and update it from `onGraphChange`.
|
|
189
|
+
- **Uncontrolled:** pass `defaultGraph` (or nothing) and read changes via
|
|
190
|
+
`onGraphChange` if you like. The component keeps its own state.
|
|
191
|
+
|
|
192
|
+
```ts
|
|
193
|
+
type Graph = { nodes: GraphNode[]; edges: GraphEdge[] };
|
|
194
|
+
type GraphNode<TConfig = unknown> = {
|
|
195
|
+
id: string;
|
|
196
|
+
kind: string;
|
|
197
|
+
position: { x: number; y: number };
|
|
198
|
+
config: TConfig;
|
|
199
|
+
};
|
|
200
|
+
type GraphEdge = {
|
|
201
|
+
id: string;
|
|
202
|
+
source: string;
|
|
203
|
+
target: string;
|
|
204
|
+
sourceHandle?: string;
|
|
205
|
+
targetHandle?: string;
|
|
206
|
+
label?: string;
|
|
207
|
+
};
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
Undo/redo is built in (and keyboard-wired). Two persistence hooks help hosts
|
|
211
|
+
whose autosave ignores position-only diffs:
|
|
212
|
+
|
|
213
|
+
- `onArrange(graph)` — fired after the one-click auto-arrange.
|
|
214
|
+
- `onHistoryNavigate(graph)` — fired after an undo/redo.
|
|
215
|
+
|
|
216
|
+
Wire both to a forced save if a tidy layout (or an undo of one) must survive a
|
|
217
|
+
reload.
|
|
218
|
+
|
|
219
|
+
---
|
|
220
|
+
|
|
221
|
+
## Validation & issues
|
|
222
|
+
|
|
223
|
+
Validation is **not** built in — the editor *renders* issues you supply, it does
|
|
224
|
+
not compute them. This keeps the source of truth wherever it belongs (usually
|
|
225
|
+
your backend).
|
|
226
|
+
|
|
227
|
+
```tsx
|
|
228
|
+
<Workflow
|
|
229
|
+
nodeTypes={NODE_TYPES}
|
|
230
|
+
graph={graph}
|
|
231
|
+
issues={issues} // Issue[] you own — render-only
|
|
232
|
+
validating={isRevalidating} // show a "rechecking" affordance, keep prior issues
|
|
233
|
+
/>
|
|
234
|
+
```
|
|
235
|
+
|
|
236
|
+
```ts
|
|
237
|
+
type Issue = {
|
|
238
|
+
severity: 'error' | 'warning';
|
|
239
|
+
code: string;
|
|
240
|
+
message: string; // English fallback
|
|
241
|
+
nodeId?: string; // attaches to a node
|
|
242
|
+
edgeId?: string; // attaches to an edge
|
|
243
|
+
fieldKey?: string; // renders inline under a specific field
|
|
244
|
+
messageVars?: Record<string, string | number>;
|
|
245
|
+
};
|
|
246
|
+
```
|
|
247
|
+
|
|
248
|
+
Issues with a `nodeId`/`edgeId` highlight that element and appear in the drawer;
|
|
249
|
+
those with a `fieldKey` render inline under the matching input. Cheap, FE-only,
|
|
250
|
+
graph-aware advisories can also come from a node type's `getGraphIssues`.
|
|
251
|
+
|
|
252
|
+
> Localizing issue copy: render `issue.message`, or map `issue.code` to your own
|
|
253
|
+
> catalog. (The `useWorkflowIssueMessage` hook maps `code` → a
|
|
254
|
+
> `workflow_be_<code>` key via your injected `translate`, falling back to
|
|
255
|
+
> `issue.message`.)
|
|
256
|
+
|
|
257
|
+
---
|
|
258
|
+
|
|
259
|
+
## Internationalization (`translate`)
|
|
260
|
+
|
|
261
|
+
All chrome copy (palette, controls, inspector, node `descriptionKey`s) goes
|
|
262
|
+
through a single injected translator, so the editor localizes with the rest of
|
|
263
|
+
your app:
|
|
264
|
+
|
|
265
|
+
```tsx
|
|
266
|
+
<Workflow nodeTypes={NODE_TYPES} translate={myTranslate} />
|
|
267
|
+
```
|
|
268
|
+
|
|
269
|
+
`translate: (key: string, vars?: Record<string, string | number>) => ReactNode`.
|
|
270
|
+
It must resolve both the editor's own `workflow_*` keys **and** any
|
|
271
|
+
`descriptionKey`s you set on your node types (pass a function bound to your full
|
|
272
|
+
catalog).
|
|
273
|
+
|
|
274
|
+
If you omit `translate`, the component falls back to its bundled
|
|
275
|
+
`Workflow.translations.json` via the design system's `useTranslate`. ⚠️ That
|
|
276
|
+
default currently resolves Korean (`useTranslate` does not yet read
|
|
277
|
+
`LanguageContext`) — pass your own `translate` for any non-Korean app.
|
|
278
|
+
|
|
279
|
+
---
|
|
280
|
+
|
|
281
|
+
## Passing host data (`hostBridge`)
|
|
282
|
+
|
|
283
|
+
Node inspectors often need app data the framework can't know about (a live model
|
|
284
|
+
list, API clients, the current entity id). Thread it opaquely:
|
|
285
|
+
|
|
286
|
+
```tsx
|
|
287
|
+
<Workflow nodeTypes={NODE_TYPES} hostBridge={{ chatbotId, llmModels }} />
|
|
288
|
+
```
|
|
289
|
+
|
|
290
|
+
`hostBridge` is `unknown` by design. Inside `renderDrawer` (and
|
|
291
|
+
`hostDefaults`/`localizeDefaults`) you narrow it to your shape — the core never
|
|
292
|
+
depends on it.
|
|
293
|
+
|
|
294
|
+
---
|
|
295
|
+
|
|
296
|
+
## Theming, layout & read-only
|
|
297
|
+
|
|
298
|
+
- **Theme:** render inside `LogicianProvider`. Node-tile colors come from the six
|
|
299
|
+
categories; override the mapping with `categoryTokens` if needed.
|
|
300
|
+
- **Palette:** `showPalette` (default `true`) toggles the drag-to-add palette.
|
|
301
|
+
- **Footer:** `footer` is a slot below the canvas (toolbars, run controls).
|
|
302
|
+
- **Children:** rendered inside the canvas frame (like React Flow's
|
|
303
|
+
`<Controls>`/`<MiniMap>`/`<Panel>`) and inside the Workflow context, so they can
|
|
304
|
+
call `useWorkflow()`. This is where `<NodeInspector>` goes.
|
|
305
|
+
- **Sizing:** `minHeight` (default `'500px'`); lower it for an embedded preview.
|
|
306
|
+
- **Read-only:** `readOnly` hides the palette, disables connect/drag/delete, and
|
|
307
|
+
turns a mounted `<NodeInspector>` into a legible, non-editing view.
|
|
308
|
+
|
|
309
|
+
```tsx
|
|
310
|
+
// Static, read-only thumbnail.
|
|
311
|
+
<Workflow nodeTypes={NODE_TYPES} graph={graph} readOnly showPalette={false} minHeight={0} />
|
|
312
|
+
```
|
|
313
|
+
|
|
314
|
+
Advanced: `useWorkflow()` (inside the tree) exposes the graph, `dispatch`,
|
|
315
|
+
selection, `undo`/`redo`, and issue maps if you build custom canvas-anchored
|
|
316
|
+
surfaces.
|
|
317
|
+
|
|
318
|
+
---
|
|
319
|
+
|
|
320
|
+
## Props reference
|
|
321
|
+
|
|
322
|
+
| Prop | Type | Notes |
|
|
323
|
+
| --- | --- | --- |
|
|
324
|
+
| `nodeTypes` | `NodeTypeDef[]` | **Required.** Your registered kinds. |
|
|
325
|
+
| `graph` | `Graph` | Controlled graph (pair with `onGraphChange`). |
|
|
326
|
+
| `onGraphChange` | `(g: Graph) => void` | Fired on every edit. |
|
|
327
|
+
| `defaultGraph` | `Graph` | Uncontrolled initial graph. |
|
|
328
|
+
| `translate` | `(key, vars?) => ReactNode` | Chrome + `descriptionKey` translator. |
|
|
329
|
+
| `issues` | `Issue[]` | Render-only validation (pass a stable ref). |
|
|
330
|
+
| `validating` | `boolean` | Show "rechecking" while issues are stale/in-flight. |
|
|
331
|
+
| `readOnly` | `boolean` | Disable editing; palette hidden. |
|
|
332
|
+
| `showPalette` | `boolean` | Default `true`. |
|
|
333
|
+
| `onSelectionChange` | `(sel \| null) => void` | Selection changed (node/edge/deselect). |
|
|
334
|
+
| `onNodeClick` / `onEdgeClick` | `(node) / (edge) => void` | Raw click convenience. |
|
|
335
|
+
| `onArrange` | `(g: Graph) => void` | After one-click auto-arrange. |
|
|
336
|
+
| `onHistoryNavigate` | `(g: Graph) => void` | After undo/redo. |
|
|
337
|
+
| `children` | `ReactNode` | Canvas overlay slot (mount `<NodeInspector>` here). |
|
|
338
|
+
| `footer` | `ReactNode` | Slot below the canvas. |
|
|
339
|
+
| `categoryTokens` | `CategoryTokenMap` | Override category → color tokens. |
|
|
340
|
+
| `hostBridge` | `unknown` | Opaque host data for inspectors. |
|
|
341
|
+
| `minHeight` | `string \| number` | Default `'500px'`. |
|
|
342
|
+
| `onIssuesChange` | `(issues) => void` | Notified when the issues ref changes. |
|
|
343
|
+
|
|
344
|
+
`<NodeInspector>`: `dock?: 'left' | 'right'`, `renderEdgeDrawer?: ComponentType<EdgeDrawerRenderProps>`.
|
|
345
|
+
|
|
346
|
+
---
|
|
347
|
+
|
|
348
|
+
## Gotchas
|
|
349
|
+
|
|
350
|
+
- **No node types ship.** Without `nodeTypes` the editor is an empty shell. That's
|
|
351
|
+
by design — register your domain.
|
|
352
|
+
- **No validation engine.** `issues` is render-only; compute them yourself.
|
|
353
|
+
- **i18n default is Korean.** Pass `translate` for non-Korean apps (see above).
|
|
354
|
+
- **Wrap in `LogicianProvider`.** Colors resolve from design tokens; React Flow's
|
|
355
|
+
CSS is bundled, but your bundler must allow the package's transitive CSS import
|
|
356
|
+
(fine in Next.js).
|
|
357
|
+
- **Controlled graph needs `onGraphChange`.** Otherwise edits can't flow back.
|
|
358
|
+
- **Pass a stable `issues` reference** (e.g. `useMemo`) — a fresh array every
|
|
359
|
+
render makes `onIssuesChange` fire every render.
|
|
360
|
+
- **`<NodeInspector>` must be a child of `<Workflow>`** (it reads the Workflow
|
|
361
|
+
context). It won't work rendered outside the tree — use `onSelectionChange` to
|
|
362
|
+
drive UI that lives elsewhere.
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
{
|
|
2
|
+
"workflow_drawer_empty_settings": {
|
|
3
|
+
"ko": "이 노드는 편집할 수 있는 설정이 없습니다.",
|
|
4
|
+
"en": "This node has no editable settings.",
|
|
5
|
+
"ja": "このノードには編集できる設定がありません。"
|
|
6
|
+
},
|
|
7
|
+
"workflow_drawer_graph_group_title": {
|
|
8
|
+
"ko": "그래프",
|
|
9
|
+
"en": "Graph",
|
|
10
|
+
"ja": "グラフ"
|
|
11
|
+
},
|
|
12
|
+
"workflow_drawer_issues_error_title": {
|
|
13
|
+
"ko": "수정이 필요해요",
|
|
14
|
+
"en": "Fixes needed",
|
|
15
|
+
"ja": "修正が必要です"
|
|
16
|
+
},
|
|
17
|
+
"workflow_drawer_issues_warning_title": {
|
|
18
|
+
"ko": "확인해 주세요",
|
|
19
|
+
"en": "Worth checking",
|
|
20
|
+
"ja": "確認してください"
|
|
21
|
+
},
|
|
22
|
+
"workflow_edge_connection": {
|
|
23
|
+
"ko": "{source} → {target}",
|
|
24
|
+
"en": "{source} → {target}",
|
|
25
|
+
"ja": "{source} → {target}"
|
|
26
|
+
},
|
|
27
|
+
"workflow_edge_delete": {
|
|
28
|
+
"ko": "연결 삭제",
|
|
29
|
+
"en": "Delete connection",
|
|
30
|
+
"ja": "接続を削除"
|
|
31
|
+
},
|
|
32
|
+
"workflow_edge_endpoints_heading": {
|
|
33
|
+
"ko": "연결 지점",
|
|
34
|
+
"en": "Endpoints",
|
|
35
|
+
"ja": "接続ポイント"
|
|
36
|
+
},
|
|
37
|
+
"workflow_edge_label_label": {
|
|
38
|
+
"ko": "라벨",
|
|
39
|
+
"en": "Label",
|
|
40
|
+
"ja": "ラベル"
|
|
41
|
+
},
|
|
42
|
+
"workflow_edge_label_placeholder": {
|
|
43
|
+
"ko": "연결 라벨 (선택)",
|
|
44
|
+
"en": "Connection label (optional)",
|
|
45
|
+
"ja": "接続ラベル(任意)"
|
|
46
|
+
},
|
|
47
|
+
"workflow_edge_source_label": {
|
|
48
|
+
"ko": "출발",
|
|
49
|
+
"en": "Source",
|
|
50
|
+
"ja": "送信元"
|
|
51
|
+
},
|
|
52
|
+
"workflow_edge_target_label": {
|
|
53
|
+
"ko": "도착",
|
|
54
|
+
"en": "Target",
|
|
55
|
+
"ja": "送信先"
|
|
56
|
+
},
|
|
57
|
+
"workflow_issues_errors_label": {
|
|
58
|
+
"ko": "오류",
|
|
59
|
+
"en": "Errors",
|
|
60
|
+
"ja": "エラー"
|
|
61
|
+
},
|
|
62
|
+
"workflow_issues_summary_errors": {
|
|
63
|
+
"ko": "오류 {count}개",
|
|
64
|
+
"en": "{count} error(s)",
|
|
65
|
+
"ja": "エラー {count}件"
|
|
66
|
+
},
|
|
67
|
+
"workflow_issues_summary_warnings": {
|
|
68
|
+
"ko": "경고 {count}개",
|
|
69
|
+
"en": "{count} warning(s)",
|
|
70
|
+
"ja": "警告 {count}件"
|
|
71
|
+
},
|
|
72
|
+
"workflow_issues_validating": {
|
|
73
|
+
"ko": "변경 사항 검증 중…",
|
|
74
|
+
"en": "Validating changes…",
|
|
75
|
+
"ja": "変更内容を検証中…"
|
|
76
|
+
},
|
|
77
|
+
"workflow_issues_warnings_label": {
|
|
78
|
+
"ko": "경고",
|
|
79
|
+
"en": "Warnings",
|
|
80
|
+
"ja": "警告"
|
|
81
|
+
},
|
|
82
|
+
"workflow_node_close": {
|
|
83
|
+
"ko": "노드 설정 닫기",
|
|
84
|
+
"en": "Close node settings",
|
|
85
|
+
"ja": "ノード設定を閉じる"
|
|
86
|
+
},
|
|
87
|
+
"workflow_node_delete": {
|
|
88
|
+
"ko": "노드 삭제",
|
|
89
|
+
"en": "Delete node",
|
|
90
|
+
"ja": "ノードを削除"
|
|
91
|
+
},
|
|
92
|
+
"workflow_node_duplicate": {
|
|
93
|
+
"ko": "노드 복제",
|
|
94
|
+
"en": "Duplicate node",
|
|
95
|
+
"ja": "ノードを複製"
|
|
96
|
+
},
|
|
97
|
+
"workflow_node_overflow_label": {
|
|
98
|
+
"ko": "더보기",
|
|
99
|
+
"en": "More actions",
|
|
100
|
+
"ja": "その他の操作"
|
|
101
|
+
},
|
|
102
|
+
"workflow_palette_close": {
|
|
103
|
+
"ko": "노드 추가 닫기",
|
|
104
|
+
"en": "Close node panel",
|
|
105
|
+
"ja": "ノードパネルを閉じる"
|
|
106
|
+
},
|
|
107
|
+
"workflow_palette_title": {
|
|
108
|
+
"ko": "노드 추가",
|
|
109
|
+
"en": "Create node",
|
|
110
|
+
"ja": "ノードを追加"
|
|
111
|
+
}
|
|
112
|
+
}
|