Pipe
The job, in order
Proposal
Scope, timeline, and fee on one page.
Builds an ordered pipeline from draggable steps. 1px dashed frame, chips, and ghost add action.
Scope, timeline, and fee on one page.
The job, in order
Scope, timeline, and fee on one page.
Three ways in. They share one source, so the pixels match whichever you pick.
npm install @noorddev/vlak-react
// once, next to your app's root
import "@noorddev/vlak-react/css";
import { Flow, FlowAdd, FlowBody, FlowNum, FlowStep, FlowSub, FlowSubAdd, FlowSubs, FlowTitle } from "@noorddev/vlak-react";Precompiled React and one stylesheet. No compiler to configure. Per-component imports work too: @noorddev/vlak-react/components/workflow.
npx @noorddev/vlak-cli add workflow
The StyleX leaf lands in components/vlak/, for your own compiler to own. See StyleX.
npx shadcn add https://vlak.dev/r/workflow.json
The same registry item, installed by shadcn's CLI.
<link rel="stylesheet" href="node_modules/@noorddev/vlak/css/vlak.css" />
No React. Link vlak.css and use the markup and classes below.
import { Flow, FlowAdd, FlowBody, FlowNum, FlowStep, FlowSub, FlowSubAdd, FlowSubs, FlowTitle } from "@noorddev/vlak-react";
<Flow>
<FlowStep>
<FlowNum>1</FlowNum>
<FlowTitle>Proposal</FlowTitle>
<FlowBody>Scope, timeline, and fee on one page.</FlowBody>
<FlowSubs>
<FlowSub>Brief</FlowSub>
<FlowSub>Fee</FlowSub>
<FlowSubAdd>+</FlowSubAdd>
</FlowSubs>
</FlowStep>
<FlowAdd onClick={addStep}>Add a step</FlowAdd>
</Flow>Dashed 1px pipeline.
Also accepts HTMLAttributes<HTMLDivElement>.
Also accepts ButtonHTMLAttributes<HTMLButtonElement>.
Also accepts HTMLAttributes<HTMLParagraphElement>.
Also accepts HTMLAttributes<HTMLSpanElement>.
Also accepts HTMLAttributes<HTMLSpanElement>.
Also accepts HTMLAttributes<HTMLDivElement>.
Also accepts HTMLAttributes<HTMLSpanElement>.
Also accepts HTMLAttributes<HTMLSpanElement>.
Also accepts HTMLAttributes<HTMLDivElement>.
Also accepts HTMLAttributes<HTMLHeadingElement>.
| Keys | Does |
|---|---|
| Tab | Moves to the add-step button |
| Enter, Space | Activates it |
<div class="rs-flow" style="grid-template-columns:184px;width:184px"><div class="rs-flow-step"><span class="rs-flow-num">1</span><h4>Proposal</h4><p>Scope, timeline, and fee on one page.</p><div class="rs-flow-subs"><span>Brief</span><span>Fee</span><span class="rs-flow-sub-add">+</span></div></div><button type="button" class="rs-flow-add"><span class="rs-flow-plus">+</span> Add a step</button></div>