Skip to content

Latest commit

 

History

History
149 lines (90 loc) · 4.74 KB

avatar.md

File metadata and controls

149 lines (90 loc) · 4.74 KB
product title githubLabel
joy-ui
React Avatar component
component: avatar

Avatar

An avatar is a graphical representation of a user's identity.

Introduction

The Avatar component can be used to display graphical information about a user in places such as menus, tables, and chats.

{{"demo": "AvatarUsage.js", "hideToolbar": true}}

{{"component": "modules/components/ComponentLinkHeader.js", "design": false}}

Component

After installation, you can start building with this component using the following basic elements:

import Avatar from '@mui/joy/Avatar';

export default function MyApp() {
  return <Avatar />;
}

Basics

By default, the Avatar component displays a generic Person Icon. Wrap it around a string to display plain text, or use the src prop to display an image.

Anatomy

The Avatar component is composed of a root <div> that may wrap around an <svg>, an <img>, or a string:

<div class="JoyAvatar-root">
  <!-- Avatar contents -->
</div>

Customization

Text Avatar

Wrap the Avatar component around a string to display text. Note that the Avatar is designed to comfortably fit two letters at most—for instance, a user's initials:

{{"demo": "InitialAvatars.js"}}

Image Avatar

Insert images into the Avatar by defining a path inside the src prop, just like you would with an HTML <img> element. Make sure to to write a meaningful description for the alt prop.

{{"demo": "ImageAvatars.js"}}

Image fallbacks

If an error occurs while loading the Avatar's image, it will fall back to the following alternatives (in this order):

  1. The provided child string
  2. The first letter of the alt text
  3. The default generic icon

{{"demo": "FallbackAvatars.js"}}

Variants

The Avatar component supports Joy UI's four global variants: soft (default), solid, outlined, and plain.

{{"demo": "AvatarVariants.js"}}

:::success To learn how to add more variants to the component, check out Themed components—Extend variants. :::

Sizes

The Avatar component comes in three sizes: sm, md (the default), and lg:

{{"demo": "AvatarSizes.js"}}

:::success To learn how to add custom sizes to the component, check out Themed components—Extend sizes. :::

Usage with the Badge

Combine the Avatar component with the Badge to visually communicate more complex information about a user's status:

{{"demo": "BadgeAvatars.js"}}

Usage with the Avatar Group

Use the Avatar Group component to group multiple Avatars together.

import AvatarGroup from '@mui/joy/AvatarGroup';

{{"demo": "GroupedAvatars.js"}}

Quantity within a group

The Avatar Group does not provide built-in props to control the maximum or the total number of Avatars within a group. This is intentionally left open-ended to give you broader options for customization.

The demo below shows an example of an Avatar Group that maxes out at five; all Avatars beyond the first four are lumped together in the fifth Avatar, which displays the total number hidden:

{{"demo": "MaxAndTotalAvatars.js"}}

Consistent appearance

The Avatar component exposes meaningful CSS variables to communicate with Avatar Group. You can apply those variables to other non-Avatar components to mimic the Avatar's appearance inside of a group. This customization technique makes your interface more resilient to changes, as any style changes applied to the Avatar will also be applied to the other components in the group.

Here is an example using an Icon Button with its styles defined by the Avatar's CSS variables:

{{"demo": "EllipsisAvatarAction.js"}}

Overlapping order

By default, the first Avatar in the group sits behind the second, which sits behind the third, and so on. You can reverse the overlapping order by reversing the order of the Avatars and using the CSS flexDirection: row-reverse property in the Avatar Group:

{{"demo": "OverlapAvatarGroup.js"}}

Vertical stacking

To render the Avatar Group vertically, add the CSS writing-mode: vertical-rl property and rotate the interior element (if one is present) by -90 degrees.

:::info This approach is preferable because it preserves the overlapping offset between Avatars; the alternative—flexDirection: column—does not. :::

{{"demo": "VerticalAvatarGroup.js"}}

CSS variable playground

Play around with the CSS variables available to the Avatar component to see how the design changes. You can use these to customize the component with both the sx prop and the theme.

{{"demo": "AvatarGroupVariables.js", "hideToolbar": true }}