Cursor & pointer

Cursor

A liquid cursor: a dot, a ring that lags on a spring and stretches with speed, and a trail of blobs. Grows over links, becomes a beam over text, squeezes while dragging.

Paste it into ChatGPT, Claude, Cursor or v0.
Trail blobs4
Ring size36
stiffness380
damping30

Usage

import { Cursor } from '@vizzele/react';

export function App() {
  return (
    <>
      <Cursor trail={4} />
      <a href="/work" data-vz-cursor-label="Open">Our work</a>
    </>
  );
}

Props

PropTypeDefaultDescription
trailnumber4Number of trailing blobs.
sizenumber36Ring diameter in px.
hideNativebooleantrueHide the system cursor while active.
stretchbooleantrueStretch the ring along its velocity.
springSpringConfig | SpringPreset{ stiffness: 380, damping: 30 }How the ring follows.
hoverSelectorstring—Elements that trigger the hover state.
textSelectorstring—Elements that trigger the text state.
disabledboolean—Turn off without unmounting.

Accessibility

  • The cursor is purely decorative (`aria-hidden`) and never intercepts pointer events.
  • Disabled on touch / coarse pointers and when the user prefers reduced motion — the native cursor stays.
  • Offer a way to turn it off (like the toggle in this site’s header).