import * as React from 'react';
type FriendStatus = 'online' | 'away' | 'busy' | 'offline' | 'none';
type FriendRowSize = 'regular' | 'large';
interface FriendAvatarProps {
avatarUrl?: string;
status: FriendStatus;
showPlaceholder?: boolean;
/** Visual density. Use `large` for wider tablet layouts. */
size?: FriendRowSize;
}
declare function FriendAvatar({ avatarUrl, status, showPlaceholder, size, }: FriendAvatarProps): import("react/jsx-runtime").JSX.Element | null;
interface FriendInfoProps {
name: string;
gameLabel?: string;
status: FriendStatus;
ownerBadge?: React.ReactNode;
/** Visual density. Use `large` for wider tablet layouts. */
size?: FriendRowSize;
}
declare function FriendInfo({ name, gameLabel, status, ownerBadge, size }: FriendInfoProps): import("react/jsx-runtime").JSX.Element;
interface FriendRowProps {
/** Friend display name. */
name: string;
/** Secondary line under the name — typically the presence / game label. */
gameLabel?: string;
/** Drives the status dot color and the `gameLabel` tint. */
status: FriendStatus;
/** Avatar (player card) URL — fills the left 44×44 tile. */
avatarUrl?: string;
/** Show the muted avatar tile when `avatarUrl` is missing. */
showAvatarPlaceholder?: boolean;
/** Badge shown to the right of the name (e.g. phosphor `` for party owner). */
ownerBadge?: React.ReactNode;
/** Slot rendered between the text block and the optional chevron. */
rightContent?: React.ReactNode;
/** Chevron rendered on the far right. Consumer supplies (e.g. phosphor ``). */
chevron?: React.ReactNode;
/** Visual density. Use `large` for wider tablet layouts. */
size?: FriendRowSize;
/** Row opacity (0–1). Consumers use this to dim non-Valorant / offline variants. */
opacity?: number;
/** Show the skeleton placeholder instead of the real row. */
isLoading?: boolean;
/** Extra classes merged onto the outer row wrapper. */
className?: string;
}
/**
* Single friend entry in the friends list — avatar with status dot, name
* (optionally flagged with a party-owner badge), presence label underneath,
* optional right-aligned slot, optional chevron.
*
* Data-free: the consumer resolves the avatar URL, formats the presence
* label, maps XMPP presence → `FriendStatus`, and supplies the owner /
* chevron icons as `ReactNode`. The row renders no card chrome — stack
* instances inside a `bg-card rounded-2xl overflow-hidden` container with
* `` between them to match the app's friends list.
*/
declare function FriendRow({ name, gameLabel, status, avatarUrl, showAvatarPlaceholder, ownerBadge, rightContent, chevron, size, opacity, isLoading, className, }: FriendRowProps): import("react/jsx-runtime").JSX.Element;
export { FriendAvatar, FriendInfo, FriendRow };
export type { FriendAvatarProps, FriendInfoProps, FriendRowProps, FriendRowSize, FriendStatus };
//# sourceMappingURL=friend-row.d.ts.map