Diamond Diamond

ui · 6 variants · 1 categories

Timeline

Chronological events — vertical, milestone, log, horizontal stepper, historical, activity feed.

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

Display

6 variants
9:00
Kickoff
Team sync
11:00
Design review
Round 2
14:00
Ship
v3.2 live
vertical
Apr
Discovery
May
Design
Jun
Build
milestone
14:02
deploy started
14:05
tests passed
14:07
live
log
Q1
Q2
Q3
Q4
horizontal
1847
Atlas Co. est.
1920
Opens 3 branches
2026
Diamond debut
historical
AC
A. Chen commented
2h ago
LR
L. Reyes merged PR
4h ago
activity

Usage Guide

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

Event shape

interface TimelineEvent {
  title: ReactNode;
  description?: ReactNode;
  time?: ReactNode;
  done?: boolean;       // milestone variant
  marker?: ReactNode;   // override the dot (e.g. an Avatar)
}

Variants

  • vertical / milestone / log / historical / activity — single-column timelines with different chrome.
  • horizontal — top-to-bottom flow. Pass progress (0..1) to fill the connector up to that fraction.

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.