ArcaneJaspr Codex
Documentation
ArcaneAvatarGroup
Stacked avatar display with overflow indicator
Live Demo
Avatar Group
AB
CD
EF
GH
+2
With Avatar Badge
JD
AB
CD

ArcaneAvatarGroup#

A component for displaying multiple avatars in a stacked layout with overflow handling.

Basic Usage#

ArcaneAvatarGroup(
  avatars: [
    ArcaneAvatar(initials: 'AB'),
    ArcaneAvatar(initials: 'CD'),
    ArcaneAvatar(initials: 'EF'),
  ],
)

Properties#

PropertyTypeDefaultDescription
avatars List<ArcaneAvatar> required Avatar components
maxVisible int 3 Max avatars before +N
overlap double 12 Overlap amount in px
direction StackDirection toRight Stack direction

Stack Directions#

Stack to Right (Default)#

ArcaneAvatarGroup.toRight(
  avatars: avatarList,
  maxVisible: 4,
)

Stack to Left#

ArcaneAvatarGroup.toLeft(
  avatars: avatarList,
  maxVisible: 4,
)

With Overflow#

ArcaneAvatarGroup(
  avatars: [
    ArcaneAvatar(initials: 'AB'),
    ArcaneAvatar(initials: 'CD'),
    ArcaneAvatar(initials: 'EF'),
    ArcaneAvatar(initials: 'GH'),
    ArcaneAvatar(initials: 'IJ'),
    ArcaneAvatar(initials: 'KL'),
  ],
  maxVisible: 3,  // Shows: AB, CD, EF, +3
)

ArcaneAvatarBadge#

A status badge that can be positioned on an avatar.

Basic Usage#

ArcaneDiv(
  styles: const ArcaneStyleData(position: Position.relative),
  children: [
    ArcaneAvatar(initials: 'JD'),
    ArcaneAvatarBadge.online(),
  ],
)

Factory Constructors#

Online Status#

ArcaneAvatarBadge.online()  // Green dot

Busy Status#

ArcaneAvatarBadge.busy()  // Red dot

Away Status#

ArcaneAvatarBadge.away()  // Yellow dot

Offline Status#

ArcaneAvatarBadge.offline()  // Gray dot

Custom Badge#

ArcaneAvatarBadge(
  status: AvatarBadgeStatus.custom,
  color: '#10b981',
  pulse: true,
)

Examples#

Team Members#

ArcaneColumn(
  gapSize: Gap.md,
  children: [
    ArcaneText('Team Members', weight: FontWeight.bold),
    ArcaneAvatarGroup.toRight(
      avatars: teamMembers.map((m) => ArcaneAvatar(
        imageUrl: m.avatarUrl,
        initials: m.initials,
      )).toList(),
      maxVisible: 5,
    ),
  ],
)

User Status List#

for (final user in users)
  ArcaneRow(
    gapSize: Gap.md,
    children: [
      ArcaneDiv(
        styles: const ArcaneStyleData(position: Position.relative),
        children: [
          ArcaneAvatar(initials: user.initials),
          ArcaneAvatarBadge(status: user.status),
        ],
      ),
      ArcaneText(user.name),
    ],
  ),