Primitives
21

AvatarGroup

Overlapping stack of avatars. Each keeps a ring in the canvas colour, which is what stops two adjacent faces from merging into one shape — drawn with a box-shadow, so it costs no layout.

plain markup — no library on the page
rendered by aura-react
rendered by aura-vue
rendered by aura-svelte
built from aura-angular's own class helpers

Code

index.html
<div class="aura-avatar-group">
  <span role="img" aria-label="Ann Lee" class="aura-avatar"><span aria-hidden="true">AL</span></span>
  <span role="img" aria-label="Bo Ng" class="aura-avatar"><span aria-hidden="true">BN</span></span>
  <span role="img" aria-label="Cy Kim" class="aura-avatar"><span aria-hidden="true">CK</span></span>
</div>
Demo.tsx
import { Avatar, AvatarGroup } from '@ilomee/aura-react';

export default function Demo() {
  return (
    <AvatarGroup>
      <Avatar alt="Ann Lee" />
      <Avatar alt="Bo Ng" />
      <Avatar alt="Cy Kim" />
    </AvatarGroup>
  );
}
Demo.vue
<script setup lang="ts">
import { Avatar, AvatarGroup } from '@ilomee/aura-vue';
</script>

<template>
  <AvatarGroup>
    <Avatar initials="AL" alt="Ann Lee" />
    <Avatar initials="BN" alt="Bo Ng" />
  </AvatarGroup>
</template>
Demo.svelte
<script lang="ts">
  import { Avatar, AvatarGroup } from '@ilomee/aura-svelte';
</script>

<AvatarGroup>
  <Avatar initials="AL" alt="Ann Lee" />
  <Avatar initials="BN" alt="Bo Ng" />
</AvatarGroup>

Used as [auraAvatarGroup] — a directive you put on your own element.

demo.component.ts
import { AuraAvatar, AuraAvatarGroup } from '@ilomee/aura-angular';

@Component({
  standalone: true,
  imports: [AuraAvatar, AuraAvatarGroup],
  template: `<div auraAvatarGroup>
    <aura-avatar initials="AL" alt="Ann Lee" />
    <aura-avatar initials="BN" alt="Bo Ng" />
  </div>`,
})
export class DemoComponent {}

A directive — you choose the element, so there is no as input.

Props

Plain markup has no props — the classes below are the whole API. The four packages do nothing more than set these same classes for you.

No props — it only takes children.

No props — it only takes children.

No props — it only takes children.

No props — it only takes children.

Emitted classes

Every framework emits the same classes — that is what makes the four libraries look identical. You can use them directly, without any component library.

ClassRoleNotes
.aura-avatar-groupbaseRequired. A modifier does nothing without it.

Tokens and rules

components.css
overlap
var(--avatar-overlap)
ring
0 0 0 2px var(--canvas) — a shadow, not a border