Avatar

● Stable · v0.1

An 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

9:41

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 explicit initial.
  • 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 / background for 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