Fine threads of light spiraling up a turning vortex
| Name | Type | Default | Description |
|---|---|---|---|
colors | [string, string] | ["#8B5CF6", "#FF9FFC"] | Colour at the base of the vortex and colour at its crown, blended in OKLab along the height. |
backgroundColor | string | "#0A0A0A" | Colour behind the vortex. |
mode | "auto" | "glow" | "ink" | "auto" | glow adds light for dark backgrounds, ink draws fine coloured strands for light ones. auto picks from the background brightness. |
strands | number | 56 | Number of streamlines. Each one spirals in across the ground, wraps the base and rises up the funnel, from 8 to 400. |
lineWidth | number | 1 | Width of the strands nearest the viewer, in pixels. |
sheath | number | 0.25 | Soft glow around each strand. 0 draws bare hairlines. |
dust | number | 1000 | Number of dust specks drifting along the flow, from 0 to 8000. |
dustSize | number | 1.2 | Size of the dust specks. |
waist | number | 0.14 | Radius of the funnel at its narrowest point, as a fraction of its height. |
flare | number | 0.8 | How wide the funnel opens toward the top. |
spread | number | 1.3 | Radius of the swirl across the ground, as a fraction of the funnel height. |
swirl | number | 1 | How many times the flow circles on its way in across the ground. |
twist | number | 1 | How tightly the strands wind as they rise. Higher values give a tighter lattice. |
scale | number | 1 | Size of the vortex relative to the frame. |
centerX | number | 0.5 | Horizontal position of the vortex, from 0 (left) to 1 (right). |
baseY | number | 0.78 | Vertical position of the base, from 0 (top) to 1 (bottom). |
tilt | number | 3 | Camera angle above the ground, in degrees. Higher values show more of the swirl. |
spin | number | 0.12 | Speed at which the whole vortex turns. Negative values turn it the other way. |
flowSpeed | number | 1 | Speed at which light and dust travel along the flow. |
pulses | number | 1 | Strength of the pulses of light carried in from the edge of the swirl, from 0 (a steady glow) to 2. |
pulseRate | number | 0.35 | Number of pulses released per second. |
stagger | number | 0.5 | How far pulses are offset from strand to strand. 0 sends them in as clean rings. |
depth | number | 0.6 | How much strands on the far side of the funnel dim and thin, from 0 (flat) to 1. |
defocus | number | 0.6 | Depth of field: strands on the far side soften out of focus, from 0 to 2. |
glow | number | 0.3 | Bloom around the strands and the bright rim at the base, from 0 to 3. |
intensity | number | 1 | Overall exposure. |
speed | number | 1 | Overall animation speed. |
interactive | boolean | true | Respond to the pointer. |
hoverSwell | boolean | true | The funnel swells gently at the pointer's height and follows it softly up and down, while the dust nearby drifts outward and settles back when the pointer leaves. |
clickSwell | boolean | true | Clicking sends a slow swell rising up the funnel, drawing the dust out with it. |
swellStrength | number | 1 | How far the funnel swells and the dust drifts, for both hover and click, from 0 to 3. |
hoverBoost | number | 0.5 | How much the flow quickens and brightens while the pointer is over the component, from 0 to 2. |
paused | boolean | false | Freeze the motion. Reduced-motion users always get a still frame. |
quality | number | 1 | Resolution scale from 0.25 to 1. Lower values are cheaper on large screens. |
ref | { swell } | — | swell() sends a swell up the funnel from code, for example when a form is submitted. |
children | ReactNode | — | Content placed over the background. |
className | string | — | Classes for the root element. It fills its parent, with a 240px minimum height. |
style | CSSProperties | — | Inline styles for the root element. |
colors[string, string]Colour at the base of the vortex and colour at its crown, blended in OKLab along the height.
["#8B5CF6", "#FF9FFC"]backgroundColorstringColour behind the vortex.
"#0A0A0A"mode"auto" | "glow" | "ink"glow adds light for dark backgrounds, ink draws fine coloured strands for light ones. auto picks from the background brightness.
"auto"strandsnumberNumber of streamlines. Each one spirals in across the ground, wraps the base and rises up the funnel, from 8 to 400.
56lineWidthnumberWidth of the strands nearest the viewer, in pixels.
1sheathnumberSoft glow around each strand. 0 draws bare hairlines.
0.25dustnumberNumber of dust specks drifting along the flow, from 0 to 8000.
1000dustSizenumberSize of the dust specks.
1.2waistnumberRadius of the funnel at its narrowest point, as a fraction of its height.
0.14flarenumberHow wide the funnel opens toward the top.
0.8spreadnumberRadius of the swirl across the ground, as a fraction of the funnel height.
1.3swirlnumberHow many times the flow circles on its way in across the ground.
1twistnumberHow tightly the strands wind as they rise. Higher values give a tighter lattice.
1scalenumberSize of the vortex relative to the frame.
1centerXnumberHorizontal position of the vortex, from 0 (left) to 1 (right).
0.5baseYnumberVertical position of the base, from 0 (top) to 1 (bottom).
0.78tiltnumberCamera angle above the ground, in degrees. Higher values show more of the swirl.
3spinnumberSpeed at which the whole vortex turns. Negative values turn it the other way.
0.12flowSpeednumberSpeed at which light and dust travel along the flow.
1pulsesnumberStrength of the pulses of light carried in from the edge of the swirl, from 0 (a steady glow) to 2.
1pulseRatenumberNumber of pulses released per second.
0.35staggernumberHow far pulses are offset from strand to strand. 0 sends them in as clean rings.
0.5depthnumberHow much strands on the far side of the funnel dim and thin, from 0 (flat) to 1.
0.6defocusnumberDepth of field: strands on the far side soften out of focus, from 0 to 2.
0.6glownumberBloom around the strands and the bright rim at the base, from 0 to 3.
0.3intensitynumberOverall exposure.
1speednumberOverall animation speed.
1interactivebooleanRespond to the pointer.
truehoverSwellbooleanThe funnel swells gently at the pointer's height and follows it softly up and down, while the dust nearby drifts outward and settles back when the pointer leaves.
trueclickSwellbooleanClicking sends a slow swell rising up the funnel, drawing the dust out with it.
trueswellStrengthnumberHow far the funnel swells and the dust drifts, for both hover and click, from 0 to 3.
1hoverBoostnumberHow much the flow quickens and brightens while the pointer is over the component, from 0 to 2.
0.5pausedbooleanFreeze the motion. Reduced-motion users always get a still frame.
falsequalitynumberResolution scale from 0.25 to 1. Lower values are cheaper on large screens.
1ref{ swell }swell() sends a swell up the funnel from code, for example when a form is submitted.
—childrenReactNodeContent placed over the background.
—classNamestringClasses for the root element. It fills its parent, with a 240px minimum height.
—styleCSSPropertiesInline styles for the root element.
—