CNCNCN
CNCNCN
Installation

pnpm dlx shadcn@latest add @cortexcn/avatarUsage
import { Avatar, AvatarImage, AvatarFallback, AvatarGroup, AvatarGroupCount, AvatarBadge } from "@/components/avatar";Examples
Sizes
CNCNCN
CNCNCN
import { Avatar, AvatarFallback, AvatarImage } from "@/components/avatar"export function AvatarSizes() { return ( <div className="flex flex-col gap-6"> <div className="flex flex-wrap items-center gap-2"> <Avatar size="sm"> <AvatarImage src="https://github.com/shadcn.png" alt="@shadcn" /> <AvatarFallback>CN</AvatarFallback> </Avatar> <Avatar> <AvatarImage src="https://github.com/shadcn.png" alt="@shadcn" /> <AvatarFallback>CN</AvatarFallback> </Avatar> <Avatar size="lg"> <AvatarImage src="https://github.com/shadcn.png" alt="@shadcn" /> <AvatarFallback>CN</AvatarFallback> </Avatar> </div> <div className="flex flex-wrap items-center gap-2"> <Avatar size="sm"> <AvatarFallback>CN</AvatarFallback> </Avatar> <Avatar> <AvatarFallback>CN</AvatarFallback> </Avatar> <Avatar size="lg"> <AvatarFallback>CN</AvatarFallback> </Avatar> </div> </div> )}Badge
JZJZJZ
JZJZJZ
import { Avatar, AvatarBadge, AvatarFallback, AvatarImage } from "@/components/avatar"export function AvatarWithBadge() { return ( <div className="flex flex-col gap-6"> <div className="flex flex-wrap items-center gap-2"> <Avatar size="sm"> <AvatarImage src="https://github.com/jorgezreik.png" alt="@jorgezreik" /> <AvatarFallback>JZ</AvatarFallback> <AvatarBadge /> </Avatar> <Avatar> <AvatarImage src="https://github.com/jorgezreik.png" alt="@jorgezreik" /> <AvatarFallback>JZ</AvatarFallback> <AvatarBadge /> </Avatar> <Avatar size="lg"> <AvatarImage src="https://github.com/jorgezreik.png" alt="@jorgezreik" /> <AvatarFallback>JZ</AvatarFallback> <AvatarBadge /> </Avatar> </div> <div className="flex flex-wrap items-center gap-2"> <Avatar size="sm"> <AvatarFallback>JZ</AvatarFallback> <AvatarBadge /> </Avatar> <Avatar> <AvatarFallback>JZ</AvatarFallback> <AvatarBadge /> </Avatar> <Avatar size="lg"> <AvatarFallback>JZ</AvatarFallback> <AvatarBadge /> </Avatar> </div> </div> )}Badge with icon
PPPPPP
PPPPPP
import { Avatar, AvatarBadge, AvatarFallback, AvatarImage } from "@/components/avatar"import { CheckIcon, PlusIcon } from "lucide-react"export function AvatarWithBadgeIcon() { return ( <div className="flex flex-col gap-6"> <div className="flex flex-wrap items-center gap-2"> <Avatar size="sm"> <AvatarImage src="https://github.com/pranathip.png" alt="@pranathip" /> <AvatarFallback>PP</AvatarFallback> <AvatarBadge> <PlusIcon /> </AvatarBadge> </Avatar> <Avatar> <AvatarImage src="https://github.com/pranathip.png" alt="@pranathip" /> <AvatarFallback>PP</AvatarFallback> <AvatarBadge> <PlusIcon /> </AvatarBadge> </Avatar> <Avatar size="lg"> <AvatarImage src="https://github.com/pranathip.png" alt="@pranathip" /> <AvatarFallback>PP</AvatarFallback> <AvatarBadge> <PlusIcon /> </AvatarBadge> </Avatar> </div> <div className="flex flex-wrap items-center gap-2"> <Avatar size="sm"> <AvatarFallback>PP</AvatarFallback> <AvatarBadge> <CheckIcon /> </AvatarBadge> </Avatar> <Avatar> <AvatarFallback>PP</AvatarFallback> <AvatarBadge> <CheckIcon /> </AvatarBadge> </Avatar> <Avatar size="lg"> <AvatarFallback>PP</AvatarFallback> <AvatarBadge> <CheckIcon /> </AvatarBadge> </Avatar> </div> </div> )}Group
CNLRER
CNLRER
CNLRER
import { Avatar, AvatarFallback, AvatarGroup, AvatarImage } from "@/components/avatar"export function AvatarGroupExample() { return ( <div className="flex flex-col gap-6"> <AvatarGroup> <Avatar size="sm"> <AvatarImage src="https://github.com/shadcn.png" alt="@shadcn" /> <AvatarFallback>CN</AvatarFallback> </Avatar> <Avatar size="sm"> <AvatarImage src="https://github.com/maxleiter.png" alt="@maxleiter" /> <AvatarFallback>LR</AvatarFallback> </Avatar> <Avatar size="sm"> <AvatarImage src="https://github.com/evilrabbit.png" alt="@evilrabbit" /> <AvatarFallback>ER</AvatarFallback> </Avatar> </AvatarGroup> <AvatarGroup> <Avatar> <AvatarImage src="https://github.com/shadcn.png" alt="@shadcn" /> <AvatarFallback>CN</AvatarFallback> </Avatar> <Avatar> <AvatarImage src="https://github.com/maxleiter.png" alt="@maxleiter" /> <AvatarFallback>LR</AvatarFallback> </Avatar> <Avatar> <AvatarImage src="https://github.com/evilrabbit.png" alt="@evilrabbit" /> <AvatarFallback>ER</AvatarFallback> </Avatar> </AvatarGroup> <AvatarGroup> <Avatar size="lg"> <AvatarImage src="https://github.com/shadcn.png" alt="@shadcn" /> <AvatarFallback>CN</AvatarFallback> </Avatar> <Avatar size="lg"> <AvatarImage src="https://github.com/maxleiter.png" alt="@maxleiter" /> <AvatarFallback>LR</AvatarFallback> </Avatar> <Avatar size="lg"> <AvatarImage src="https://github.com/evilrabbit.png" alt="@evilrabbit" /> <AvatarFallback>ER</AvatarFallback> </Avatar> </AvatarGroup> </div> )}Group with count
CNLRER
+3
CNLRER
+3
CNLRER
+3
import { Avatar, AvatarFallback, AvatarGroup, AvatarGroupCount, AvatarImage } from "@/components/avatar"export function AvatarGroupWithCount() { return ( <div className="flex flex-col gap-6"> <AvatarGroup> <Avatar size="sm"> <AvatarImage src="https://github.com/shadcn.png" alt="@shadcn" /> <AvatarFallback>CN</AvatarFallback> </Avatar> <Avatar size="sm"> <AvatarImage src="https://github.com/maxleiter.png" alt="@maxleiter" /> <AvatarFallback>LR</AvatarFallback> </Avatar> <Avatar size="sm"> <AvatarImage src="https://github.com/evilrabbit.png" alt="@evilrabbit" /> <AvatarFallback>ER</AvatarFallback> </Avatar> <AvatarGroupCount>+3</AvatarGroupCount> </AvatarGroup> <AvatarGroup> <Avatar> <AvatarImage src="https://github.com/shadcn.png" alt="@shadcn" /> <AvatarFallback>CN</AvatarFallback> </Avatar> <Avatar> <AvatarImage src="https://github.com/maxleiter.png" alt="@maxleiter" /> <AvatarFallback>LR</AvatarFallback> </Avatar> <Avatar> <AvatarImage src="https://github.com/evilrabbit.png" alt="@evilrabbit" /> <AvatarFallback>ER</AvatarFallback> </Avatar> <AvatarGroupCount>+3</AvatarGroupCount> </AvatarGroup> <AvatarGroup> <Avatar size="lg"> <AvatarImage src="https://github.com/shadcn.png" alt="@shadcn" /> <AvatarFallback>CN</AvatarFallback> </Avatar> <Avatar size="lg"> <AvatarImage src="https://github.com/maxleiter.png" alt="@maxleiter" /> <AvatarFallback>LR</AvatarFallback> </Avatar> <Avatar size="lg"> <AvatarImage src="https://github.com/evilrabbit.png" alt="@evilrabbit" /> <AvatarFallback>ER</AvatarFallback> </Avatar> <AvatarGroupCount>+3</AvatarGroupCount> </AvatarGroup> </div> )}Group with icon count
CNLRER
CNLRER
CNLRER
import { Avatar, AvatarFallback, AvatarGroup, AvatarGroupCount, AvatarImage } from "@/components/avatar"import { PlusIcon } from "lucide-react"export function AvatarGroupWithIconCount() { return ( <div className="flex flex-col gap-6"> <AvatarGroup> <Avatar size="sm"> <AvatarImage src="https://github.com/shadcn.png" alt="@shadcn" /> <AvatarFallback>CN</AvatarFallback> </Avatar> <Avatar size="sm"> <AvatarImage src="https://github.com/maxleiter.png" alt="@maxleiter" /> <AvatarFallback>LR</AvatarFallback> </Avatar> <Avatar size="sm"> <AvatarImage src="https://github.com/evilrabbit.png" alt="@evilrabbit" /> <AvatarFallback>ER</AvatarFallback> </Avatar> <AvatarGroupCount> <PlusIcon /> </AvatarGroupCount> </AvatarGroup> <AvatarGroup> <Avatar> <AvatarImage src="https://github.com/shadcn.png" alt="@shadcn" /> <AvatarFallback>CN</AvatarFallback> </Avatar> <Avatar> <AvatarImage src="https://github.com/maxleiter.png" alt="@maxleiter" /> <AvatarFallback>LR</AvatarFallback> </Avatar> <Avatar> <AvatarImage src="https://github.com/evilrabbit.png" alt="@evilrabbit" /> <AvatarFallback>ER</AvatarFallback> </Avatar> <AvatarGroupCount> <PlusIcon /> </AvatarGroupCount> </AvatarGroup> <AvatarGroup> <Avatar size="lg"> <AvatarImage src="https://github.com/shadcn.png" alt="@shadcn" className="grayscale" /> <AvatarFallback>CN</AvatarFallback> </Avatar> <Avatar size="lg"> <AvatarImage src="https://github.com/maxleiter.png" alt="@maxleiter" className="grayscale" /> <AvatarFallback>LR</AvatarFallback> </Avatar> <Avatar size="lg"> <AvatarImage src="https://github.com/evilrabbit.png" alt="@evilrabbit" className="grayscale" /> <AvatarFallback>ER</AvatarFallback> </Avatar> <AvatarGroupCount> <PlusIcon /> </AvatarGroupCount> </AvatarGroup> </div> )}In empty
CNLRER
No Team Members
Invite your team to collaborate on this project.
import { Avatar, AvatarFallback, AvatarGroup, AvatarGroupCount, AvatarImage } from "@/components/avatar"import { Button } from "@/components/button"import { Empty, EmptyContent, EmptyDescription, EmptyHeader, EmptyMedia, EmptyTitle } from "@/components/empty"import { PlusIcon } from "lucide-react"export function AvatarInEmpty() { return ( <div className="flex flex-col gap-6"> <Empty className="w-full flex-none border"> <EmptyHeader> <EmptyMedia> <AvatarGroup> <Avatar size="lg"> <AvatarImage src="https://github.com/shadcn.png" alt="@shadcn" className="grayscale" /> <AvatarFallback>CN</AvatarFallback> </Avatar> <Avatar size="lg"> <AvatarImage src="https://github.com/maxleiter.png" alt="@maxleiter" className="grayscale" /> <AvatarFallback>LR</AvatarFallback> </Avatar> <Avatar size="lg"> <AvatarImage src="https://github.com/evilrabbit.png" alt="@evilrabbit" className="grayscale" /> <AvatarFallback>ER</AvatarFallback> </Avatar> <AvatarGroupCount> <PlusIcon /> </AvatarGroupCount> </AvatarGroup> </EmptyMedia> <EmptyTitle>No Team Members</EmptyTitle> <EmptyDescription> Invite your team to collaborate on this project. </EmptyDescription> </EmptyHeader> <EmptyContent> <Button> <PlusIcon /> Invite Members </Button> </EmptyContent> </Empty> </div> )}Adapted from the shadcn/ui Avatar (MIT).
