Avatar

Atom

User profile photo or initials indicator. 5 sizes with optional status dot. When no image is provided, initials render on a bg-primary-subtle / text-primary tile.

Initials (sizes)

Preview
JD JD JD JD JD
Code
<%- include('modules/ui/Avatar', { name: 'Jane Doe', size: 'xs' }) %>
<%- include('modules/ui/Avatar', { name: 'Jane Doe', size: 'sm' }) %>
<%- include('modules/ui/Avatar', { name: 'Jane Doe', size: 'md' }) %>
<%- include('modules/ui/Avatar', { name: 'Jane Doe', size: 'lg' }) %>
<%- include('modules/ui/Avatar', { name: 'Jane Doe', size: 'xl' }) %>

With label

Preview
JS

John Smith

john@example.com

Code
<div class="flex items-center gap-3">
  <%- include('modules/ui/Avatar', { name: 'John Smith' }) %>
  <div>
    <p class="text-sm font-medium text-text-primary">John Smith</p>
    <p class="text-xs text-text-secondary">john@example.com</p>
  </div>
</div>

Status dot

Preview
A B C D
Code
<%- include('modules/ui/Avatar', { name: 'Alice', status: 'online' }) %>
<%- include('modules/ui/Avatar', { name: 'Bob',   status: 'away' }) %>
<%- include('modules/ui/Avatar', { name: 'Carol', status: 'busy' }) %>
<%- include('modules/ui/Avatar', { name: 'Dave',  status: 'offline' }) %>

Image source

Preview
Jane Doe Jane Doe

Image source

Same sizing and status rules apply

Code
<%- include('modules/ui/Avatar', { src: '/avatars/jane.jpg', name: 'Jane Doe' }) %>
Source modules/ui/Avatar.ejs