| import * as React from 'react'; |
| import * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu'; |
| import { cn } from '@/lib/utils'; |
|
|
| const DropdownMenu = DropdownMenuPrimitive.Root; |
| const DropdownMenuTrigger = DropdownMenuPrimitive.Trigger; |
|
|
| const DropdownMenuContent = React.forwardRef< |
| React.ElementRef<typeof DropdownMenuPrimitive.Content>, |
| React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Content> |
| >(({ className, sideOffset = 4, ...props }, ref) => ( |
| <DropdownMenuPrimitive.Portal> |
| <DropdownMenuPrimitive.Content |
| ref={ref} |
| sideOffset={sideOffset} |
| className={cn( |
| 'z-50 min-w-[8rem] overflow-hidden rounded-lg border border-border bg-card p-1 text-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95', |
| className |
| )} |
| {...props} |
| /> |
| </DropdownMenuPrimitive.Portal> |
| )); |
| DropdownMenuContent.displayName = DropdownMenuPrimitive.Content.displayName; |
|
|
| const DropdownMenuItem = React.forwardRef< |
| React.ElementRef<typeof DropdownMenuPrimitive.Item>, |
| React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Item> |
| >(({ className, ...props }, ref) => ( |
| <DropdownMenuPrimitive.Item |
| ref={ref} |
| className={cn( |
| 'relative flex cursor-pointer select-none items-center rounded-md px-2 py-1.5 text-sm outline-none transition-colors focus:bg-secondary focus:text-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50', |
| className |
| )} |
| {...props} |
| /> |
| )); |
| DropdownMenuItem.displayName = DropdownMenuPrimitive.Item.displayName; |
|
|
| const DropdownMenuSeparator = React.forwardRef< |
| React.ElementRef<typeof DropdownMenuPrimitive.Separator>, |
| React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Separator> |
| >(({ className, ...props }, ref) => ( |
| <DropdownMenuPrimitive.Separator ref={ref} className={cn('-mx-1 my-1 h-px bg-border', className)} {...props} /> |
| )); |
| DropdownMenuSeparator.displayName = DropdownMenuPrimitive.Separator.displayName; |
|
|
| const DropdownMenuLabel = React.forwardRef< |
| React.ElementRef<typeof DropdownMenuPrimitive.Label>, |
| React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Label> |
| >(({ className, ...props }, ref) => ( |
| <DropdownMenuPrimitive.Label ref={ref} className={cn('px-2 py-1.5 text-sm font-semibold', className)} {...props} /> |
| )); |
| DropdownMenuLabel.displayName = DropdownMenuPrimitive.Label.displayName; |
|
|
| export { DropdownMenu, DropdownMenuTrigger, DropdownMenuContent, DropdownMenuItem, DropdownMenuSeparator, DropdownMenuLabel }; |
|
|