import { Image } from "@seed-design/react-image"; import { Primitive, type PrimitiveProps } from "@seed-design/react-primitive"; import { avatar, type AvatarVariantProps } from "@seed-design/css/recipes/avatar"; import { avatarStack, type AvatarStackVariantProps } from "@seed-design/css/recipes/avatar-stack"; import clsx from "clsx"; import * as React from "react"; import { useMemo } from "react"; import { createSlotRecipeContext } from "../../utils/createSlotRecipeContext"; const { PropsProvider, withProvider, withContext } = createSlotRecipeContext(avatar); //////////////////////////////////////////////////////////////////////////////////// export interface AvatarRootProps extends AvatarVariantProps, Image.RootProps {} export const AvatarRoot = withProvider(Image.Root, "root"); //////////////////////////////////////////////////////////////////////////////////// export interface AvatarImageProps extends Image.ContentProps {} export const AvatarImage = withContext(Image.Content, "image"); //////////////////////////////////////////////////////////////////////////////////// export interface AvatarFallbackProps extends Image.FallbackProps {} export const AvatarFallback = withContext( Image.Fallback, "fallback", ); //////////////////////////////////////////////////////////////////////////////////// export interface AvatarBadgeProps extends PrimitiveProps, React.HTMLAttributes {} export const AvatarBadge = withContext(Primitive.div, "badge"); //////////////////////////////////////////////////////////////////////////////////// export interface AvatarStackProps extends AvatarStackVariantProps, React.HTMLAttributes {} export const AvatarStack = React.forwardRef( ({ className, children, size, ...otherProps }, ref) => { const classNames = avatarStack({ size }); const avatars = React.Children.toArray(children); return ( ({ size }), [size])}>
{avatars.map((avatar, index) => ( // biome-ignore lint/suspicious/noArrayIndexKey: There is no unique key for each child
{avatar}
))}
); }, );