⚠️ Design system CSS not found. Check the path in cms/docs.config.js → designSystemPath, then re-run npm run docgen.

bd-cursor

In-house custom cursor system for desktop interactions

Website / bd-cursor
Download .md file
Open .md in new tab

bd-cursor

Our in-house custom cursor system. Replaces the default cursor with a smooth, animated dot and halo that responds to interactive elements. Desktop only (991px+) — falls back to the default cursor on mobile and touch devices.

Install

Add the CSS and JS to your project:

<link rel="stylesheet" href="path/to/bd-cursor.css">
<script src="path/to/bd-cursor.js"></script>

Add the cursor elements to your <body>:

<div class="cursor-default"></div>
<div class="cursor-halo"></div>

Usage

Add data-cursor to any element to change the cursor style on hover.

<a href="#" data-cursor="link">Link cursor</a>
<button data-cursor="button">Button cursor</button>
<div data-cursor="drag">Drag cursor</div>

Live Demos

Hover over each element to see the cursor change. Desktop only.

Navigation Cursors

Link

Hover for link cursor

Button

External

Hover for external cursor

Home

Hover for home cursor
<a href="#" data-cursor="link">Link</a>
<button data-cursor="button">Button</button>
<a href="#" data-cursor="external">External link</a>
<a href="#" data-cursor="home">Home</a>

Action Cursors

Plus

Play

Close

Check

Search

Info

<button data-cursor="plus">Plus</button>
<button data-cursor="play">Play</button>
<button data-cursor="close">Close</button>
<button data-cursor="check">Check</button>
<button data-cursor="search">Search</button>
<button data-cursor="info">Info</button>

Directional Cursors

Arrow Left / Right

Chevron Left / Right

<button data-cursor="arrow-left">Arrow left</button>
<button data-cursor="arrow-right">Arrow right</button>
<button data-cursor="chevron-left">Chevron left</button>
<button data-cursor="chevron-right">Chevron right</button>

Interactive Cursors

Drag

Hover for drag cursor

Click Anywhere

Hover for click-anywhere cursor

Scroll

Hover for scroll cursor

Look

Hover for look cursor

Text

Hover for text cursor
<div data-cursor="drag">Drag area</div>
<div data-cursor="click-anywhere">Click anywhere</div>
<div data-cursor="scroll">Scroll area</div>
<div data-cursor="look">Look</div>
<div data-cursor="text">Text area</div>

Social Cursors

Instagram TikTok LinkedIn YouTube Email Chat
<a href="#" data-cursor="instagram">Instagram</a>
<a href="#" data-cursor="tiktok">TikTok</a>
<a href="#" data-cursor="linkedin">LinkedIn</a>
<a href="#" data-cursor="youtube">YouTube</a>
<a href="#" data-cursor="email">Email</a>
<a href="#" data-cursor="chat">Chat</a>

All Cursor Types

Value Description
pointer Generic pointer
link Link indicator
button Button indicator
text Text selection cursor
external External link icon
home Home icon
plus Plus / add
play Play / media trigger
close Close / X
check Checkmark
search Search icon
info Info icon
look Eye / look
drag Drag indicator
click-anywhere Click anywhere prompt
scroll Scroll prompt
locked Locked state
case-study Case study indicator
arrow-left Left arrow
arrow-right Right arrow
chevron-left Left chevron
chevron-right Right chevron
x Close / dismiss
chat Chat icon
instagram Instagram icon
tiktok TikTok icon
linkedin LinkedIn icon
youtube YouTube icon
email Email icon

Dependencies

  • None — zero-dependency vanilla JS (no GSAP required)
  • Desktop only (991px+), skipped on touch devices
  • Requires and elements in DOM
  • Adds custom-cursor-active class to <body> when active

Animation Configuration

The follow speed and snapping behavior can be tuned via constants at the top of bd-cursor.js:

Constant Default Description
CURSOR_LERP 0.25 Cursor follow speed — higher = tighter follow, lower = smoother trail
HALO_LERP 0.25 Halo follow speed — matches cursor so both layers stay together
SNAP_THRESHOLD 0.5 Distance (px) at which the cursor snaps to the target position
On this page
  • bd-cursor
  • Live Demos
  • All Cursor Types
  • Dependencies
  • Animation Configuration
Previous

bd-audio

Next

GSAP

Was this page helpful?

We use this feedback to improve our documentation.

Thanks for your feedback

Send feedback

© 2026 By Default