Signal Funnel
ComponentsDiagramsSignal Funnel
DiagramsNew

Signal Funnel

An animated particle stream with switchable processing stages.

USE IT FOREvent pipelinesData processing diagramsProduct feature sections
React + CSS
Explore the full-width experienceOpen preview

Signal pipeline

Incoming events
Processed events
3 / 3 stages enabledToggle a stage to change the flow
3 of 3 stages enabled. Redact: enabled. Validate: enabled. Encrypt: enabled. Illustrative event flow.
Live component. Go ahead, interact.
01

Installation

Run this in your shadcn-configured React project. The component and stylesheet are added together.

TERMINAL
npx shadcn@latest add http://localhost:5173/r/signal-funnel.json

This command uses the current site address. For localhost, keep this preview running on the same computer. Files follow your configured components alias.

02

Usage

Import the component and make the details your own.

TypeScript
import { SignalFunnel } from '@/components/anticraft/SignalFunnel';

export function Example() {
  return <SignalFunnel
    gates={[
      { id: 'redact', label: 'Redact' },
      { id: 'validate', label: 'Validate' },
      { id: 'encrypt', label: 'Encrypt' },
    ]}
    inputLabel="Incoming events"
    outputLabel="Processed events"
  />;
}
03

Props

PropTypeDefaultDescription
gatesreadonly SignalFunnelGate[]Redact, Validate, EncryptUp to five stages with unique nonempty ids and labels. Duplicate or empty ids are ignored. An empty array removes the stage switches.
enabledGateIdsreadonly string[]undefinedControlled selection. Omit for internal state. Unknown ids are ignored.
defaultEnabledGateIdsreadonly string[]All initial stagesInitial internal selection. Stages added after mount start bypassed.
onGatesChange(enabledIds: string[]) => voidundefinedCalled after a stage button is activated. The array follows stage order. Supply from a Client Component in Next.js.
inputLabel / outputLabelstring'Incoming events' / 'Processed events'Short labels at the entrance and exit of the particle stream.
accentstring'#7950f2'CSS color for canvas particles and controls. Customize --ac-signal-ink, --ac-signal-muted, --ac-signal-line and --ac-signal-surface through className.
pausedbooleanfalseExternally stops animation and disables the built-in play control. Visitors can also pause through the built-in control when false.
classNamestring''Additional section classes. The diagram changes to a vertical flow below a 600px container width.
04

Motion & accessibility

Considered by default.

Particles flow through a narrowing field at up to 30 frames per second. Stage buttons narrow or bypass portions of the stream and announce the selection. The pause control freezes the current frame. Reduced motion shows a static frame; hidden documents and offscreen diagrams suspend the animation. This is an illustrative diagram and does not process, redact or encrypt data.

Use semantic content and meaningful labels in your composition. Check contrast and keyboard behavior with your own styles and content.

05

Inspiration

Inspired by its moving particle funnels and thin processing gates. Original canvas rendering and stage controls.

Visit RouterPlus

The linked site is the design or content reference. See the repository for demo artwork credits.