@ui-registries/pdf

Avatar

Round image with an initials fallback, and overlapping avatar groups.

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.json

Usage

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

sizeSize
smsize-6
defaultsize-8
lgsize-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>