‹ components

Avatar

stablev1.0.0·open in canvas

Per-person identity disc — a hue-gradient circle with the person's initial.

Installnpx shadcn add @cids/avatar
Live demo
MMMMY

Motion · tap to replay

honors reduced-motion

None. Static identity surface — playfulness is budgeted to feedback, not to identity chrome.

This component declares no motion.

Brand chip remounts on tap · highlighted tokens are named in this component's doc · spring is budgeted to human feedback only.

import { Avatar } from "@/design-system";

<Avatar name="mira" seed={walletAddress} size="md" />
<Avatar name="you" you size="sm" />  {/* signed-in user: --id-tide */}

Tokens · live

Resolves in the active theme — flip the toggle above to verify.

States · from doc

Parsed from the doc. Interact with the live demo for hover/active.

not the Avatar.

Per-person identity disc — a hue-gradient circle with the person's initial.

Anatomy

   ┌─────────┐
   │    M    │  ← glyph: first letter of `name`,
   │ (hue    │    --fg-inverse on the hue gradient,
   │  disc)  │    font-mono 600
   └─────────┘
   radial-gradient(120% 120% at 30% 20%,
     var(--id-<hue>),
     color-mix(in srgb, var(--id-<hue>) 60%, black))

Props

PropTypeDefaultNotes
namestring—First character → glyph; also the aria-label.
seedstringnameValue hashed to pick the hue. Pass the wallet address for stable per-person color.
hueIdHue—Explicit override; skips hashing.
size"xs" "sm" \"md" \"lg"`"md"xs 20 · sm 28 · md 40 · lg 64 px; glyph scales with the disc.
youbooleanfalseForces the reserved --id-tide hue (the signed-in user).
classNamestring—Merged via cn (e.g. group ring/overlap).

Motion

None. Static identity surface — playfulness is budgeted to feedback, not to identity chrome.

A11y

Self-contained: copy the folder into any Tailwind+React app, or use the install command above. Docs and this page render the same file on disk — they cannot drift.