Item
A row with media, a title, a description and actions, for lists of sources, files, or clinicians.
When to use
- A row in a list of similar things: sources, files, clinicians, API keys.
- A row with media, a title, a description and actions.
When not to use
- Data users compare across columns: use Table.
- A standalone block with several sections: use Card.
Install
npx shadcn@latest add @clinia/itemSynced 2 minutes ago · 12,408 records
Waiting for credentials
Getting started · Updated 4 Sep 2026
Marketing (Sera)
Synced 2 minutes ago · 12,408 records
Waiting for credentials
Getting started · Updated 4 Sep 2026
Anatomy
Synced 2 minutes ago
- 1Container
data-slot="item"border-border · rounded-lg - 2Media
data-slot="item-media"size-4 icon - 3Content: title and description
data-slot="item-content"text-sm · text-muted-foreground - 4Actions
data-slot="item-actions"gap-2
Clinia rules
outlineis for standalone rows andmutedfor a secondary or pending row.defaulthas no border.- Sizes are
default,smandxs. Keep one density per list. - Actions sit at the end of the row, in
ItemActions. Keep them secondary:outlineorghostbuttons. - The title clamps to one line and the description to two. Keep the key information at the start.
- In Sera,
ItemTitleis a label: uppercasetext-xsthat clamps to one line. Keep it to a name or a category of a few words, and put a sentence or a headline inItemDescriptionor a heading.
Do and don't
Synced 2 minutes ago
Synced 2 minutes ago
States: product (Luma)
Synced 2 minutes ago
Synced 2 minutes ago
Synced 2 minutes ago
Synced 2 minutes ago
Toggle the site theme to review both themes.
States: marketing (Sera)
Synced 2 minutes ago
Synced 2 minutes ago
Synced 2 minutes ago
Synced 2 minutes ago
Toggle the site theme to review both themes.
Sizes
| Size | Padding x | Gap | Radius | Type |
|---|---|---|---|---|
| default | px-4 · 16px | gap-3.5 · 14px | --radius-lg | text-sm · 14px |
| sm | px-3.5 · 14px | gap-3.5 · 14px | --radius-lg | text-sm · 14px |
| xs | px-3 · 12px | gap-2.5 · 10px | --radius-lg | text-sm · 14px |
Accessibility
Built in
render={<a href="…" />}makes the whole row a link: it takes thebg-foreground/4hover tint, never underlines, and shows the Trust focus border.
Your responsibility
ItemGrouprendersrole="list". Give eachIteminside itrole="listitem", or screen readers get a list with no items.- A row that is a link can't also hold buttons: nested controls break keyboard and screen reader use. Pick one.
- If the app underlines links on hover, keep that rule in
@layer base. An unlayered rule beats the row'sno-underlineand underlines every line in it. - Give image media
alttext, oralt=""when the title already says it.
How to test
- With a screen reader, the group is announced as a list with its number of items.
- Press Tab: focus moves to each row link, or to each action, in reading order.
- Toggle the site theme: outline and muted rows stay distinct in both.
API
Item
| Prop | Values | Default | Description |
|---|---|---|---|
| variant | defaultoutlinemuted | default |
|
| size | defaultsmxs | default | Density: |
ItemMedia
| Prop | Values | Default | Description |
|---|---|---|---|
| variant | defaulticonimage | default |
|
All other props come from the native div element.