# V tooltip 8

> Avatar Stack

A shadcn/ui block from the [@cnippet](https://ui.cnippet.dev/) registry, listed on [shadcn.exchange](https://shadcn.exchange/r/cnippet/v-tooltip-8).

- Page, with a live preview: https://shadcn.exchange/r/cnippet/v-tooltip-8
- Screenshot: https://abzjhwgwpdpz7ua5.public.blob.vercel-storage.com/shots/cnippet/v-tooltip-8-light-4a096bd559a83937.png
- Registry item: https://ui.cnippet.dev/r/v-tooltip-8.json
- Categories: tooltip
- Listed: 2026-10-13, source last changed 2026-10-13

## Install

```bash
npx shadcn@latest add https://ui.cnippet.dev/r/v-tooltip-8.json
```

Run it in a project that has shadcn/ui set up. It adds the files below and installs what they depend on.

## Dependencies

- Registry items: `@cnippet/tooltip`

## Files

### `registry/default/variants/v-tooltip-8.tsx`

```tsx
import { PlusIcon } from "lucide-react";
import {
  Avatar,
  AvatarFallback,
  AvatarImage,
} from "@/registry/default/ui/avatar";
import {
  Tooltip,
  TooltipContent,
  TooltipProvider,
  TooltipTrigger,
} from "@/registry/default/ui/tooltip";

const members = [
  {
    initials: "SC",
    name: "Sarah Chen",
    role: "Lead Designer",
    src: "https://images.unsplash.com/photo-1494790108377-be9c29b29330?w=64&h=64&dpr=2&q=80",
  },
  {
    initials: "MK",
    name: "Marcus Kim",
    role: "Frontend Engineer",
    src: "https://images.unsplash.com/photo-1539571696357-5a69c17a67c6?w=64&h=64&dpr=2&q=80",
  },
  {
    initials: "AJ",
    name: "Aisha Johnson",
    role: "Product Manager",
    src: "https://images.unsplash.com/photo-1517841905240-472988babdf9?w=64&h=64&dpr=2&q=80",
  },
  {
    initials: "LR",
    name: "Liam Rivera",
    role: "Backend Engineer",
    src: "https://images.unsplash.com/photo-1506794778202-cad84cf45f1d?w=64&h=64&dpr=2&q=80",
  },
  {
    initials: "PW",
    name: "Priya Wang",
    role: "QA Engineer",
    src: "",
  },
] as const;

const overflow = ["Nina Patel", "Omar Hassan", "Lea Müller"];

export function Pattern() {
  return (
    <div className="flex min-h-[100px] items-center justify-center">
      <TooltipProvider>
        <div className="flex items-center">
          {members.map((member, i) => (
            <Tooltip key={member.name}>
              <TooltipTrigger
                className="focus-visible:outline-none"
                style={{ zIndex: members.length - i }}
              >
                <Avatar className="-ml-2.5 size-9 ring-2 ring-background transition-transform first:ml-0 hover:z-10 hover:-translate-y-1">
                  {member.src && (
                    <AvatarImage alt={member.name} src={member.src} />
                  )}
                  <AvatarFallback className="text-xs">
                    {member.initials}
                  </AvatarFallback>
                </Avatar>
              </TooltipTrigger>
              <TooltipContent className="px-3 py-2">
                <p className="font-medium">{member.name}</p>
                <p className="text-muted-foreground">{member.role}</p>
              </TooltipContent>
            </Tooltip>
          ))}

          <Tooltip>
            <TooltipTrigger className="-ml-2.5 focus-visible:outline-none">
              <div className="flex size-9 items-center justify-center rounded-full bg-muted font-medium text-muted-foreground text-xs ring-2 ring-background transition-colors hover:bg-muted/80">
                +{overflow.length}
              </div>
            </TooltipTrigger>
            <TooltipContent className="px-3 py-2">
              <p className="mb-1 font-medium">{overflow.length} more members</p>
              <div className="space-y-0.5">
                {overflow.map((name) => (
                  <p className="text-muted-foreground" key={name}>
                    {name}
                  </p>
                ))}
              </div>
            </TooltipContent>
          </Tooltip>

          <Tooltip>
            <TooltipTrigger className="-ml-2 focus-visible:outline-none">
              <div className="flex size-9 items-center justify-center rounded-full border-2 border-border border-dashed bg-background text-muted-foreground transition-colors hover:bg-muted">
                <PlusIcon className="size-4" />
              </div>
            </TooltipTrigger>
            <TooltipContent>Add member</TooltipContent>
          </Tooltip>
        </div>
      </TooltipProvider>
    </div>
  );
}
```
