Custom Cursor

Interactive cursor component with smooth animations and target morphing

With Image
No Image
Circle

Customize

Circle Size
40px
Dot Size
6px
Circle Border Width
2px
Circle Stiffness
150
Circle Damping
20
Dot Stiffness
300
Dot Damping
30
Target Padding
0px

Props

23
circleSizenumber

Size of the outer circle in pixels

Default40
dotSizenumber

Size of the inner dot in pixels

Default6
circleColorstring

Color of the outer circle (any valid CSS color)

Default"rgb(0, 0, 0)"
dotColorstring

Color of the inner dot (any valid CSS color)

Default"rgb(0, 0, 0)"
circleStiffnessnumber

Spring stiffness for the outer circle (higher = faster)

Default150
circleDampingnumber

Spring damping for the outer circle (higher = less bounce)

Default20
dotStiffnessnumber

Spring stiffness for the inner dot (higher = faster)

Default300
dotDampingnumber

Spring damping for the inner dot (higher = less bounce)

Default30
circleBorderWidthnumber

Border width of the outer circle in pixels

Default2
classNamestring

Additional class name for the container

Default""
circleClassNamestring

Additional class name for the circle

Default""
dotClassNamestring

Additional class name for the dot

Default""
showOnTouchboolean

Whether to show the cursor on touch devices

Defaultfalse
zIndexnumber

Z-index of the cursor

Default9999
elasticboolean

Enable subtle elastic stretch in direction of movement

Defaultfalse
imageClassNamestring

Additional class name for the image elements

Default""
targetPaddingnumber

Padding between cursor and target in pixels

Default0
targetsstring[]

CSS selectors for target elements to trigger effects on hover

Default[]
images(string | undefined)[]

Image URLs corresponding to each target (optional - targets without images will still morph the cursor)

Default[]
imageScalenumber

Scale amount for images when hovering targets (0-1)

Default0.9
imageAnimationDurationnumber

Duration of image scale animation in seconds

Default0.6
mixBlendModestring

Mix blend mode for the cursor elements

Defaultundefined
childrenReact.ReactNode

Custom content to render inside the cursor

Defaultundefined