npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

curzr

v1.0.15

Published

Highly customizable animated cursor with dot or liquid trails for React.

Readme

✨ curzr

A lightweight, customizable React cursor component with beautiful animated cursor trails (dots or liquid style), theme support, and context-aware hover detection.

Perfect for creative websites, portfolios, or any React app that needs a modern UX touch.


🚀 Features

  • 🔵 Custom Trail Effects – Dots or liquid-like cursor trails
  • 🎨 Theme Support – Easily configurable with your own styles
  • 🧠 Hover Context – Detects hover state for interactive UI feedback (normal cursor only)
  • 📦 Tree-shakable – Export only what you need
  • ⚡ Built with React 18+ and Vite optimized

📦 Installation

npm install curzr
# or
yarn add curzr

🧩 Usage

1. Wrap your app with CursorProvider

// main.jsx or App.jsx
import React from 'react';
import ReactDOM from 'react-dom/client';
import { CursorProvider } from 'curzr';
import App from './App';

ReactDOM.createRoot(document.getElementById('root')).render(
  <CursorProvider theme={/* see below for examples */}>
    <App />
  </CursorProvider>
);

✨ Examples

Example 1: Normal Cursor (dot, ring, blob, square, custom)

// App.jsx
import { Cursor, CursorProvider, useCursorHover } from 'curzr';
import './../node_modules/curzr/dist/styles/cursor.css'; 

function App() {
  return (
    <>
      <Cursor />
      <button className="hover-target">Hover Me</button>
      <h1>Hello World ✨</h1>
    </>
  );
}

// In your CursorProvider:
<CursorProvider
  theme={{
    type: 'blob', // dot | ring | blob | square | custom
    baseSize: 32,
    hoverScale: 2,
    color: '#00faff',
    hoverColor: '#ff0000',           // Changes color on hover
    hoverBorder: '2px solid red',    // Changes border on hover
    hoverShadow: '0 0 10px #f0f',    // Adds shadow/glow on hover
    hoverBlendMode: 'difference',    // Changes blend mode on hover
    hoverTransition: 'all 0.5s ease-in-out', // Custom transition for hover
    hoverType: 'ring',               // Morphs shape to 'ring' on hover
    transition: 'transform 0.2s, width 0.2s, height 0.2s',
    styles: {
      mixBlendMode: 'difference',
      border: '2px solid #00faff',
      boxShadow: '0 0 10px #00faff',
    },
    // Trail options are not needed for normal cursor
  }}
>
  <App />
</CursorProvider>
  • Hover effect: Works for normal cursor types (dot, ring, blob, square, custom) when you use the hover-target class or useCursorHover hook.

Example 2: Trail Cursor (dots)

// App.jsx
import { Cursor, CursorProvider, useCursorHover } from 'curzr';
import './../node_modules/curzr/dist/styles/cursor.css'; 

function App() {
  return (
    <>
      <Cursor />
      <h1>Cursor Trail Example ✨</h1>
    </>
  );
}

// In your CursorProvider:
<CursorProvider
  theme={{
    enableTrail: true,
    trailType: 'dots',
    trailLength: 24,
    trailColor: 'rgba(0, 255, 255, 0.8)',
    trailSize: 18,
    trailSmoothing: 0.3,
    trailFade: true,
    styles: {
      mixBlendMode: 'difference',
      border: 'none',
      boxShadow: 'none',
    },
    // The main cursor is hidden when trail is enabled
  }}
>
  <App />
</CursorProvider>
  • Note: When enableTrail is true and trailType is "dots", only the trail is shown and the main cursor is hidden.
  • Hover effect: Not applicable for trail cursor.

🛠️ Configuration (Optional)

You can customize your cursor or trail via the theme prop passed to the CursorProvider.

<CursorProvider
  theme={{
    // For normal cursor:
    type: 'ring', // dot | ring | blob | square | custom
    baseSize: 24,
    hoverScale: 1.5,
    color: '#00faff',
    // For trail cursor:
    enableTrail: true,
    trailType: 'dots',
    trailLength: 20,
    trailColor: 'rgba(0, 255, 255, 0.8)',
    trailSize: 12,
    trailSmoothing: 0.4,
    trailFade: true,
    // Common styles:
    styles: {
      mixBlendMode: 'difference',
      border: '2px solid #00faff',
      boxShadow: '0 0 10px #00faff',
    },
  }}
>
  <App />
</CursorProvider>

🧠 API Summary

CursorProvider

Provides context to the Cursor and other components.

Cursor

Renders the main cursor and/or trail.

useCursorHover()

Returns onMouseEnter, onMouseLeave props for hover interactivity (normal cursor only).


🎨 Cursor Types

| Type | Description | |--------|-----------------------| | dot | Small circle | | ring | Hollow ring with border | | blob | Organic blob shape | | square | Rounded square | | custom | Use image URL for shape |


🧪 Example

Live demo (coming soon) or check the example in the example/ folder if bundled.


📂 File Structure

src/
├── components/
│   └── Cursor.jsx
├── context/
│   └── CursorContext.jsx
├── hooks/
│   └── useCursorHover.js
├── styles/
│   └── cursor.css
└── index.js (library entry point)

📜 License

MIT © 2025 Rajat Hande


💬 Feedback & Contributions

Pull requests, issues, and feature suggestions are welcome!
Feel free to open an issue or fork and improve the package.