Cursor Wave

A grid of shapes that reacts to your cursor and clicks

cursor-wave-tw

Customize

Grid & Influence

40
30
0.5
0.6

Scaling

0.09
1
3
1

Burst & Surface

1200
180
#FFFFFF

Props

widthstring | number

Container width

Default:"100%"
heightstring | number

Container height

Default:"100%"
classNamestring

Additional CSS classes for styling

Default:""
childrenReactNode

Content rendered above the canvas

Default:undefined
cellSizenumber

Pixel spacing between cell centres (16–96)

Default:40
influenceRadiusVminnumber

Cursor influence radius as a percentage of min(width, height) (5–80)

Default:30
attackTimenumber

Time constant in seconds for the swell-up ease (0.05–2)

Default:0.5
releaseTimenumber

Time constant in seconds for the relax-down ease (0.05–2)

Default:0.6
idleScalenumber

Resting scale applied to every shape (0–0.5)

Default:0.09
minPeakScalenumber

Minimum peak scale assigned per cell on hover (0.5–4)

Default:1
maxPeakScalenumber

Maximum peak scale assigned per cell on hover (1–6)

Default:3
burstSpeednumber

Click-burst expansion speed in pixels/second (200–4000)

Default:1200
burstThicknessnumber

Click-burst ring thickness in pixels (40–600)

Default:180
backgroundColorstring

Background fill color in hex format

Default:"#080808"
shapes("circle" | "triangle" | "square")[]

Pool of shapes randomly assigned across the grid; repeat entries to bias the distribution

Default:["circle", "triangle", "square"]
colors(string | { stops: [string, string] })[]

Color pool. Strings are solid hex; objects produce a 2-stop radial gradient (top → bottom)

Default:[17 default colors and gradients]
dprnumber

Maximum device pixel ratio (caps GPU work) (1–3)

Default:2
opacitynumber

Master alpha (0–1)

Default:1