Dropdown Menu 4

PreviousNext

Contact list dropdown with avatars, email display, and send action buttons

Docs
shadcn-studiocomponent

Preview

Loading preview…
registry/new-york/components/dropdown-menu/dropdown-menu-04.tsx
import { Avatar, AvatarFallback, AvatarImage } from '@/registry/new-york/ui/avatar'
import { Button } from '@/registry/new-york/ui/button'
import {
  DropdownMenu,
  DropdownMenuContent,
  DropdownMenuGroup,
  DropdownMenuItem,
  DropdownMenuLabel,
  DropdownMenuTrigger
} from '@/registry/new-york/ui/dropdown-menu'

const listItems = [
  {
    src: 'https://cdn.shadcnstudio.com/ss-assets/avatar/avatar-6.png',
    fallback: 'AD',
    name: 'Angel Dorwart',
    mail: 'sbaker@hotmail.com'
  },
  {
    src: 'https://cdn.shadcnstudio.com/ss-assets/avatar/avatar-7.png',
    fallback: 'SR',
    name: 'Skylar Rosser',
    mail: 'gbaker@yahoo.com'
  },
  {
    src: 'https://cdn.shadcnstudio.com/ss-assets/avatar/avatar-8.png',
    fallback: 'DB',
    name: 'Dulce Botosh',
    mail: 'tlee@gmail.com'
  },
  {
    src: 'https://cdn.shadcnstudio.com/ss-assets/avatar/avatar-9.png',
    fallback: 'AS',
    name: 'Ahmad Stanton',
    mail: 'kdavis@hotmail.com'
  },
  {
    src: 'https://cdn.shadcnstudio.com/ss-assets/avatar/avatar-10.png',
    fallback: 'RG',
    name: 'Randy Gouse',
    mail: 'ijackson@yahoo.com'
  }
]

const DropdownMenuItemActionDemo = () => {
  return (
    <DropdownMenu>
      <DropdownMenuTrigger asChild>
        <Button variant='outline'>Menu item with action</Button>
      </DropdownMenuTrigger>
      <DropdownMenuContent className='w-91'>
        <DropdownMenuLabel>Contact List</DropdownMenuLabel>
        <DropdownMenuGroup>
          {listItems.map((item, index) => (
            <DropdownMenuItem key={index} className='justify-between'>
              <Avatar>
                <AvatarImage src={item.src} alt={item.name} />
                <AvatarFallback className='text-xs'>{item.fallback}</AvatarFallback>
              </Avatar>
              <div className='flex flex-1 flex-col'>
                <span className='text-popover-foreground'>{item.name}</span>
                <span className='text-muted-foreground text-xs'>{item.mail}</span>
              </div>
              <Button variant='secondary' className='h-7 cursor-pointer rounded-md px-2'>
                Send
              </Button>
            </DropdownMenuItem>
          ))}
          <DropdownMenuItem>
            <Button className='grow'>Add Contact</Button>
          </DropdownMenuItem>
        </DropdownMenuGroup>
      </DropdownMenuContent>
    </DropdownMenu>
  )
}

export default DropdownMenuItemActionDemo

Installation

npx shadcn@latest add @shadcn-studio/dropdown-menu-04

Usage

import { DropdownMenu04 } from "@/components/dropdown-menu-04"
<DropdownMenu04 />