'use client'; import * as React from 'react'; import { cn } from '@workspace/ui/lib/utils'; import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, type TooltipProps, type TooltipContentProps, } from '@/registry/components/tooltip'; type Align = 'start' | 'center' | 'end'; type AvatarProps = TooltipProps & { children: React.ReactNode; align?: Align; invertOverlap?: boolean; }; function AvatarContainer({ children, align, invertOverlap, ...props }: AvatarProps) { return ( span]:transition-[translate] [&>span]:duration-300 [&>span]:ease-in-out', '[&:hover_span:first-of-type]:translate-y-[var(--avatar-translate-pct)]', )} > {children} ); } type AvatarGroupTooltipProps = TooltipContentProps; function AvatarGroupTooltip(props: AvatarGroupTooltipProps) { return ; } type AvatarGroupProps = Omit, 'translate'> & { children: React.ReactElement[]; invertOverlap?: boolean; translate?: number; size?: string | number; border?: string | number; columnSize?: string | number; align?: Align; tooltipProps?: Omit; }; function AvatarGroup({ ref, children, className, invertOverlap = false, size = '43px', border = '3px', columnSize = '37px', align = 'end', translate = -30, tooltipProps = { side: 'top', sideOffset: 12 }, ...props }: AvatarGroupProps) { const maskRatio = Math.abs(translate / 100); const alignOffset = align === 'start' ? 0 : align === 'center' ? maskRatio / 2 : maskRatio; const maskBase = alignOffset - maskRatio / 2; const maskFactor = 1 - alignOffset + maskRatio / 2; return (
{children?.map((child, index) => ( {child} ))}
); } export { AvatarGroup, AvatarGroupTooltip, type AvatarGroupProps, type AvatarGroupTooltipProps, };