import type { HTMLAttributes } from 'svelte/elements'; import type { AvatarProps } from '../../primitives/Avatar/index.js'; import type { AvatarGroupSlots, AvatarGroupVariants } from './avatar-group.variants.js'; /** * @summary An overlapping row of avatars with a +N overflow chip. * @description Stacks avatars into an overlapping row with an optional "+N" overflow chip, * for a set of collaborators, assignees or participants. Pass an `items` array of Avatar * props; a shared `size` and a cut-out ring apply to every avatar so the stack reads cleanly * on any background. * * @tag display * @related Avatar * * @example * ```svelte * * ``` * * @example * ```svelte * * ``` */ export interface AvatarGroupProps extends AvatarGroupVariants, Omit, 'children' | 'class'> { /** The avatars to stack. Each entry is a full set of Avatar props (src, name, status, …). */ items: AvatarProps[]; /** Shared size applied to every avatar and the overflow chip. One of xs, sm, md (default), lg, xl, 2xl. */ size?: AvatarProps['size']; /** * Maximum avatars to render. When `items` exceeds it, `max - 1` avatars are shown plus a * single "+N" overflow chip (N is the count of hidden avatars), so the total rendered * count is exactly `max`. Unset (or `0`/negative) shows every avatar with no chip; use `≥ 2` * so the chip sits alongside at least one visible face. * @summary How many avatars to show before the rest become a +N chip. */ max?: number; /** Overlap amount between avatars: tight, normal (default), loose. */ spacing?: 'tight' | 'normal' | 'loose'; /** * Ring colour drawn around each avatar so the overlap reads as a cut-out. Any CSS colour; * defaults to the base background so the stack looks punched out of the page. * @default 'var(--color-surface-base)' */ borderColor?: string; /** Additional CSS class merged onto the root row. */ class?: string; /** Strip all default styles; combine with slotClasses to rebuild from scratch. */ unstyled?: boolean; /** Per-slot class overrides. Slots: base | overflow */ slotClasses?: Partial>; /** * Apply a named preset registered via ``. * Prefer this over `class` overrides when the requested look falls outside the semantic palette. */ preset?: string; } export { default as AvatarGroup } from './AvatarGroup.svelte'; export { type AvatarGroupVariants, avatarGroupVariants } from './avatar-group.variants.js';