Where the numbers thin out, stage by stage

Ordered stages as side-by-side bars, each one's height its share of the first, each carrying a pill with the conversion percentage. Pure JSX and CSS computed from props: no recharts, no client JavaScript, so it renders from a Server Component and drops into any dashboard card.

Default

Four stages from visit to customer. The first stage always fills the height; every later bar reads as a fraction of it.

With legend tiles

The bars carry percentages, not names, so pair the funnel with a row of legend tiles that give each stage its label and formatted count in the same series order.

Leads12.4K
Qualified6.1K
Won2.3K

Steep drop-off

When a stage falls below the floor share, its bar holds at the minimum height so the pill stays readable, while the percentage keeps telling the truth. Tune the floor with minStageShare.