Funnel Chart Card

A horizontal flow funnel in the dashboard card shell. Every stage is a column sized to its share of the top of the funnel that tapers into the next, with a centred percentage pill and a value/name footer; hovering a stage lifts it out by dimming the rest and swaps the headline. Recharts' funnel is a vertical trapezoid stack, so this one is hand-drawn from the same tokens. For the list version see the Stage Bars Card.

Sign-up funnel

197

+5.2%
Link opened
197
Started
110
Completed
77
Converted
38

Installation

Funnel Chart Card is part of BoardUI Pro.

Dark mode ready - this component follows BoardUI semantic tokens automatically. Set up theme switching.

Pro access

Funnel Chart Card is a Pro component.

Your BoardUI Pro license unlocks this component and all of its source files. Activate your license once, then install it directly into your project with the CLI.

01

Activate your license

Use the key from your Lemon Squeezy purchase email. You only need to do this once per machine.

npx boardui@latest login YOUR_LICENSE_KEY
02

Install the component

The CLI copies the source and resolves every BoardUI and npm dependency for you.

npx boardui@latest add funnel-chart-card

This component is included in BoardUI Pro

Get BoardUI Pro now and install it right away.

Shapes and mono

shape="sharp" swaps the eased taper and layered edges for plain trapezoids, and mono paints every stage in the text colour - black on light, white on dark - for a single-ink card. They combine.

Hiring

1,240

Applied
1,240
Screened
420
Phone
96
Offer
18
Hired
11

Checkout

41,800

-1.8%
Viewed
41,800
Basket
18,400
Checkout
9,400
Payment
6,200
Paid
5,200

Hiring

1,240

Applied
1,240
Screened
420
Phone
96
Offer
18
Hired
11
{/* Straight-edged trapezoids, no edge layers */}<FunnelChartCard shape="sharp" title="Hiring" ranges={HIRING_RANGES} /> {/* Single ink: mid grey on light, near-white on dark */}<FunnelChartCard mono title="Checkout" ranges={CHECKOUT_RANGES} /> {/* Both */}<FunnelChartCard mono shape="sharp" title="Hiring" ranges={HIRING_RANGES} />

Data

stages is a flat { label, value, color? } list, top of the funnel first. Add a stage and it gets a column - widths, necks, percentages, and the footer are all derived. Colours cycle the chart palette unless overridden. The period pill is a dropdown when you pass ranges - each range carries its own data (and optionally delta / headline) and the chart re-animates on selection; onRangeChange lets you fetch instead. With no data props the card ships three demo ranges, which is what the previews above use.

Checkout funnel

41,800

-1.8%
Viewed
41,800
Basket
18,400
Checkout
9,400
Payment
6,200
Paid
5,200
// One entry per stage, top of the funnel first.const stages = [ { label: "Link opened", value: 197 }, { label: "Started", value: 110 }, { label: "Completed", value: 77 }, { label: "Converted", value: 38, color: "var(--color-chart-3)" }, // override any colour]; <FunnelChartCard title="Sign-up funnel" stages={stages} headline={197} // optional resting headline (defaults to the first stage) delta={0.052} // "+5.2%" chip range="Last 30 days" // static pill…/> // …or a working period dropdown: each range overrides stages / delta / headline.<FunnelChartCard title="Checkout funnel" ranges={[ { id: "7d", label: "Last 7 days", stages: week, delta: -0.018 }, { id: "30d", label: "Last 30 days", stages: month, delta: 0.042 }, { id: "90d", label: "Last 90 days", stages: quarter, delta: 0.097 }, ]}/>