Skip to content

Avatar

An avatar is a person's photo, or their initials on their own gradient, in a circle beside their name, so you see at a glance who moved a candidate or left a comment. Teams and companies take the same circle with a small mark in the corner.

What it is

Show the photo the person uploaded. Without one, show their initials on a gradient picked from their name, so a person keeps the same color on every screen.

With the name and one line in a lighter ink, such as a role, the avatar makes a person row.

  • Anita GurungCare assistant, candidate
  • Ana HorvatRecruiter
  • Zagreb recruiting teamTeam
  • Werklist ZagrebCompany

When to use it

Put an avatar beside a name wherever people act: comments, assignees, chat, the activity history, the notification center, the people column of a board.

Leave the name out only where the row is too narrow for it, and then give the avatar the name in a tooltip and for screen readers. Keep avatars off the notification cards that pop up and off empty states, where a word says more.

Anatomy

AH
Shape
circle
--radius-full
Photo
covers the disc, centered, with no edge
Initials
first letters of the first and last name, two at most
Fill without a photo
one of 8 gradients, picked from the name, light at the top left, deep at the bottom right
Initials color
white
--on-brand
Team or company mark
12 px disc at 24 px, 14 px disc at 32 px
--surface-strong
No name at all
a person icon on a gray disc
--surface-control

Sizes

32px is the default. Use 24 px in board cells and stacks, 40 px in the header of a person's panel and 56 px on a profile.

24 px
initials 10 px
32 px, the default
initials 12 px
40 px
initials 13 px
56 px
initials 18 px
Weight of the initials
700

Stacks

Show up to 4 faces, each overlapping the next by 6 px, then a disc with the count of the rest, such as +3. The faces stand bare and the count disc keeps a 2 px ring. Hover or focus on the stack opens a card with everyone on it.

At rest
Ana Horvat, Rajesh Kumar, Maria Santos, Luka Perić, Anita Gurung, Marko Ilić, Amra Hodžić
On hover or keyboard focus
Ana Horvat, Rajesh Kumar, Maria Santos, Luka Perić, Anita Gurung, Marko Ilić, Amra Hodžić
Faces shown
4
Overlap
6 px
Ring on the faces
none
Count disc
10 px, weight 700, tabular digits
--surface-control
Ring on the count
2 px
--surface-strong
Card
240 px wide, 12 px corners, 8 px inside
--surface-1

States and behavior

An avatar that opens a profile is a button. Hover shows the name in a tooltip, keyboard focus draws the focus ring, and on a touch screen the target grows to 44 px while the drawing stays the same.

While a photo loads, the initials show. If it fails, they stay.

  • At rest
  • Pointer on it
  • Keyboard focus
Tooltip
the name, after 500 ms of hover
Focus ring
2 px, offset 2 px
--focus-ring
Touch target
44 px

Accessibility

When the name is written beside the avatar, hide the avatar from screen readers so the name is read once. When the avatar stands alone, it carries the name: the photo's alt text, or a label on the initials.

A stack names the faces it shows and counts the rest in the label of its button, for example Assigned to Ana Horvat, Rajesh Kumar, Maria Santos, Luka Perić and 3 others.

The name is always written or announced. Initials never stand alone.

Permitted and not permitted

Permitted

  • The name beside the avatar

    The name says who it is. The face helps the eye find them again.

  • Initials on the person's gradient

    Picked from the name, the same on every screen.

Not permitted

  • Initials as the only label

    Two people can share initials. Write or announce the name.

  • A ring or an edge on a face

    Faces stand bare. Only the count of a stack has a ring.

  • Avatars on notification cards that pop up

    A label names the event and the card stays quiet.

NextPermitted and not permitted

Avatar

A person's photo, or their initials on their own gradient, in a circle beside their name. Teams and companies take the same circle with a small mark in the corner.

  • Kind: component
  • Page: https://design.werklist.com/components/avatar
  • Version: 2.1.2

When to use it

  • Beside a name wherever people act: comments, assignees, chat, the activity history, the notification center and the people column of a board.
  • Alone only where the row is too narrow for the name, with the name in a tooltip and for screen readers.

When not to use it

  • Notification cards that pop up, and empty states.
  • Initials as the only label of a person.
  • A ring or an edge on a face.

Rules

  • A stack shows up to 4 faces, each overlapping the next by 6 px, then a disc with the count of the rest.
  • The faces stand bare. The count disc keeps a 2 px ring.
  • Hover or focus on a stack opens a card with everyone on it, 240 px wide, with 12 px corners and 8 px inside.
  • A person keeps the same color on every screen.

Anatomy

  • Shape: a circle (--radius-full)
  • Photo: covers the disc, centered, with no edge
  • Initials: the first letters of the first and last name, two at most, in white at weight 700 (--on-brand)
  • Fill without a photo: one of 8 gradients, picked from the name, light at the top left and deep at the bottom right
  • Team or company mark: a 12 px disc at 24 px and a 14 px disc at 32 px, in the bottom corner (--surface-strong)
  • No name at all: a person icon on a gray disc (--surface-control)

Variants

  • Photo: the person uploaded a picture
  • Initials: no picture, or the picture failed to load
  • Team: a team, with a small mark in the corner
  • Company: a company, with a small mark in the corner
  • Stack: several people in a narrow cell: up to 4 faces, then a count
  • Person row: the avatar, the name and one line in a lighter ink, such as a role

Sizes

  • 24 px, board cells and stacks: height 24 px, type initials 10 px
  • 32 px, the default: height 32 px, type initials 12 px
  • 40 px, the header of a person's panel: height 40 px, type initials 13 px
  • 56 px, a profile: height 56 px, type initials 18 px

States

  • Loading: the initials show until the photo arrives
  • Photo failed: the initials stay
  • Hover: a tooltip with the person's name, after 500 ms
  • Keyboard focus: the focus ring, 2 px, offset 2 px (--focus-ring)
  • Touch: the target grows to 44 px and the drawing stays the same

Keyboard

  • Tab: moves to an avatar or a stack that opens something
  • Enter or Space: opens the profile or the card
  • Escape: closes the card, and focus stays on the stack

Accessibility

  • When the name is written beside the avatar, the avatar is hidden from screen readers so the name is read once.
  • When the avatar stands alone, it carries the name: the photo's alt text, or a label on the initials.
  • A stack names the faces it shows and counts the rest in the label of its button, for example Assigned to Ana Horvat, Rajesh Kumar, Maria Santos, Luka Perić and 3 others.
  • The name is always written or announced. Initials never stand alone.

Content

  • The initials come from the name the person shows, two letters at most.
  • The count disc reads as a plus and the number of the rest, such as +3, in tabular digits.

Tokens

  • --radius-full
  • --on-brand
  • --surface-1
  • --surface-strong
  • --surface-control
  • --focus-ring

JSON

{
  "title": "Avatar",
  "path": "/components/avatar",
  "url": "https://design.werklist.com/components/avatar",
  "text": "https://design.werklist.com/agent/components/avatar",
  "summary": "A person's photo or initials in a circle, alone or in a stack, and how it names the person to a screen reader.",
  "version": "2.1.2",
  "kind": "component",
  "name": "Avatar",
  "purpose": "A person's photo, or their initials on their own gradient, in a circle beside their name. Teams and companies take the same circle with a small mark in the corner.",
  "use": [
    "Beside a name wherever people act: comments, assignees, chat, the activity history, the notification center and the people column of a board.",
    "Alone only where the row is too narrow for the name, with the name in a tooltip and for screen readers."
  ],
  "avoid": [
    "Notification cards that pop up, and empty states.",
    "Initials as the only label of a person.",
    "A ring or an edge on a face."
  ],
  "anatomy": [
    {
      "part": "Shape",
      "measure": "a circle",
      "token": "--radius-full"
    },
    {
      "part": "Photo",
      "measure": "covers the disc, centered, with no edge"
    },
    {
      "part": "Initials",
      "measure": "the first letters of the first and last name, two at most, in white at weight 700",
      "token": "--on-brand"
    },
    {
      "part": "Fill without a photo",
      "measure": "one of 8 gradients, picked from the name, light at the top left and deep at the bottom right"
    },
    {
      "part": "Team or company mark",
      "measure": "a 12 px disc at 24 px and a 14 px disc at 32 px, in the bottom corner",
      "token": "--surface-strong"
    },
    {
      "part": "No name at all",
      "measure": "a person icon on a gray disc",
      "token": "--surface-control"
    }
  ],
  "variants": [
    {
      "name": "Photo",
      "use": "the person uploaded a picture"
    },
    {
      "name": "Initials",
      "use": "no picture, or the picture failed to load"
    },
    {
      "name": "Team",
      "use": "a team, with a small mark in the corner"
    },
    {
      "name": "Company",
      "use": "a company, with a small mark in the corner"
    },
    {
      "name": "Stack",
      "use": "several people in a narrow cell: up to 4 faces, then a count"
    },
    {
      "name": "Person row",
      "use": "the avatar, the name and one line in a lighter ink, such as a role"
    }
  ],
  "sizes": [
    {
      "name": "24 px, board cells and stacks",
      "height": "24 px",
      "type": "initials 10 px"
    },
    {
      "name": "32 px, the default",
      "height": "32 px",
      "type": "initials 12 px"
    },
    {
      "name": "40 px, the header of a person's panel",
      "height": "40 px",
      "type": "initials 13 px"
    },
    {
      "name": "56 px, a profile",
      "height": "56 px",
      "type": "initials 18 px"
    }
  ],
  "states": [
    {
      "name": "Loading",
      "change": "the initials show until the photo arrives"
    },
    {
      "name": "Photo failed",
      "change": "the initials stay"
    },
    {
      "name": "Hover",
      "change": "a tooltip with the person's name, after 500 ms"
    },
    {
      "name": "Keyboard focus",
      "change": "the focus ring, 2 px, offset 2 px",
      "tokens": [
        "--focus-ring"
      ]
    },
    {
      "name": "Touch",
      "change": "the target grows to 44 px and the drawing stays the same"
    }
  ],
  "keys": [
    {
      "key": "Tab",
      "action": "moves to an avatar or a stack that opens something"
    },
    {
      "key": "Enter or Space",
      "action": "opens the profile or the card"
    },
    {
      "key": "Escape",
      "action": "closes the card, and focus stays on the stack"
    }
  ],
  "accessibility": [
    "When the name is written beside the avatar, the avatar is hidden from screen readers so the name is read once.",
    "When the avatar stands alone, it carries the name: the photo's alt text, or a label on the initials.",
    "A stack names the faces it shows and counts the rest in the label of its button, for example Assigned to Ana Horvat, Rajesh Kumar, Maria Santos, Luka Perić and 3 others.",
    "The name is always written or announced. Initials never stand alone."
  ],
  "content": [
    "The initials come from the name the person shows, two letters at most.",
    "The count disc reads as a plus and the number of the rest, such as +3, in tabular digits."
  ],
  "tokens": [
    "--radius-full",
    "--on-brand",
    "--surface-1",
    "--surface-strong",
    "--surface-control",
    "--focus-ring"
  ],
  "rules": [
    "A stack shows up to 4 faces, each overlapping the next by 6 px, then a disc with the count of the rest.",
    "The faces stand bare. The count disc keeps a 2 px ring.",
    "Hover or focus on a stack opens a card with everyone on it, 240 px wide, with 12 px corners and 8 px inside.",
    "A person keeps the same color on every screen."
  ]
}

Raw file: https://design.werklist.com/agent/components/avatar