shadcn.io is an independent project built on shadcn/ui
One outline row. An avatar sits at the start, then Hayden Bleasel and Last seen 5 months ago. A round plus button sits at the end.
Use an avatar row for a person, with the last-seen line as the description. A Hover Card can show more without leaving the page. In Solid, Ark UI does not know who was invited.
Installation
Anatomy

Usage
<div class="flex w-full max-w-lg flex-col gap-6">
<Item class="bg-background" variant="outline">
<ItemMedia>
<Avatar size="lg">
<AvatarImage src="https://github.com/haydenbleasel.png" />
<AvatarFallback>HB</AvatarFallback>
</Avatar>
</ItemMedia>
<ItemContent>
<ItemTitle>Hayden Bleasel</ItemTitle>
<ItemDescription>Last seen 5 months ago</ItemDescription>
</ItemContent>
<ItemActions>
<Button aria-label="Invite" pill size="icon-sm" variant="outline">
<PlusIcon aria-hidden="true" />
</Button>
</ItemActions>
</Item>
</div>FAQ
What size should an avatar be in an Item?
Use Avatar's size prop. This row uses lg, next to a title and a description. ItemMedia does not resize the avatar, so the prop decides.
When does AvatarFallback show, and what should it say?
It shows when the picture can't be displayed, for example on a broken URL. Use the person's initials, HB here, so the row still identifies them.
Why an icon-only plus button?
The row already names the person, so a plus reads as add or invite them without taking room from the text. An icon-only button needs an aria-label; in a list, name the person too, such as Invite Hayden Bleasel, so each button is distinct.
What does the invite button use?
pill, size="icon-sm", and variant="outline". aria-label is Invite, and PlusIcon is aria-hidden. The row itself is variant="outline" with bg-background.
API Reference
Item
Sets variant="outline". The rest is on the Item page.
Avatar
Sets size="lg" and src="https://github.com/haydenbleasel.png". The rest is on the Avatar page.
Button
Sets aria-label="Invite", pill, size="icon-sm" and variant="outline". The rest is on the Button page.





