Skip to main content
CrystalFlow provides individual components that can be composed to build custom workflow UIs.

NodePalette

Sidebar component displaying available node types.
Props:
Array<typeof Node>
Array of node classes to display.
(nodeClass: typeof Node) => void
Callback when a node is selected/added.
boolean
default:"true"
Show search input to filter nodes.
boolean
default:"true"
Group nodes by category.
Example:

PropertyPanel

Sidebar component for editing node properties.
Props:
Node | null
Currently selected node to display properties for.
(nodeId: string, property: string, value: any) => void
Callback when a property value changes.
Example:

WorkflowCanvas

React Flow canvas component for rendering the workflow.
Props:
Workflow
Workflow to render.
(node: Node) => void
Callback when a node is clicked.
() => void
Callback when empty canvas area is clicked.
Example:

Toolbar

Toolbar component with common actions.
Props:
() => void
Execute button callback.
() => void
Save button callback.
(file: File) => void
Load button callback.
() => void
Clear button callback.
boolean
Whether workflow is currently executing.
Example:

CustomNode

Custom React Flow node renderer.
Props:
NodeData
Node data including metadata and values.
boolean
Whether node is selected.
This component is automatically used by WorkflowCanvas and typically doesn’t need to be used directly.

ExecutionProgress

Component showing workflow execution progress.
Work in Progress: This component is currently being implemented.

ErrorDisplay

Component for displaying execution errors.
Work in Progress: This component is currently being implemented.

Complete Custom UI Example

Build a custom workflow UI by composing components:

Styling Components

All components accept className and style props:

WorkflowBuilder

All-in-one component

Hooks

React hooks API

Workflow Builder Guide

Complete guide

Styling Guide

Customize appearance