nextui.dev
Home
Library
Docs
Pricing
Components26
AI & agents5
  • AI chat inputPro
  • Agent task checklistPro
  • Agent thinking
  • Thinking indicator
  • Prompt deckNew
Forms & inputs7
  • Input with label
  • Input with icon and button
  • Settings switches
  • Password with strength meter
  • One-time code input
  • WaitlistNew
  • File dropzonePro
Cards5
  • Style marquee cardPro
  • Folder card
  • Celebration cardPro
  • Smart PDF stackNew
  • Waitlist pass
Buttons, badges & avatars5
  • Buttons with icons
  • QR scan badge
  • Avatar group
  • Rolling price badge
  • Avatars with status
Feedback & display4
  • Alert banners
  • FAQ accordion
  • Keyboard shortcuts
  • Empty state
Blocks11
Hero4
  • Animated pill heroPro
  • Integrations grid hero
  • Waitlist heroNew
  • Orbit chat heroNew
Features & pricing3
  • Usage cardPro
  • Three-tier pricing
  • Feature with board
Testimonials & team3
  • Testimonial cards
  • Single quote
  • Team carousel
Sign-in1
  • Sign-in cardPro
Motion2
Effects2
  • Text revealPro
  • Sound ringNew
Themes9
  • Default
  • Ember
  • Ocean
  • Forest
  • Grape
  • Rose
  • Amber
  • Clay
  • Brutal
nextui.dev

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

Product

  • Components
  • Blocks
  • Motion
  • Themes
  • Pricing

Resources

  • Docs
  • Roadmap
  • GitHub

Legal

  • License
  • Privacy
  • Terms
  • Refunds

nextUI

[ 200 OK ] · nextUI

© 2026 NEXTUI.DEV. All rights reserved.

ComponentsButtons, badges & avatarsAvatar group

Avatar group

Stacked avatars with an overflow count.

Copy prompt
MCP

Installation

Runs as is, no setup needed. Want a shorter command like @nextui/avatar-01? See short names.

$pnpm dlx shadcn@latest add https://tinistudio.vercel.app/r/avatar-01.json

Related

All components

Buttons with icons

Secondary, outline and destructive buttons with soft status buttons and animated icons, popping in as one group.

QR scan badge

A QR code that dissolves into sand, pours into a scan badge and grows back.

Rolling price badge

Pill badge that rolls between prices glyph by glyph, resizing smoothly as it goes.

npx shadcn@latest add https://tinistudio.vercel.app/r/avatar-01.json
components/nextui/avatar-01.tsx
"use client";

import { useState } from "react";

import { Avatar, AvatarFallback } from "@/components/ui/avatar";

const PEOPLE = ["AN", "BT", "CL", "DH", "EV"];

// Hovering an avatar lifts it and its neighbours by a falloff of its distance, then springs
// everything back on leave. Lift eases in cleanly; the return overshoots for the bounce.
const LIFT = -4;
const FALLOFF = 0.45;
const SCALE = 1.05;
const EASE_IN = "cubic-bezier(0.22, 1, 0.36, 1)";
const EASE_OUT = "cubic-bezier(0.34, 3.85, 0.64, 1)";

export default function Avatar01() {
  const [active, setActive] = useState<number | null>(null);
  const items = [...PEOPLE, "+12"];

  return (
    <div className="flex items-center gap-3">
      <div className="flex -space-x-2" onMouseLeave={() => setActive(null)}>
        {items.map((label, i) => {
          const shift = active === null ? 0 : LIFT * Math.pow(FALLOFF, Math.abs(i - active));
          const more = i === items.length - 1;
          return (
            <div
              key={label}
              onMouseEnter={() => setActive(i)}
              className="transition-transform duration-[320ms] will-change-transform motion-reduce:transform-none! motion-reduce:transition-none"
              style={{
                transform: `translateY(${shift.toFixed(3)}px) scale(${active === i ? SCALE : 1})`,
                transitionTimingFunction: active === null ? EASE_OUT : EASE_IN,
              }}
            >
              <Avatar className="size-9 ring-2 ring-background">
                <AvatarFallback
                  className={more ? "bg-primary text-xs font-medium text-primary-foreground" : "bg-secondary text-xs font-medium"}
                >
                  {label}
                </AvatarFallback>
              </Avatar>
            </div>
          );
        })}
      </div>
      <p className="text-sm text-muted-foreground">17 teammates online</p>
    </div>
  );
}
Sign in