import type { AvatarGroupMember, AvatarGroupRendererOptions } from '../../types/built-in-renderer.types'; /** * The roster panel an avatar group's `+N` counter opens. * * ### Why a module singleton * At most one roster is open at a time — opening a second implicitly closes the * first — so one panel is created lazily, reused, and kept out of the DOM until * something asks for it. A panel per cell would mean thousands of detached * subtrees in a scrolled grid. `SparklineTooltip` uses the same shape for the * same reason. * * ### Why `position: fixed` * The panel lives on `document.body`, not inside the cell. A panel positioned * within the grid would be clipped by the scroll container it sits in, and * would scroll away from its own trigger. * * @packageDocumentation */ /** Called when a member row is activated. */ export type AvatarGroupMemberHandler = (member: AvatarGroupMember, event: MouseEvent) => void; export interface AvatarGroupOverlayRequest { /** The `+N` button. Anchors the panel and receives focus back on close. */ readonly trigger: HTMLElement; readonly members: readonly AvatarGroupMember[]; readonly options: AvatarGroupRendererOptions; readonly onSelect?: AvatarGroupMemberHandler; } /** Opens the roster for one cell, replacing any panel already showing. */ export declare function openAvatarGroupOverlay(request: AvatarGroupOverlayRequest): void; /** Closes the roster, if one is open. */ export declare function closeAvatarGroupOverlay(opts?: { restoreFocus?: boolean; }): void; /** Tears the panel out of the document entirely. */ export declare function destroyAvatarGroupOverlay(): void; //# sourceMappingURL=avatar-group-overlay.d.ts.map