

<Preview name="AvatarGroupHeroExample" />

## Overview [#overview]

The `AvatarGroup` component is a wrapper that arranges multiple `Avatar` components with advanced features like overlapping effects, hover animations, and integrated tooltips. It uses the base [Avatar](/primitives/avatar) component internally, adding layout and interaction capabilities specifically designed for displaying groups of users.

## Usage [#usage]

```tsx showLineNumbers
import {
  AvatarGroup,
  AvatarGroupTooltip,
  Avatar,
  AvatarFallback,
  AvatarImage,
} from "@tilt-legal/cubitt-components/primitives";
```

```tsx showLineNumbers
<AvatarGroup>
  <Avatar>
    <AvatarImage src="/avatar1.jpg" alt="User 1" />
    <AvatarFallback>U1</AvatarFallback>
    <AvatarGroupTooltip>
      <p>User 1</p>
    </AvatarGroupTooltip>
  </Avatar>
  <Avatar>
    <AvatarImage src="/avatar2.jpg" alt="User 2" />
    <AvatarFallback>U2</AvatarFallback>
    <AvatarGroupTooltip>
      <p>User 2</p>
    </AvatarGroupTooltip>
  </Avatar>
</AvatarGroup>
```

## Examples [#examples]

### Default [#default]

<Tabs className="bg-transparent border-none rounded-none" items="['Preview', 'Code']">
  <Tab value="Preview" className="p-0">
    <Preview name="AvatarGroupDefaultExample" />
  </Tab>

  <Tab value="Code">
    ```tsx
    import {
      AvatarGroup,
      AvatarGroupTooltip,
      Avatar,
      AvatarFallback,
      AvatarImage,
    } from "@tilt-legal/cubitt-components/primitives";

    <AvatarGroup>
      <Avatar>
        <AvatarImage
            src="https://tilt.legal/_next/image?url=%2Fapi%2Fmedia%2Ffile%2Fisaac-wong-1.jpg&w=1080&q=75"
            alt="Isaac Wong"
          />
          <AvatarFallback>IW</AvatarFallback>
        <AvatarGroupTooltip>
          <p>Isaac Wong</p>
        </AvatarGroupTooltip>
      </Avatar>
      <Avatar>
        <AvatarImage
            src="https://tilt.legal/_next/image?url=%2Fapi%2Fmedia%2Ffile%2Fcooper-corbett-1.jpg&w=1080&q=75"
            alt="Cooper Corbett"
          />
          <AvatarFallback>CC</AvatarFallback>
        <AvatarGroupTooltip>
          <p>Cooper Corbett</p>
        </AvatarGroupTooltip>
      </Avatar>
      <Avatar>
        <AvatarImage
            src="https://tilt.legal/_next/image?url=%2Fapi%2Fmedia%2Ffile%2Fsandon-lai.jpg&w=640&q=75"
            alt="Sandon Lai"
          />
          <AvatarFallback
        </AvatarGroupTooltip>
      </Avatar>
    </AvatarGroup>;
    ```
  </Tab>
</Tabs>

### With Count [#with-count]

<Tabs className="bg-transparent border-none rounded-none" items="['Preview', 'Code']">
  <Tab value="Preview" className="p-0">
    <Preview name="AvatarGroupWithCountExample" />
  </Tab>

  <Tab value="Code">
    ```tsx
    import {
      AvatarGroup,
      AvatarGroupTooltip,
      Avatar,
      AvatarFallback,
      AvatarImage,
    } from "@tilt-legal/cubitt-components/primitives";

    <AvatarGroup>
      <Avatar>
        <AvatarImage
          src="https://tilt.legal/_next/image?url=%2Fapi%2Fmedia%2Ffile%2Fisaac-wong-1.jpg&w=1080&q=75"
          alt="Isaac Wong"
        />
        <AvatarFallback>IW</AvatarFallback>
        <AvatarGroupTooltip>
          <p>Isaac Wong</p>
        </AvatarGroupTooltip>
      </Avatar>
      <Avatar>
        <AvatarImage
          src="https://tilt.legal/_next/image?url=%2Fapi%2Fmedia%2Ffile%2Fcooper-corbett-1.jpg&w=1080&q=75"
          alt="Cooper Corbett"
        />
        <AvatarFallback>CC</AvatarFallback>
        <AvatarGroupTooltip>
          <p>Cooper Corbett</p>
        </AvatarGroupTooltip>
      </Avatar>
      <Avatar>
        <AvatarImage
          src="https://tilt.legal/_next/image?url=%2Fapi%2Fmedia%2Ffile%2Fsandon-lai.jpg&w=640&q=75"
          alt="Sandon Lai"
        />
        <AvatarFallback>SL</AvatarFallback>
        <AvatarGroupTooltip>
          <p>Sandon Lai</p>
        </AvatarGroupTooltip>
      </Avatar>
      <Avatar>
        <AvatarFallback>+5</AvatarFallback>
        <AvatarGroupTooltip>
          <p>5 more users</p>
        </AvatarGroupTooltip>
      </Avatar>
    </AvatarGroup>;
    ```
  </Tab>
</Tabs>

### Inverted Overlap [#inverted-overlap]

<Tabs className="bg-transparent border-none rounded-none" items="['Preview', 'Code']">
  <Tab value="Preview" className="p-0">
    <Preview name="AvatarGroupInvertedOverlapExample" />
  </Tab>

  <Tab value="Code">
    ```tsx
    import {
      AvatarGroup,
      AvatarGroupTooltip,
      Avatar,
      AvatarFallback,
      AvatarImage,
    } from "@tilt-legal/cubitt-components/primitives";

    <AvatarGroup invertOverlap>
      <Avatar>
        <AvatarImage
          src="https://tilt.legal/_next/image?url=%2Fapi%2Fmedia%2Ffile%2Fisaac-wong-1.jpg&w=1080&q=75"
          alt="Isaac Wong"
        />
        <AvatarFallback>IW</AvatarFallback>
        <AvatarGroupTooltip>
          <p>Isaac Wong</p>
        </AvatarGroupTooltip>
      </Avatar>
      <Avatar>
        <AvatarImage
          src="https://tilt.legal/_next/image?url=%2Fapi%2Fmedia%2Ffile%2Fcooper-corbett-1.jpg&w=1080&q=75"
          alt="Cooper Corbett"
        />
        <AvatarFallback>CC</AvatarFallback>
        <AvatarGroupTooltip>
          <p>Cooper Corbett</p>
        </AvatarGroupTooltip>
      </Avatar>
      <Avatar>
        <AvatarImage
          src="https://tilt.legal/_next/image?url=%2Fapi%2Fmedia%2Ffile%2Fsandon-lai.jpg&w=640&q=75"
          alt="Sandon Lai"
        />
        <AvatarFallback>SL</AvatarFallback>
        <AvatarGroupTooltip>
          <p>Sandon Lai</p>
        </AvatarGroupTooltip>
      </Avatar>
      <Avatar>
        <AvatarFallback>+2</AvatarFallback>
        <AvatarGroupTooltip>
          <p>2 more users</p>
        </AvatarGroupTooltip>
      </Avatar>
    </AvatarGroup>;
    ```
  </Tab>
</Tabs>

## Props [#props]

### AvatarGroup [#avatargroup]

| Prop            | Type                             | Description                                           |
| --------------- | -------------------------------- | ----------------------------------------------------- |
| `children`      | `React.ReactElement[]`           | Array of Avatar components to display in the group    |
| `invertOverlap` | `boolean`                        | Inverts the overlap direction of avatars              |
| `translate`     | `number`                         | Percentage for hover translation effect (-30 default) |
| `size`          | `string \| number`               | Size of each avatar (43px default)                    |
| `border`        | `string \| number`               | Border width around avatars (3px default)             |
| `columnSize`    | `string \| number`               | Width of each avatar column (37px default)            |
| `align`         | `"start" \| "center" \| "end"`   | Vertical alignment of avatars (end default)           |
| `tooltipProps`  | `Omit<TooltipProps, "children">` | Props to pass to tooltip components                   |
| `className`     | `string`                         | Additional CSS classes to apply to the group          |
| `...props`      | `React.ComponentProps<"div">`    | All other div HTML attributes                         |

### AvatarGroupTooltip [#avatargrouptooltip]

| Prop        | Type                                          | Description                                    |
| ----------- | --------------------------------------------- | ---------------------------------------------- |
| `children`  | `React.ReactNode`                             | Content to display in the tooltip              |
| `className` | `string`                                      | Additional CSS classes to apply to the tooltip |
| `...props`  | `React.ComponentProps<typeof TooltipContent>` | All other tooltip content props                |
