KQ-549 · WATERFALL/STEPS
Waterfall Steps
A cash bridge that builds itself. Every bar grows from the running total the last one ended on, in cascade() order on glide, with rises drawn in success, falls in danger and hairline connectors drawing between them on flick; the closing bar lands on recoil, two visible bounces for the arrival the chart was building toward. Columns are a list of buttons: hover or focus reads a step's delta and running total, Left and Right walk them, Home and End jump to the totals.
KQ-549 · WATERFALL/STEPS
Coldbrook cash bridge$45,200
- Opening, $42,000
- Receipts, up $18,400, running total $60,400
- Payroll, down $9,600, running total $50,800
- Grants, up $6,200, running total $57,000
- Fit-out, down $11,800, running total $45,200
- Closing, $45,200
Hover or arrow-key a column
Install
One command — the source lands in your repo. Or copy it from the Code tab.
$ pnpm dlx shadcn@latest add @kinetiq/waterfall-steps
Props
- steps
- WaterfallStep[]
- default —
- Ordered changes between the opening and closing totals; a negative delta falls.
- start
- number
- default —
- Opening value the first step builds on.
- format
- (value: number) => string
- default rounded en-US
- Formats every number: the rolling readout, the caption total and the aria text.
- height
- number
- default 200
- Plot height in px. The width is fluid and measured, so the columns fit any container.
- label
- string
- default —
- Chart name; also the caption above the plot, opposite the closing total.
- startLabel / totalLabel
- string
- default Opening / Closing
- Column names for the two total bars.
- onActiveChange
- (index: number | null) => void
- default —
- Fires with the column index under the pointer or focus, or null when it clears.
| Prop | Type | Default | Description |
|---|---|---|---|
| steps | WaterfallStep[] | — | Ordered changes between the opening and closing totals; a negative delta falls. |
| start | number | — | Opening value the first step builds on. |
| format | (value: number) => string | rounded en-US | Formats every number: the rolling readout, the caption total and the aria text. |
| height | number | 200 | Plot height in px. The width is fluid and measured, so the columns fit any container. |
| label | string | — | Chart name; also the caption above the plot, opposite the closing total. |
| startLabel / totalLabel | string | Opening / Closing | Column names for the two total bars. |
| onActiveChange | (index: number | null) => void | — | Fires with the column index under the pointer or focus, or null when it clears. |