Prodular UI

Item

A row with media, a title, a description and actions, for lists of integrations, files, people and settings.

npx prodular-ui add item

List in a card

Plain items split by ItemSeparator. The card is the only box.

Integrations
Connected apps can read billing data for this workspace.
SlackConnected

Posts failed payments to #billing-alerts

SnowflakeConnected

Syncs invoices and usage every hour

WebhooksConnected

2 endpoints, 14 event types

HubSpot

Match customers to company records

Variants

outline for a standalone row on the page, muted for a quiet link. Render as a link with render.

Two factor authentication is off

Admins must turn it on before November 15.

Q3 revenue report

Anatomy

<ItemGroup>  <Item role="listitem">    <ItemMedia variant="icon"><DatabaseIcon /></ItemMedia>    <ItemContent>      <ItemTitle>Snowflake</ItemTitle>      <ItemDescription>Syncs every hour</ItemDescription>    </ItemContent>    <ItemActions>      <Button size="sm" variant="ghost">Configure</Button>    </ItemActions>  </Item>  <ItemSeparator /></ItemGroup>

Guidance

Use it when

  • Lists where each row has a name, a short description and one or two actions.
  • Standalone rows on a page, such as a setting that needs attention (outline).

Avoid

  • outline or muted items inside a card. Inside a card use the default variant with separators.
  • Data with several comparable columns. Use a Table.
  • More than two actions per row. Move the rest into a menu.

Rules for AI agents

Published in llms-full.txt, the registry and the MCP server, so coding agents follow them when they build with this component.

  • Inside a Card, use the default variant and separate rows with ItemSeparator. Never use variant="outline" inside a card.
  • Wrap rows in ItemGroup and give each Item role="listitem".
  • Use ItemMedia variant="icon" for lucide icons and variant="image" for logos or thumbnails.
  • To make the whole row a link, pass render={<a href="..." />}. Do not nest buttons inside a linked row.
  • Keep ItemTitle to one line and ItemDescription to two.

API

Item

PropTypeDefaultDescription
variant"default" | "outline" | "muted""default"Plain row, raised bordered row or quiet tinted row.
size"default" | "sm" | "xs""default"Padding and gap.
renderReactElementRenders the row as another element, for example a link.

ItemMedia

PropTypeDefaultDescription
variant"default" | "icon" | "image""default"Sizing for the leading media.

Installation

The Prodular UI CLI adds the source to components/ui with everything it depends on. In a project that already uses shadcn/ui, the shadcn CLI installs it from the Prodular registry too. See Installation for the first setup.

npx prodular-ui add item# or, with the registry in components.jsonnpx shadcn@latest add @prodular/item