useConfetti

A hook to trigger confetti animations with customizable particle count, origin position, and duration.

Installation

npx shadcn@latest add @craftdotui/use-confetti

Usage

import { useConfetti } from "@/hooks/use-confetti";

function MyComponent() {
  const triggerConfetti = useConfetti();

  return <button onClick={() => triggerConfetti()}>Celebrate! 🎉</button>;
}

Examples

Basic Confetti

import { useConfetti } from "@/hooks/use-confetti";

function BasicExample() {
  const triggerConfetti = useConfetti();

  return <button onClick={() => triggerConfetti()}>Trigger Confetti</button>;
}

Custom Particle Count

import { useConfetti } from "@/hooks/use-confetti";

function CustomParticleCount() {
  const triggerConfetti = useConfetti();

  return (
    <button onClick={() => triggerConfetti({ particleCount: 100 })}>
      More Confetti!
    </button>
  );
}

Different Origins

import { useConfetti } from "@/hooks/use-confetti";

function DifferentOrigins() {
  const triggerConfetti = useConfetti();

  return (
    <div className="flex gap-4">
      <button onClick={() => triggerConfetti({ origin: "top" })}>
        From Top
      </button>
      <button onClick={() => triggerConfetti({ origin: "bottom" })}>
        From Bottom
      </button>
      <button onClick={() => triggerConfetti({ origin: "left" })}>
        From Left
      </button>
      <button onClick={() => triggerConfetti({ origin: "right" })}>
        From Right
      </button>
    </div>
  );
}

Custom Duration

import { useConfetti } from "@/hooks/use-confetti";

function CustomDuration() {
  const triggerConfetti = useConfetti();

  return (
    <button onClick={() => triggerConfetti({ duration: 5000 })}>
      Long Celebration (5s)
    </button>
  );
}

API Reference

useConfetti

A hook that returns a function to trigger confetti animations. The confetti is rendered on a canvas element that is automatically created and removed.

Returns: (options?: ConfettiOptions) => void

ConfettiOptions

Configuration options for the confetti animation.

ParameterTypeDescriptionDefault
particleCountnumberNumber of confetti particles to generate50
origin"top" | "bottom" | "left" | "right" | "center" | "top-left" | "top-right" | "bottom-left" | "bottom-right"Starting position for the confetti"center"
durationnumberDuration in milliseconds before cleanup3000