nextui.dev
Home
Docs
Saved
Pricing
Components37
  • Forms & inputs7
  • Cards13
  • Buttons, badges & avatars8
  • Feedback & display6
  • Effects3
Agents17
  • Chat inputNew
  • Task checklistNew
  • ReasoningNew
  • Tool callNew
  • Tool approvalNew
  • SourcesNew
  • Agent timelineNew
  • Artifact panelNew
  • Streaming messageNew
  • Conversation shellNew
  • Voice agentNew
  • Voice orbNew
  • Thinking ring
  • Thinking waveNew
  • Thinking sparkle
  • Thinking bot
  • Prompt deckNew
Blocks20
  • Agent chatNew
  • Pill heroNew
  • Grid hero
  • Moodboard generatorNew
  • Waitlist heroNew
  • Intro bannerNew
  • Creative home heroNew
  • Chat heroNew
  • App shelfNew
  • Usage card
  • Design resultsNew
  • Pricing tiers
  • Dashboard home
  • The shiftNew
  • Launch perksNew
  • Testimonials
  • Quote
  • Team
  • Leads tableNew
  • Sign in
Pages10
  • ASCII workspace$49
  • CRM overviewNew
  • Marketing dashboardNew
  • Developer portfolio$49
  • Particle landing$49
  • Particle story$49
  • Statement converter$49
  • AI photo studio$49
  • Group card launch$49
  • Month-end storyNew
Themes9
  • Default
  • Ember
  • Ocean
  • Forest
  • Grape
  • Rose
  • Amber
  • Clay
  • Brutal
Upgrade
nextui.dev

nextui components, blocks and themes you install with one command.

Product

  • Components
  • Blocks
  • Themes
  • Pricing

Resources

  • Docs
  • Roadmap
  • GitHub

Legal

  • License
  • Privacy
  • Terms
  • Refunds

nextUI

[ 200 OK ] · nextUI

© 2026 NEXTUI • All rights reserved.

Upgrade
ComponentsCardsCelebration card
Copy promptCopy prompt

Customize

Heading text before the count

Text after the count

Line under the heading

JSX · copied with Copy prompt

<CelebrationCard />

Celebration card

Task bubbles rain down, pile up on the headline and drain away when you switch range.

Installation

Set your access key from API keys as NEXTUI_TOKEN in .env.local and add the @nextui namespace below to components.json once. Then every item installs by name. Each install counts as a copy on a free account.

$pnpm dlx shadcn@latest add @nextui/celebration-card
1{
2 "registries": {
3 "@nextui": {
4 "url": "https://nextui.dev/r/{name}.json",
5 "headers": { "Authorization": "Bearer ${NEXTUI_TOKEN}" }
6 }
7 }
8}

Usage

1"use client";
2
3import { useState } from "react";
4import { CelebrationCard } from "@/components/nextui/celebration-card";
5
6export function Example() {
7 const [range, setRange] = useState("month");
8
9 return (
10 <CelebrationCard
11 heading="You shipped"
12 suffix="features 🚀"
13 message="Great month for the team."
14 ranges={[
15 { id: "month", label: "This month", count: 12 },
16 { id: "year", label: "This year", count: 48 },
17 ]}
18 value={range}
19 onValueChange={setRange}
20 />
21 );
22}

API reference

Edit props live in the preview above, or see all 9 props
PropTypeDefaultDescription
rangesCelebrationRange[]Today (21), This week (34)Tabs with an id, label and count; the count sets the number and the bubbles
valuestring–Selected range id (controlled)
defaultValuestringfirst range idInitially selected range id (uncontrolled)
onValueChange(id: string) => void–Called when a tab is picked
headingReactNode"You completed"Heading text before the count
suffixReactNode"tasks 🎉"Text after the count
messageReactNode"Well done! Keep it up, see you tomorrow."Line under the heading
iconsLucideIcon[]16 lucide iconsIcons on the bubbles, cycled in order
classNamestring–Extra class on the root

Related

All components

Contact stackNew

Service receiptNew

Revenue cardNew

Sign in to see the code

Preview it freely. A free account copies code and prompts a few times a day.

Sign in