Funnel
Stages as one stream that narrows from step to step.
$149 once · every Pro piece
Each stage is a solid core inside lighter halo rings, and the share that fell away between two stages is left behind as a hatched ghost of the previous width: hatch means lost. Conversion pills sit on faint dividers that fade at both ends. On mount the stages land one after another on springs, cores first and halos a beat later. Point at a stage, or Tab in and use the arrow keys: it runs hot, the rest step back, a panel gives the count, share of entry and drop, and the readout rolls from overall conversion to that stage. Horizontal or vertical, curved or straight edges, zero to two halos.
Install
npx shadcn@latest add @obsyde/funnelNeeds your licence key · Get Pro
Usage
Import it from where the CLI puts it, or copy the files below by hand.
import { Funnel } from '@/components/obsyde/ember/funnel/Funnel';
export function Example() {
return (
<Funnel
orientation="horizontal"
halos={2}
edges="curved"
pattern="diagonal-up"
/>
);
}
Files
What you get with Pro: plain React, TypeScript and CSS, with no dependencies.
ember/funnel/Funnel.tsxcomponentember/funnel/funnel.cssstylesember/funnel/FunnelDemo.tsxdemoember/viz-kit/viz-kit.csssharedember/viz-kit/Tooltip.tsxsharedember/viz-kit/focus.tssharedember/viz-kit/patterns.tsxsharedember/viz-kit/roll.tssharedember/shared/rolling-number.csssharedember/shared/spring.tssharedember/shared/accent.tssharedember/viz-kit/scale.tssharedember/viz-kit/motion.tssharedember/viz-kit/chart.tsxsharedember/shared/ember.csssharedember/viz-kit/touch.tssharedember/viz-kit/keyboard.tssharedember/viz-kit/size.tssharedember/viz-kit/state-messages.tsxsharedember/viz-kit/stage.tsxsharedember/viz-kit/stage.csssharedember/viz-kit/demo.tsxsharedember/viz-kit/demo.cssshared
API
| Prop | Type | Default |
|---|---|---|
accentAccent | 'ember' | 'volt' | 'arc' | 'ember' |
orientationOrientation | 'horizontal' | 'vertical' | 'horizontal' |
stagesStages | number | 5 |
halosHalos | number | 2 |
edgesEdges | 'curved' | 'straight' | 'curved' |
patternPattern | 'none' | 'diagonal-up' | 'diagonal-down' | 'dots' | 'vertical' | 'crosshatch' | 'diagonal-up' |
conversionConversion pills | boolean | true |
tooltipTooltip | 'panel' | 'none' | 'panel' |
statusStatus | 'ready' | 'loading' | 'empty' | 'ready' |
heightHeight | number | 260 |
seedSeed | number | 2 |