Skip to content

Avatar group

The Avatar group component stacks multiple avatars into an overlapping row, optionally collapsing the overflow into a "+N" chip. It is useful for showing the members of a team, the participants of a conversation, or the assignees of a task. Avatars placed in the default slot inherit the group's size, so they are sized uniformly without extra configuration. Avatars stack from left to right, and the gap between them is cut out rather than painted, so the group blends into any background.

Accessibility

The group is exposed with role="group"; pass aria-label to describe it for assistive technology. When avatars overflow, the "+N" indicator carries a tooltip listing the names of the hidden avatars (taken from their alt or fallback-initials), so the collapsed members remain discoverable.

Props

max?: number
The maximum number of avatars to display. Remaining avatars are summarized in a "+N" overflow chip.

overlap?: number
The fraction of the avatar size that each avatar overlaps the previous one.
Default: 0.3

size?: number
The size of the avatars in pixels. Avatars without their own size inherit this value.
Default: 32

Slots

default
The avatars to stack. Place FluxAvatar components here.

Examples

Basic

A basic stack of avatars.

<template>
    <FluxAvatarGroup>
        <FluxAvatar fallback-initials="BM"/>
        <FluxAvatar fallback-initials="JD"/>
        <FluxAvatar fallback-initials="AS"/>
    </FluxAvatarGroup>
</template>

<script
    setup
    lang="ts">
    import { FluxAvatar, FluxAvatarGroup } from '@flux-ui/components';
</script>

Overflow

A stack that collapses the overflow into a "+N" chip.

<template>
    <FluxAvatarGroup
        :max="3"
        :size="40">
        <FluxAvatar fallback-initials="BM"/>
        <FluxAvatar fallback-initials="JD"/>
        <FluxAvatar fallback-initials="AS"/>
        <FluxAvatar fallback-initials="KL"/>
        <FluxAvatar fallback-initials="MN"/>
        <FluxAvatar fallback-initials="PQ"/>
    </FluxAvatarGroup>
</template>

<script
    setup
    lang="ts">
    import { FluxAvatar, FluxAvatarGroup } from '@flux-ui/components';
</script>

Labelled

A labelled group whose "+N" indicator reveals the names of the hidden members on hover.

<template>
    <FluxAvatarGroup
        :max="3"
        :size="40"
        aria-label="Project members">
        <FluxAvatar
            alt="Mary Berry"
            fallback-initials="MB"/>
        <FluxAvatar
            alt="Paul Hollywood"
            fallback-initials="PH"/>
        <FluxAvatar
            alt="Prue Leith"
            fallback-initials="PL"/>
        <FluxAvatar
            alt="Noel Fielding"
            fallback-initials="NF"/>
        <FluxAvatar
            alt="Sandi Toksvig"
            fallback-initials="ST"/>
        <FluxAvatar
            alt="Matt Lucas"
            fallback-initials="ML"/>
    </FluxAvatarGroup>
</template>

<script
    setup
    lang="ts">
    import { FluxAvatar, FluxAvatarGroup } from '@flux-ui/components';
</script>

On a background

The gap between avatars is cut out, so the group works on any background colour.

<template>
    <div style="padding: 15px; background: var(--gray-100); border-radius: var(--radius)">
        <FluxAvatarGroup :max="4">
            <FluxAvatar src="https://i.pravatar.cc/64?img=11"/>
            <FluxAvatar src="https://i.pravatar.cc/64?img=12"/>
            <FluxAvatar fallback-initials="BM"/>
            <FluxAvatar fallback-initials="JD"/>
            <FluxAvatar fallback-initials="AS"/>
            <FluxAvatar fallback-initials="KL"/>
        </FluxAvatarGroup>
    </div>
</template>

<script
    setup
    lang="ts">
    import { FluxAvatar, FluxAvatarGroup } from '@flux-ui/components';
</script>

Used components