Components
npx shadcn@latest add https://21st.dev/r/ShadcnStudio/basic-avatarLoading preview...
import { PlusIcon } from 'lucide-react'
import { Avatar, AvatarFallback, AvatarImage } from '@/components/ui/avatar'
import {
DropdownMenu,
DropdownMenuContent,
DropdownMenuItem,
DropdownMenuTrigger
} from '@/components/ui/dropdown-menu'
const avatars = [
{
src: 'https://cdn.shadcnstudio.com/ss-assets/avatar/avatar-3.png',
fallback: 'OS',
name: 'Olivia Sparks'
},
{
src: 'https://cdn.shadcnstudio.com/ss-assets/avatar/avatar-6.png',
fallback: 'HL',
name: 'Howard Lloyd'
},
{
src: 'https://cdn.shadcnstudio.com/ss-assets/avatar/avatar-5.png',
fallback: 'HR',
name: 'Hallie Richards'
},
{
src: 'https://cdn.shadcnstudio.com/ss-assets/avatar/avatar-16.png',
fallback: 'JW',
name: 'Jenny Wilson'
},
{
src: 'https://cdn.shadcnstudio.com/ss-assets/avatar/avatar-1.png',
fallback: 'DR',
name: 'Darlene Robertson'
},
{
src: 'https://cdn.shadcnstudio.com/ss-assets/avatar/avatar-2.png',
fallback: 'LA',
name: 'Leslie Alexander'
}
]
const AvatarGroupDropdownDemo = () => {
return (
<div className='flex -space-x-2'>
{avatars.slice(0, 3).map((avatar, index) => (
<Avatar key={index} className='ring-background ring-2'>
<AvatarImage src={avatar.src} alt={avatar.name} />
<AvatarFallback className='text-xs'>{avatar.fallback}</AvatarFallback>
</Avatar>
))}
<DropdownMenu>
<DropdownMenuTrigger asChild>
<button className='bg-muted has-focus-visible:ring-ring/50 ring-background flex size-8 shrink-0 cursor-pointer items-center justify-center rounded-full ring-2'>
<PlusIcon className='size-4' />
<span className='sr-only'>Add</span>
</button>
</DropdownMenuTrigger>
<DropdownMenuContent>
{avatars.slice(3).map((avatar, index) => (
<DropdownMenuItem key={index}>
<Avatar>
<AvatarImage src={avatar.src} alt={avatar.name} />
<AvatarFallback className='text-xs'>{avatar.fallback}</AvatarFallback>
</Avatar>
<span>{avatar.name}</span>
</DropdownMenuItem>
))}
</DropdownMenuContent>
</DropdownMenu>
</div>
)
}
export default AvatarGroupDropdownDemo
Loading preview...
Loading preview...
Loading preview...
Loading preview...
Loading preview...
Loading preview...
Loading preview...
Loading preview...
Loading preview...
Loading preview...
Loading preview...
Loading preview...
Loading preview...
Loading preview...
Loading preview...
Loading preview...
Loading preview...
Loading preview...