Avatar
Round image with an initials fallback, and overlapping avatar groups.
1 pageOpen PDF ↗
avatar-example.tsx
import { join } from "node:path";import { Block, Document, Page } from "@ui-registries/pdf";import { Avatar, AvatarFallback, AvatarGroup, AvatarImage,} from "@/components/pdf/avatar";
// Local images only: previews are rendered offline (scripts and tests).const asset = (file: string) => join(import.meta.dirname, "..", "assets", file);
const people = [ { name: "Alice Martin", initials: "AM", image: asset("avatar-1.png") }, { name: "Bruno Petit", initials: "BP", image: asset("avatar-2.png") }, { name: "Chloé Bernard", initials: "CB", image: asset("avatar-3.png") }, { name: "David Roux", initials: "DR" },];
export default function AvatarExample() { return ( <Document> <Page className="gap-6 bg-background p-10 text-sm" size={{ width: 420 }}> <Block className="flex-row items-center gap-4"> <Avatar size="sm"> <AvatarFallback>AM</AvatarFallback> <AvatarImage src={asset("avatar-1.png")} /> </Avatar> <Avatar> <AvatarFallback>AM</AvatarFallback> <AvatarImage src={asset("avatar-1.png")} /> </Avatar> <Avatar size="lg"> <AvatarFallback>AM</AvatarFallback> <AvatarImage src={asset("avatar-1.png")} /> </Avatar> <Avatar size="sm"> <AvatarFallback>DR</AvatarFallback> </Avatar> <Avatar> <AvatarFallback>DR</AvatarFallback> </Avatar> <Avatar size="lg"> <AvatarFallback>DR</AvatarFallback> </Avatar> </Block> <AvatarGroup> {people.map((person) => ( <Avatar key={person.name} size="lg"> <AvatarFallback>{person.initials}</AvatarFallback> {person.image ? <AvatarImage src={person.image} /> : null} </Avatar> ))} <Avatar size="lg"> <AvatarFallback>+3</AvatarFallback> </Avatar> </AvatarGroup> </Page> </Document> );}Installation
Terminal
npx shadcn add https://ui-registry.com/r/pdf/avatar.jsonUsage
tsx
import { Avatar, AvatarFallback, AvatarGroup, AvatarImage,} from "@/components/pdf/avatar";
<Avatar size="lg"> <AvatarFallback>AM</AvatarFallback> <AvatarImage src="https://example.com/alice.png" /></Avatar>Sizes
size | Size |
|---|---|
sm | size-6 |
default | size-8 |
lg | size-10 |
For any other size, pass a class: <Avatar className="size-16 text-xl">.
Group
AvatarGroup overlaps its avatars and outlines each one with a background-colored ring.
tsx
<AvatarGroup> <Avatar> <AvatarFallback>AM</AvatarFallback> <AvatarImage src={alice} /> </Avatar> <Avatar> <AvatarFallback>+3</AvatarFallback> </Avatar></AvatarGroup>