funnel-chart — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited funnel-chart (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Funnel visualization for conversion/pipeline data. Segments taper from wide to narrow based on value. Supports default and layered variants with configurable interpolation, gradients, axis labels, and tooltips.
import {
FunnelChart,
FunnelSeries,
FunnelArc,
FunnelAxis,
FunnelAxisLabel,
FunnelAxisLine
} from 'reaviz';| Prop | Type | Default | Description |
|---|---|---|---|
data | ChartShallowDataShape[] | [] | Chart data |
width | number | auto | Width in pixels |
height | number | auto | Height in pixels |
margins | Margins | 0 | Chart margins |
series | ReactElement<FunnelSeriesProps> | <FunnelSeries /> | Series component |
className | string | — | SVG CSS class |
containerClassName | string | — | Container div CSS class |
| Prop | Type | Default | Description |
|---|---|---|---|
arc | ReactElement<FunnelArcProps> | <FunnelArc /> | Arc/segment element |
axis | ReactElement<FunnelAxisProps> | <FunnelAxis /> | Axis component |
onSegmentClick | (event: ClickEvent) => void | — | Segment click handler |
| Prop | Type | Default | Description | ||
|---|---|---|---|---|---|
variant | `'default' \ | 'layered'` | 'default' | Funnel style | |
interpolation | `'linear' \ | 'smooth' \ | 'step'` | 'smooth' | Curve interpolation |
colorScheme | ColorSchemeType | schemes.cybertron[0] | Color scheme (single color by default) | ||
opacity | number | 1 | Arc opacity | ||
gradient | `ReactElement<GradientProps> \ | null` | horizontal gradient | Gradient fill (null to disable) | |
glow | Glow | — | Glow effect | ||
tooltip | ReactElement<TooltipAreaProps> | null | Tooltip component |
| Prop | Type | Default | Description | |
|---|---|---|---|---|
line | `ReactElement<FunnelAxisLineProps> \ | null` | <FunnelAxisLine /> | Axis separator lines |
label | `ReactElement<FunnelAxisLabelProps> \ | null` | <FunnelAxisLabel /> | Axis labels |
| Prop | Type | Default | Description | ||
|---|---|---|---|---|---|
position | `'top' \ | 'middle' \ | 'bottom'` | 'middle' | Label placement |
showValue | boolean | true | Show data value alongside label | ||
labelVisibility | `'auto' \ | 'always'` | 'auto' | Auto-hide when space is tight | |
fill | string | '#fff' | Text color | ||
fontSize | number | 13 | Font size | ||
fontFamily | string | 'sans-serif' | Font family | ||
padding | number | 10 | Label padding | ||
className | string | — | CSS class |
| Prop | Type | Default | Description |
|---|---|---|---|
strokeColor | string | '#333' | Line color |
strokeWidth | number | 2 | Line thickness |
const data = [
{ key: 'Visited Site', data: 1000 },
{ key: 'Added to Cart', data: 900 },
{ key: 'Initiated Checkout', data: 600 },
{ key: 'Purchased', data: 400 },
];
<FunnelChart
height={300}
width={500}
data={data}
/><FunnelChart
height={400}
width={800}
data={data}
series={
<FunnelSeries
arc={
<FunnelArc
variant="layered"
colorScheme={['#013027', '#047662', '#06B899']}
gradient={null}
/>
}
/>
}
/>import { TooltipArea } from 'reaviz';
<FunnelChart
data={data}
series={
<FunnelSeries
arc={<FunnelArc tooltip={<TooltipArea />} />}
onSegmentClick={(e) => console.log(e.value)}
/>
}
/><FunnelChart
data={data}
series={
<FunnelSeries
arc={<FunnelArc interpolation="step" />}
/>
}
/>// Labels at bottom
<FunnelChart
data={data}
series={
<FunnelSeries
axis={<FunnelAxis label={<FunnelAxisLabel position="bottom" />} />}
/>
}
/>
// Hide values, show only labels
<FunnelChart
data={data}
series={
<FunnelSeries
axis={<FunnelAxis label={<FunnelAxisLabel showValue={false} />} />}
/>
}
/>
// No axis at all
<FunnelChart
data={data}
series={
<FunnelSeries
axis={<FunnelAxis label={null} line={null} />}
/>
}
/><FunnelChart
data={data}
series={
<FunnelSeries
arc={<FunnelArc gradient={null} colorScheme="cybertron" />}
/>
}
/>variant="layered" renders segments as overlapping layers instead of connected shapeslabelVisibility="auto" hides labels that don't fit within their segment~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.