Diamond Diamond

ui · 6 variants · 1 categories

Empty State

“No data to show” containers with art, copy and CTA — inbox, CTA, no-results, dropzone, editorial 404, all caught up.

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

States

6 variants

No messages yet

When you receive messages, they'll appear here.

inbox

Create your first project

Projects help organize your work across teams.

cta

No results found

Try adjusting your search or filters.

no-results

Folder is empty

Drop files here or click to upload.

Drag & drop files
dropzone
404 · NO DATA

Nothing here yet

Start by adding your first entry.

editorial

All caught up!

No new items. You've read everything.

caught-up

Usage Guide

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

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.