- Docs
- Components
- Backgrounds
- Halftone Vortex
A spiraling vortex of halftone dots
| Name | Type | Default | Description |
|---|---|---|---|
colors | [string, string] | ["#5227FF", "#FF9FFC"] | Ink colours from the eye to the rim, blended in OKLCh. |
color | string | "transparent" | Colour around the dots. Transparent shows the page. On light colours the ink turns deeper. |
speed | number | 0.4 | Spin speed of the vortex. |
zoom | number | 2.5 | Scale of the field. Higher values zoom out. |
dotDensity | number | 0.0002 | Density of the halftone grid. Higher values give smaller dots. |
gridScale | number | 150 | Second multiplier on the halftone grid. |
threshold | number | 0.5 | Ink cutoff. Higher values print more ink. |
spiralStrength | number | 0.2 | How strongly the arms twist. |
radialWave | number | 0.1 | Ripples travelling toward the eye. |
angularWave | number | 0.4 | Fine ripples around the arms. |
patternDepth | number | 0.75 | Depth of the main spiral arms. |
fieldOffset | number | -0.6 | Size of the vortex. Lower values make it larger. |
depth | number | 0.6 | Dots shrink and darken toward the eye. |
glow | number | 0.5 | Soft light around the brightest arms. |
softness | number | 0 | Softens the dot edges. |
monochrome | boolean | true | One ink. Off prints three offset colour plates. |
offsetX | number | 0 | Horizontal position of the eye, from -1 to 1. |
offsetY | number | 0 | Vertical position of the eye, from -1 to 1. |
opacity | number | 1 | Overall opacity. |
interactive | boolean | true | Click to send a pulse down the vortex. Pulses stack. Hover quickens the spin. |
hoverSpeed | number | 1.6 | Spin multiplier while the pointer is over the vortex. |
pulseStrength | number | 1 | How far a click pulse swells the dots. |
dampening | number | 0.301 | Smoothing time of the hover speed change, in seconds. |
intro | boolean | true | The vortex develops from the eye and spins up from still. |
paused | boolean | false | Stops the motion. Reduced motion users get a still frame. |
dpr | number | 2 | Maximum device pixel ratio for the canvas. |
width | string | number | "100%" | Width of the root element. |
height | string | number | "100%" | Height of the root element. |
ref | { pulse, replay } | - | pulse(x?, y?, strength?) sends a pulse from a point in 0 to 1 coordinates. replay() restarts the intro. |
children | ReactNode | - | Content rendered above the effect. |
className | string | - | Classes for the root element. |
style | CSSProperties | - | Inline styles for the root element. |
colors[string, string]Ink colours from the eye to the rim, blended in OKLCh.
["#5227FF", "#FF9FFC"]colorstringColour around the dots. Transparent shows the page. On light colours the ink turns deeper.
"transparent"speednumberSpin speed of the vortex.
0.4zoomnumberScale of the field. Higher values zoom out.
2.5dotDensitynumberDensity of the halftone grid. Higher values give smaller dots.
0.0002gridScalenumberSecond multiplier on the halftone grid.
150thresholdnumberInk cutoff. Higher values print more ink.
0.5spiralStrengthnumberHow strongly the arms twist.
0.2radialWavenumberRipples travelling toward the eye.
0.1angularWavenumberFine ripples around the arms.
0.4patternDepthnumberDepth of the main spiral arms.
0.75fieldOffsetnumberSize of the vortex. Lower values make it larger.
-0.6depthnumberDots shrink and darken toward the eye.
0.6glownumberSoft light around the brightest arms.
0.5softnessnumberSoftens the dot edges.
0monochromebooleanOne ink. Off prints three offset colour plates.
trueoffsetXnumberHorizontal position of the eye, from -1 to 1.
0offsetYnumberVertical position of the eye, from -1 to 1.
0opacitynumberOverall opacity.
1interactivebooleanClick to send a pulse down the vortex. Pulses stack. Hover quickens the spin.
truehoverSpeednumberSpin multiplier while the pointer is over the vortex.
1.6pulseStrengthnumberHow far a click pulse swells the dots.
1dampeningnumberSmoothing time of the hover speed change, in seconds.
0.301introbooleanThe vortex develops from the eye and spins up from still.
truepausedbooleanStops the motion. Reduced motion users get a still frame.
falsedprnumberMaximum device pixel ratio for the canvas.
2widthstring | numberWidth of the root element.
"100%"heightstring | numberHeight of the root element.
"100%"ref{ pulse, replay }pulse(x?, y?, strength?) sends a pulse from a point in 0 to 1 coordinates. replay() restarts the intro.
-childrenReactNodeContent rendered above the effect.
-classNamestringClasses for the root element.
-styleCSSPropertiesInline styles for the root element.
-