Components · Person
The PersonCard is OUR wrapper (not a DS export): it composes the DS Avatar + Text on a portal surface and adds the slots the roster needs — a name, a secondary role line, labelled contact meta rows, a wrapping badge cluster (role · tier · status) and a right-aligned aside for contact actions. Pass href and the whole tile becomes a focusable link. Shown in the default tile and the dense compact variant.
Foster coordinator · Brooklyn fosters
Transport volunteer · Hudson Valley
Card 1 is pinned :hover (border-strong + surface-2 lift) and its first action :hover; hover / tab the others live. The whole tile is one <a href> — the contact actions in the aside stay non-navigating affordances so the tile keeps a single predictable target.
Intake & vet liaison · Queens
Adoption counselor · Newark
Behavior fosterer · Bronx North
Compact drops the meta rows and shrinks to a sm (24px) avatar with padding:10px 12px and center alignment — the form used inside side rails and picker popovers, where the badge or a single action carries the trailing slot.
font-semibold, truncates) and the role/team line below (DS Text size=small muted, truncates). name also seeds the Avatar initials fallback.avatarSrc shows an image (initials otherwise), avatarSize defaults to md — the default tile uses lg — and avatarAccent tints the initials chip for the highlighted / signed-in person. Presence dot is an app add-on.PersonMetaRow[] — each a 56px uppercase dt label paired with a truncating dd value. Values can be nodes (a mailto: / tel: link stays inside the truncating cell).gap-1.5 cluster of DS Badges under the meta — role, tier (Veteran / Trusted / Contributor / New) and status. Tone reinforces the word, never replaces it.margin-left:auto, vertically centered). Holds contact actions or one status chip — keep it to one or two items so the link target stays predictable.Source · components/ds/PersonCard.tsx (SURFACE + INTERACTIVE, PersonMetaRow) · DS Avatar (catalog/people.css .avatar--lg/--sm/--accent) · DS Badge tones · forum-tokens.ts repTier() for the tier word.