Diamond Diamond

ui · 6 variants · 1 categories

List Item

Flexible row primitive with leading, title/description, and trailing slots.

npx "@rueda.dev/gems-diamond" add list-item
§01

Display

6 variants
List item
Click to select
basic
JM
James M.
Product designer · SF
Follow
person
Autumn jacket
Size M · Earth
$148
product
Prepare brief
Apr 22
task
APR 24Design review
2:00 — 3:00 PM · Room 4B
event
Drag to reorder
01 / 08
drag

Usage Guide

How to wire up this component in your app — props, callbacks, customization, and the conventions Diamond shares across the library.

When to use ListItem vs List

List renders a homogeneous array. ListItem is the same building block exposed standalone — reach for it when each item needs different markup or wrapper.

Universal patterns

Every Diamond component shares the same prop conventions, so once you learn one you can predict the others.

  • variant — discriminated union of every visual option. Categories shown above are docs-only metadata; the prop is a flat string union.
  • accent — any CSS color string. Overrides --diamond-accent just for that instance via inline style. Cascades into hover, ring, and selection states.
  • asChild (when present) — renders the underlying primitive via @radix-ui/react-slot, letting you compose with <Link>, motion.button, etc.
  • className — merged with internal Tailwind classes via cn(). Use it to override layout, spacing, or colors.
  • Native HTML attributes (onClick, aria-*, data-*, ref, etc.) flow through to the root element without any whitelist.
  • Diamond is the skin: zero domain state, zero fetch, zero providers. You wire data and reactions in your app code; the components just render and emit events.