Avatar
● Stable · v0.1An initial-based identity mark for people and organisations — feed authors, sellers, group members, DMs. A person is a teal-tinted circle; an org/partner is a solid teal rounded-square, so the two read apart at a glance. Initials only, by design: our users are often offline or on low bandwidth, so we never wait on a remote photo.
In context
Purpose
Avatar gives a person or org a stable, recognisable mark without a network round-trip. It anchors list rows and messages so the eye can track "who" down a column. The person/org shape split carries meaning: you can tell a customer from a partner co-op before reading the name.
Anatomy
- Shape — a tinted circle (person) or a solid teal rounded-square (
org). - Glyph — the first letter of
name, or an explicitinitial. - Size — a single
size(diameter) drives everything.
Variants
- Person (default) — teal-tinted circle, teal initial.
- Organisation (
org) — solid teal rounded-square, white initial. - Custom — override
color/backgroundfor a themed chip.
Code
import { Avatar } from '@daytwo/components'<Avatar name="Daw Hla" size={40} /><Avatar name="Chiang Mai Vendors Co-op" org size={40} />
When to use
- List rows for people/orgs (payments, members, feed).
- Message threads and DMs.
When NOT to use
- As a button with no identity behind it — that's an icon button.
- For a photo-first experience — this system is initials-only on purpose.
Good vs bad
- Good: a members list where customers are tinted circles and the partner co-op is a teal square — the relationship is legible before you read a word.
- Bad: loading remote profile photos that block the row on a slow connection — the list stalls exactly when our offline-first user needs it.
Edge cases
No name
Pass an explicit initial, or it falls back gracefully
WhyA row without a name shouldn't render an empty circle
Non-Latin initial
Renders the first Burmese/Thai character
WhyNames aren't always Latin
Very small size
Glyph scales with size; keep ≥ 24 for legibility
WhyBelow that the initial stops reading
Dark mode
Tint/solid follow the theme
WhyBoth shapes must stay distinct in either scheme
Initials, not photos
Offline-first means identity can't wait on a download. The initial is instant and always available.
Tokens used
color.brand.tintcolor.brand.primarycolor.brand.onPrimaryradius.mdradius.pilltypography.callout