Avatar

Display user profile images with customizable fallback content

Import

import { Avatar } from "@thenamespace/uikit";

Usage

JDBJR
import {Avatar} from "@thenamespace/uikit";

export function Basic() {
  return (
    <div className="flex items-center gap-4">

Anatomy

Import the Avatar component and access all parts using dot notation.

import { Avatar } from "@thenamespace/uikit";

export default () => (
  <Avatar>
    <Avatar.Image />
    <Avatar.Fallback />
  </Avatar>
);

Sizes

SMMDLG
import {Avatar} from "@thenamespace/uikit";

export function Sizes() {
  return (
    <div className="flex items-center gap-4">

Colors

DFACSCWRDG
import {Avatar} from "@thenamespace/uikit";

export function Colors() {
  return (
    <div className="flex items-center gap-4">

Variants

accent
default
success
warning
danger
letter
AG
AG
AG
AG
AG
letter soft
AG
AG
AG
AG
AG
icon
icon soft
img
A
D
S
W
D
import { Avatar, Separator } from "@thenamespace/uikit";
import { UserIcon, HugeiconsIcon } from "@thenamespace/uikit/icons";

export function Variants() {
  const colors = ["accent", "default", "success", "warning", "danger"] as const;

Fallback Content

JDGB
import { Avatar } from "@thenamespace/uikit";
import { UserIcon, HugeiconsIcon } from "@thenamespace/uikit/icons";

export function Fallback() {
  return (

Avatar Group

JDKWECMB
JDKWEC+2
import {Avatar} from "@thenamespace/uikit";

const users = [
  {
    id: 1,

Custom Styles

XLSQ
GB
ON
import {Avatar} from "@thenamespace/uikit";

export function CustomStyles() {
  return (
    <div className="flex items-center gap-4">

Custom Image Component

Use asChild on Avatar.Image to compose with a custom image component. This example uses Next.js Image for optimized loading. Pass src on Avatar.Image so it can track the loading state and show the fallback until the image is ready.

JD
import Image from "next/image";

import { Avatar } from "@thenamespace/uikit";

const SRC = "/assets/avatars/blue.jpg";

Styling

Passing Tailwind CSS classes

import { Avatar } from "@thenamespace/uikit";

function CustomAvatar() {
  return (
    <Avatar className="size-20">
      <Avatar.Image src="..." alt="..." />
      <Avatar.Fallback>XL</Avatar.Fallback>
    </Avatar>
  );
}

Customizing the component classes

To customize the Avatar component classes, you can use the @layer components directive.


Learn more.

@layer components {
  .avatar {
    @apply size-16 border-2 border-primary;
  }

  .avatar__fallback {
    @apply bg-gradient-to-br from-purple-500 to-pink-500;
  }
}

Namespace UIKit follows the BEM methodology to ensure component variants and states are reusable and easy to customize.

CSS Classes

The Avatar component uses these CSS classes:

Base Classes

  • .avatar - Base container with default size (size-10)
  • .avatar__image - Image element with aspect-square sizing
  • .avatar__fallback - Fallback container with centered content

Size Modifiers

  • .avatar--sm - Small avatar (size-8)
  • .avatar--md - Medium avatar (default, no additional styles)
  • .avatar--lg - Large avatar (size-12)

Variant Modifiers

  • .avatar--soft - Soft variant with lighter background

Color Modifiers

  • .avatar__fallback--default - Default text color
  • .avatar__fallback--accent - Accent text color
  • .avatar__fallback--success - Success text color
  • .avatar__fallback--warning - Warning text color
  • .avatar__fallback--danger - Danger text color

API Reference

Avatar Props

PropTypeDefaultDescription
size'sm' | 'md' | 'lg''md'Avatar size
color'default' | 'accent' | 'success' | 'warning' | 'danger''default'Fallback color theme
variant'default' | 'soft''default'Visual style variant
classNamestring-Additional CSS classes

Avatar.Image Props

PropTypeDefaultDescription
srcstring-Image source URL
srcSetstring-The image srcset attribute for responsive images
sizesstring-The image sizes attribute for responsive images
altstring-Alternative text for the image
asChildbooleanfalseMerge props onto the child element (e.g. next/image) instead of rendering a native img
onLoad(event: SyntheticEvent<HTMLImageElement>) => void-Callback when the image loads successfully
onError(event: SyntheticEvent<HTMLImageElement>) => void-Callback when there's an error loading the image
crossOrigin'anonymous' | 'use-credentials'-CORS setting for the image request
loading'eager' | 'lazy'-Native lazy loading attribute
classNamestring-Additional CSS classes

Avatar.Fallback Props

PropTypeDefaultDescription
delayMsnumber-Delay before showing fallback (prevents flash)
color'default' | 'accent' | 'success' | 'warning' | 'danger'-Override color from parent
classNamestring-Additional CSS classes