Basel Standard / Docs
Item
Structured row primitive for review queues, summaries, and dense content lists.
Row primitive
Compact lists can stay typographic and structured.
Item is the repo's answer to the common "rich list row" problem: more structured than a loose div, lighter than a card, and easier to scan than a table when each row needs title, metadata, optional copy, and actions. It is meant for believable work surfaces like queues, archives, and operational panels.
Installation
Purchase access, then open /account/install to issue a registry token.Usage
import {
Item,
ItemActions,
ItemContent,
ItemDescription,
ItemMeta,
ItemTitle,
} from "@/components/ui/item"
<Item interactive>
<ItemContent>
<ItemTitle>Review queue item</ItemTitle>
<ItemDescription>Compact rows can still feel typographic.</ItemDescription>
<ItemMeta>
<span>Needs review</span>
<span>11:20</span>
</ItemMeta>
</ItemContent>
<ItemActions>{/* buttons */}</ItemActions>
</Item>
Why This Primitive Exists
Rows show up everywhere in product UI, but they often become inconsistent one-offs. Item provides a small set of slots and variants so operational lists can stay aligned with the system's spacing and typography rules.
- Use it for moderate-density lists where each row has more than one piece of information.
- Reach for it when a card feels too heavy and a table feels too rigid.
- Keep the row focused on one object, task, or record rather than packing in unrelated controls.
Examples
Inline Review Row
The default inline layout works well when the row needs content on the left and a compact action rail on the right.
Row primitive
Compact lists can stay typographic and structured.
Stacked Layout
Use the stacked layout when the row needs longer copy, more tags, or action buttons that should naturally wrap under the content on smaller screens.
Stacked layout
Use the stacked layout when the row needs more copy or when actions should sit underneath the main content on smaller surfaces.
<Item layout="stacked" tone="quiet">
<ItemContent>
<ItemTitle>Release checklist entry</ItemTitle>
<ItemDescription>Longer rows can stack without losing hierarchy.</ItemDescription>
</ItemContent>
<ItemActions>{/* resolve / assign */}</ItemActions>
</Item>
In Context
Items become more valuable when they sit inside a real surface. This pattern is useful for moderation queues, launch checklists, and compact archive summaries that need both scanability and action affordance.
Operational list
Editorial queue
Awaiting final proofread and asset verification.
Backlog
Queued after the current set of priority primitives.
Guidance
Choose Item Instead Of Card Or Table Deliberately
- Use
Itemwhen each record needs modest structure and optional actions. - Use a
Cardwhen the content needs a heavier frame or more internal sections. - Use a
Tablewhen comparison across columns matters more than row-by-row narrative.
Keep The Content Rail Tight
ItemTitleshould carry the main idea.- Use
ItemEyebrowandItemMetafor category, state, or timing details. - Keep descriptions short enough that rows still scan quickly in a list.
Use Variants For Density, Not Decoration
layout="inline"is the default for compact operational rows.layout="stacked"works better when the row has more narrative copy or wraps on small screens.toneandinteractiveshould reinforce behavior, not compensate for unclear information architecture.
API Reference
Item
The root Item renders a div and accepts standard React.ComponentProps<"div"> plus the variants below.
| Prop | Type | Default |
|---|---|---|
layout | "stacked" | "inline" | "inline" |
tone | "default" | "quiet" | "accent" | "default" |
interactive | boolean | false |
Exported Slots
| Export | Renders | Notes |
|---|---|---|
ItemMedia | div | Optional leading media or icon cell. |
ItemContent | div | Main content rail for title, description, and meta. |
ItemEyebrow | p | Small uppercase category or status label. |
ItemTitle | div | Primary row title. |
ItemDescription | p | Supporting explanatory copy. |
ItemMeta | div | Compact metadata row for dates, tags, or ownership. |
ItemActions | div | Trailing or wrapped action cluster. |
itemVariants is also exported for cases where another wrapper needs to share the same layout contract.