Diamond Diamond

ui · 6 variants · 1 categories

Statistic

KPI displays with delta indicators, sparklines, progress bars, and grid layouts.

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

Display

6 variants
Total Revenue
$48.2k
12.4%
kpi
Users
2,480
Sessions
18.4k
paired
Active Now
142
Sparkline
dark
99.8%
uptime, this month
large
Conversion
ON TRACK
4.8%
68% to goal of 7%
progress
12
Projects
248
Tasks
14
Team
grid

Usage Guide

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

Variants by use-case

  • kpi — single metric + delta arrow. Pass delta={ dir, text }.
  • paired / grid — array of entries with label + value.
  • dark — high-contrast card with an inline sparkline (number array).
  • progressprogress (0-100) drives the bar; status + goal render the labels.
  • large — display headline for hero stats.

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.