Make your AI a shadcn expert

Shadcn Item

React item for settings, notification, and file list rows. Built with TypeScript and Tailwind CSS for Next.js using Base UI — media, title, description, and actions.

An item is a flex row: media on the left, a title and description in the middle, actions on the right. Use it for settings, notifications, files, and people. If the row hosts an input, that is a Field.

Scroll to load preview...

Looking for a neobrutalism version for shadcn?

Same item, thicker borders. The NeoBrutalism item is the kit if you want that look.

Usage

import {
  Item,
  ItemActions,
  ItemContent,
  ItemDescription,
  ItemMedia,
  ItemTitle,
} from "@/components/ui/item"
<Item variant="outline">
  <ItemMedia variant="icon">
    <InboxIcon />
  </ItemMedia>
  <ItemContent>
    <ItemTitle>Inbox</ItemTitle>
    <ItemDescription>New messages from your team.</ItemDescription>
  </ItemContent>
  <ItemActions>
    <Button variant="outline" size="sm">Open</Button>
  </ItemActions>
</Item>

variant is default, outline, or muted. render={<a href="…" />} turns the row into a link.

Composition

ItemHeader
ItemMedia
ItemTitle
ItemDescription
ItemActions
ItemFooter

Variant

default is transparent. outline draws a border. muted fills the row.

Scroll to load preview...

Size

size="sm" is the dense row. Default is the comfortable list size.

Scroll to load preview...

Icon

ItemMedia variant="icon" is the boxed glyph. It lines up with the title when a description is present.

Scroll to load preview...

Avatar

Default ItemMedia plus an Avatar. Leave variant off.

Scroll to load preview...

Image

variant="image" plus an <img>. Use it for albums, files, and products.

Scroll to load preview...

Group

ItemGroup is role="list". Slide ItemSeparator between rows.

Scroll to load preview...

ItemHeader is a full-width row above the title. Use it for a cover image.

Scroll to load preview...

render={<a href="…" />} plus the label as children. Hover and focus land on the anchor.

Scroll to load preview...

Drop an Item inside a Dropdown Menu item for a face, a name, and an email.

Scroll to load preview...

RTL

Wrap with DirectionProvider and dir="rtl". Copy is Arabic; the chevron flips.

Scroll to load preview...

API

Prop

Type

ItemMedia

Prop

Type

ItemGroup sets role="list". ItemSeparator is a Separator. The rest take className.

Notes

Item is not a form row

If the row hosts a checkbox, input, or select, use Field. Item is content — a title, a description, a button or a link.

Keep descriptions to one idea. The two-line clamp is a layout guard, not a place to hide a paragraph.

With other components

Questions

Was this page helpful?

Sign in to leave feedback.