Funnel Chart
Charts
Analytics
Visualize conversion flows, drop-offs, and multi-step processes with vertical, horizontal, and tapered funnel variants.
Preview
Vertical and tapered funnel variants
Task Completion Funnel
Last 30 days
8.5% Overall
Tasks Created
10,000100.0%
10,000
100.0% conversion
📅
Scheduled
6,50065.0%
6,500
65.0% conversion-35.0% drop-off
In Progress
2,80028.0%
43.1% conversion-56.9% drop-off
Under Review
1,20012.0%
42.9% conversion-57.1% drop-off
Completed
8508.5%
Project Progress Funnel
Project lifecycle stages
15.0% Overall
Ideation
1,000
100.0%
Planning
650
65.0%
In Progress
400
40.0%
Review
220
22.0%
Completed
150
15.0%
Horizontal Funnel
Compact left-to-right layout for conversion flows
User Onboarding Flow
Account creation to team collaboration
9.6% Overall
50,000
100%
24%
12,000
24%
71%
8,500
17%
73%
6,200
12%
77%
4,800
10%
Account Created
Profile Setup
First Project
First Task
Team Invited
Props
Component API reference
| Prop | Type | Default | Description |
|---|---|---|---|
title* | string | — | Card title |
subtitle | string | — | Card subtitle |
data* | Record<string, unknown>[] | — | Array of funnel stage data |
labelKey* | string | — | Key for stage label in data |
valueKey* | string | — | Key for stage value in data |
variant | 'vertical' | 'horizontal' | 'tapered' | 'vertical' | Funnel layout variant |
colors | string[] | — | Custom color array for stages |
showPercentages | boolean | true | Show conversion percentages |
className | string | — | Additional CSS classes |
Usage
Import and implementation examples
import { FunnelChartCard } from '@/blocks/charts/funnel-chart'
// Vertical funnel
const taskFunnel = [
{ stage: 'Tasks Created', count: 10000 },
{ stage: 'Scheduled', count: 6500 },
{ stage: 'In Progress', count: 2800 },
{ stage: 'Completed', count: 850 }
]
<FunnelChartCard
title="Task Completion Funnel"
subtitle="Last 30 days"
data={taskFunnel}
labelKey="stage"
valueKey="count"
variant="vertical"
/>
// Tapered funnel with custom colors
<FunnelChartCard
title="Project Progress"
data={projectData}
labelKey="name"
valueKey="value"
variant="tapered"
colors={['var(--color-indigo-600)', 'var(--color-violet-500)', 'var(--color-teal-500)']}
/>
// Horizontal funnel
<FunnelChartCard
title="User Onboarding"
data={onboardingData}
labelKey="step"
valueKey="users"
variant="horizontal"
/>Features
Built-in functionality
- 3 variants: Vertical, horizontal, and tapered funnel styles
- Conversion rates: Automatic calculation of drop-off percentages
- Custom icons: Support for icons and emojis per stage
- Custom colors: Configurable color palette for stages
- Card wrapper: Built-in card with title and subtitle
- Dark mode: Full dark mode support
Accessibility
Accessibility considerations
ARIA Attributes
Uses semantic list structureStage values announced to screen readersPercentage changes included in labelsKeyboard Navigation
| Key | Action |
|---|---|
| N/A | Funnel chart is not interactive by default |
Notes
- Color is supplemented with text values
- Conversion rates shown as percentages
- Consider providing data table for complex funnels