Avara UI

Flowchart / Node Builder

A declarative, highly sleek flowchart engine complete with custom responsive column channels, node action anchors, and custom vector streaming lines that draw themselves in with plain CSS animation.
This engine separates data flow layout orchestration from canvas tracking. By combining declarative standard layout structures with pre-set micro connection vectors, pipelines render cross-device flawlessly without heavy calculations crashing client frame updates.
Click any node that sits on a route to make that route the active one — the moving stream switches to that SVG path.

Flowchart

FlowCanvas holds the SVG routes; FlowNodes are positioned over it.

connectedPaths
on a FlowNode lists the route ids it sits on. Clicking activates the first; a node on two routes becomes a branch point.
path
on FlowConnection is raw SVG path data — M/L for right angles, C for curves. Several segments may share one id.

Installation

New project? Follow the installation guide to set up Tailwind CSS, shadcn, the cn helper and lucide-react, register the @algorize-ui registry once, then copy your styles from the Themes page.

Install Flowchart

npx shadcn@latest add @algorize-ui/flowchart

components/custom/blocks/FlowchartBlock.tsx is written into your project. Copy any snippet from a Usage tab above and it runs.

Install dependencies

Nothing beyond the shared setup — Flowchart needs only the cn helper and lucide-react, which the installation guide already put in place.

Examples

Linear pipeline

initialActivePath"main-route"
streams that route on mount — the minimum composition is one route threaded through three nodes.

No active route

SetinitialActivePath{null}
to start every route idle and let the reader activate a branch by clicking a node.

Accent color

color"emerald"
tints the active stream, the node ports and the focus ring together. One of blue, indigo, rose, emerald, zinc.

Best Practices & Guidelines

Keep ports and paths in sync

Node positions come from Tailwind left-[…] / top-[…] classes and the routes are raw SVG coordinates, so the two are only aligned because you made them align. When you move a node, move the matching M/L coordinates with it.

Split long routes into segments

Several FlowConnections can share the same id. Splitting a branch into per-hop segments lets the stream animation restart at each node instead of sweeping the whole diagram at once.

Props Reference

ComponentPropTypeDefaultDescription
FlowchartinitialActivePathstring | nullnullThe route id that streams on mount. null starts every route idle.
Flowchartcolor"primary" | "blue" | "indigo" | "rose" | "emerald" | "zinc""primary"Accent applied to the active stream, node ports and focus rings.
Flowchartlayout"fixed" | "fluid""fixed"fixed is the 900×400 blueprint canvas. fluid is only the context and a positioned box, for connectors drawn over ordinary layout — give FlowCanvas its own viewBox. This is how Data Flow draws its curves.
FlowNodeidstringRequiredUnique identifier for the node.
FlowNodetitlestringRequiredPrimary label on the node card.
FlowNodedescriptionstringundefinedSecondary line under the title.
FlowNodeiconReact.ComponentTypeundefinedIcon rendered in the node's leading slot — any lucide icon works.
FlowNodeconnectedPathsstring[][]Route ids this node sits on. Clicking the node activates the first of them; a node on two routes acts as a branch point.
FlowConnectionidstringRequiredRoute this segment belongs to. Multiple segments may share one id.
FlowConnectionpathstringRequiredSVG path data — M/L for right angles, C for curves.
FlowConnectiondashedboolean | stringfalseDraw the resting line dashed — true for "4 6", or your own pattern. Applied once the draw-in finishes.
FlowConnectionflowDashstring"6 10"Dash pattern of the moving stream while the route is active. The loop length is one dash plus one gap, so any pattern cycles cleanly.
FlowConnectionglowbooleantrueThe soft blurred halo under the active stream.
FlowConnectiondrawDurationnumber1.2Seconds the draw-in takes on mount. The stream only starts once the line is drawn; under prefers-reduced-motion both are skipped.