Diamond Diamond

ui · 6 variants · 1 categories

Table

Data-driven table with columns/rows or composition. 6 visual variants.

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

Display

6 variants
NameRoleStatus
Aria ChenDesignActive
Leo ReyesEngActive
Mei TanOpsAway
basic
NameRoleStatus
Aria ChenDesignActive
Leo ReyesEngActive
Mei TanOpsAway
invoice
NameRoleStatus
Aria ChenDesignActive
Leo ReyesEngActive
Mei TanOpsAway
zebra
NameRoleStatus
Aria ChenDesignActive
Leo ReyesEngActive
Mei TanOpsAway
log
NameRoleStatus
Aria ChenDesignActive
Leo ReyesEngActive
Mei TanOpsAway
dotted
NameRoleStatus
Aria ChenDesignActive
Leo ReyesEngActive
Mei TanOpsAway
bicolor

Usage Guide

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

Data-driven vs composition

  • Pass columns + rows for the data-driven mode. Each column can supply render(row, i) and align.
  • Pass children for full composition — write your own <thead>/<tbody> markup; the wrapper still applies the variant's styling.
  • bordered wraps the table in a rounded border container for the basic variant.

Empty state

Pass empty to render a placeholder row when rows is empty.

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.