Funnel

Vertical conversion funnel — each stage is a trapezoid narrowing toward the next, with optional conversion labels.

Category: chart · WCAG 2.1-AA · chart, funnel, conversion, flow, data-viz

Props

PropTypeDefaultDescription
dataFunnelStage[]Ordered stages (descending): { id, label, value, color? }.
titlestringChart title (also used as aria-label).
descriptionstringSubtitle below the title.
widthnumberFixed SVG width in px. ⚠ **Omit for a responsive chart** — the chart fills and tracks its container via a ResizeObserver; there is no correct pixel number in a responsive grid. A fixed width is clamped to the container (max-inline-size: 100%) so it can never overflow its card, but it also stops the chart growing. `useChartSize` is NOT needed for this — charts call it internally.
heightnumber320SVG height in px. Unlike `width`, height does NOT track the container — this is the knob you set to change the chart's aspect.
showConversionbooleanfalseAppend each stage’s % of the first stage to its label.
tooltipbooleanEnable hover tooltip.
classNamestringAdditional CSS class names merged onto the root element.
plainbooleanfalseMarks only — no labels. For micro/inline charts.

Design tokens

When to use

When not to use

Examples

Signup conversion funnel

import { Funnel } from '@cascivo/charts'

<Funnel
  title="Signup funnel"
  showConversion
  data={[
    { id: 'visit', label: 'Visited', value: 8200 },
    { id: 'signup', label: 'Signed up', value: 3100 },
    { id: 'active', label: 'Activated', value: 1400 },
    { id: 'paid', label: 'Paid', value: 520 },
  ]}
/>

Related components

← Back to docs