Smooth Cursor

A customizable, physics-based smooth cursor animation component for Vue applications.

Install using CLI

npm
pnpm
bun
yarn
npx shadcn-vue@latest add "https://inspira-ui.com/r/smooth-cursor.json"

Install Manually

Copy and paste the following code

SmoothCursor.vue
DefaultCursor.vue

API

Prop NameTypeDefaultDescription
cursorComponentDefaultCursorCustom cursor component to replace the default cursor
springConfigSpringConfigSee belowConfiguration object for the spring animation behavior.

SpringConfig Type

interface springConfig {
  damping: number;
  stiffness: number;
  mass: number;
  restDelta: number;
}

Default SpringConfig Configuration

const defaultSpringConfig = {
  damping: 45,
  stiffness: 400,
  mass: 1,
  restDelta: 0.001,
};

Browser Support

Compatible with all modern browsers that support:

  • requestAnimationFrame
  • CSS transforms
  • Pointer events

Accessibility

When using this component, consider that:

  • Users navigating via keyboard will not see the custom cursor
  • You may want to provide alternative visual cues for interactive elements
  • Some users may have motion sensitivity, so consider providing a way to disable the animation

Features

  • 🎯 Smooth physics-based cursor animations
  • 🔄 Rotation effects based on movement direction
  • ⚡ Performance optimized with RAF
  • 🎨 Fully customizable cursor design
  • 📦 Lightweight and easy to implement

Credits