Default Avatar

A circle avatar in various sizes.

Rounded avatar
Usage Example
// Default Avatar (reactive — sized by the shared Alpine scope)
@avatar.Avatar(avatar.Config{
    Src:      "/assets/images/avatars/avatar-8.webp",
    Alt:      "Rounded avatar",
    Reactive: true,
})

Square Avatar

A square avatar in various sizes with an adjustable border radius.

Square avatar
Square Avatar
@avatar.Avatar(avatar.Config{
    Src:            "/assets/images/avatars/avatar-8.webp",
    Alt:            "Square avatar",
    Shape:          avatar.ShapeSquare,
    Radius:         avatar.RadiusMD,
    Reactive:       true,
    ReactiveRadius: true,
})

Avatar with Icon Placeholder

An avatar in various colors with an icon placeholder.

Avatar with Icon Placeholder
@avatar.Avatar(avatar.Config{Variant: avatar.Default, Reactive: true})
@avatar.Avatar(avatar.Config{Variant: avatar.Inverse, Reactive: true})
@avatar.Avatar(avatar.Config{Variant: avatar.Primary, Reactive: true})
@avatar.Avatar(avatar.Config{Variant: avatar.Secondary, Reactive: true})
@avatar.Avatar(avatar.Config{Variant: avatar.Info, Reactive: true})
@avatar.Avatar(avatar.Config{Variant: avatar.Success, Reactive: true})
@avatar.Avatar(avatar.Config{Variant: avatar.Warning, Reactive: true})
@avatar.Avatar(avatar.Config{Variant: avatar.Danger, Reactive: true})

Avatar with Initials Placeholder

An avatar in various colors with an initials placeholder.

Avatar with Initials Placeholder
@avatar.Avatar(avatar.Config{Initials: "JS", Variant: avatar.Default, Reactive: true})
@avatar.Avatar(avatar.Config{Initials: "JS", Variant: avatar.Inverse, Reactive: true})
@avatar.Avatar(avatar.Config{Initials: "JS", Variant: avatar.Primary, Reactive: true})
@avatar.Avatar(avatar.Config{Initials: "JS", Variant: avatar.Secondary, Reactive: true})
@avatar.Avatar(avatar.Config{Initials: "JS", Variant: avatar.Info, Reactive: true})
@avatar.Avatar(avatar.Config{Initials: "JS", Variant: avatar.Success, Reactive: true})
@avatar.Avatar(avatar.Config{Initials: "JS", Variant: avatar.Warning, Reactive: true})
@avatar.Avatar(avatar.Config{Initials: "JS", Variant: avatar.Danger, Reactive: true})

Avatar with Border

An avatar with a border in various colors.

Info border avatar
Success border avatar
Warning border avatar
Danger border avatar
Avatar with Border
@avatar.Avatar(avatar.Config{Src: "...", Border: true, BorderColor: "border-info", Reactive: true})
@avatar.Avatar(avatar.Config{Src: "...", Border: true, BorderColor: "border-success", Reactive: true})
@avatar.Avatar(avatar.Config{Src: "...", Border: true, BorderColor: "border-warning", Reactive: true})
@avatar.Avatar(avatar.Config{Src: "...", Border: true, BorderColor: "border-danger", Reactive: true})

Avatar with Status Indicator

An avatar with a status indicator in various colors.

Offline
Info
Online
Away
Busy
Avatar with Status Indicator
@avatar.Avatar(avatar.Config{Src: "...", Status: avatar.StatusOffline, Reactive: true})
@avatar.Avatar(avatar.Config{Src: "...", Status: avatar.StatusInfo, Reactive: true})
@avatar.Avatar(avatar.Config{Src: "...", Status: avatar.StatusSuccess, Reactive: true})
@avatar.Avatar(avatar.Config{Src: "...", Status: avatar.StatusWarning, Reactive: true})
@avatar.Avatar(avatar.Config{Src: "...", Status: avatar.StatusDanger, Reactive: true})

Stacked Avatars

A stacked avatar group in various sizes.

Aiden Walker
Emily Rodriguez
Alex Martinez
Bob Johnson
Stacked Avatars
@avatar.AvatarStack(avatar.StackConfig{
    Label:    "Team members",
    Reactive: true,
    Items: []avatar.Config{
        {Src: "/assets/images/avatars/avatar-8.webp", Alt: "Aiden Walker"},
        {Src: "/assets/images/avatars/avatar-3.webp", Alt: "Emily Rodriguez"},
        {Src: "/assets/images/avatars/avatar-5.webp", Alt: "Alex Martinez"},
        {Src: "/assets/images/avatars/avatar-1.webp", Alt: "Bob Johnson"},
    },
})

Fixed Size (image load/error)

Set an explicit Size (not Reactive) for a fixed avatar. With a Name and no/failed Src, the avatar falls back to initials.

Loaded
Error
Fixed Size (image load/error)
@avatar.Avatar(avatar.Config{Src: imgURL, Name: "Load Test", Size: avatar.SizeMD})
@avatar.Avatar(avatar.Config{Src: "/missing.png", Name: "Error Fallback", Size: avatar.SizeMD})
@avatar.Avatar(avatar.Config{Name: "Initials Only", Size: avatar.SizeMD, Variant: avatar.Primary})

API Reference

PropTypeDefaultDescription
Srcstring""Image URL (falls back to initials/icon on error).
Altstring""Image alt text.
Namestring""Full name used to derive initials when Src is missing/broken.
Initialsstring""Explicit initials (overrides Name-derived).
SizeSizeSizeMDFixed size: "xs", "sm", "md", "lg", "xl", "2xl" (ignored when Reactive).
VariantVariantDefaultColor for initials/icon: default, primary, secondary, info, success, warning, danger.
ShapeShapeShapeCircleShape: "circle" or "square".
RadiusRadiusRadiusDefaultSquare-avatar radius: "none", "xs", "sm", "md", "lg".
BorderboolfalseAdd a ring border.
BorderColorstring""Tailwind border color class for the ring.
StatusStatus""Presence dot: "offline", "info", "success", "warning", "danger".
Icontempl.ComponentnilCustom placeholder icon (overrides the default user icon).
ReactiveboolfalseRead size classes from the parent Alpine scope (avatarSizeClass) instead of Size.
ReactiveRadiusboolfalseRead square radius classes from the parent Alpine scope (avatarRadiusClass).
RootClassstring""Extra classes on the avatar root.
StackConfig.Items[]avatar.ConfignilAvatar configs rendered as an overlapping group.
StackConfig.Labelstring"Avatar group"Accessible label for the stacked avatar group.
StackConfig.RootClassstring""Extra classes on the stack root.
StackConfig.ReactiveboolfalseApply the shared reactive size binding to every stack item.