import * as React from 'react'; import * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu'; import { type ElementProps } from '../../types'; import { cn } from '../../utils/cn'; import { Dot } from '../dot'; import { CheckIcon, ChevronRightIcon } from '../icons'; const DropdownMenu = DropdownMenuPrimitive.Root; const DropdownMenuTrigger = DropdownMenuPrimitive.Trigger; const DropdownMenuGroup = DropdownMenuPrimitive.Group; const DropdownMenuPortal = DropdownMenuPrimitive.Portal; const DropdownMenuSub = DropdownMenuPrimitive.Sub; const DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup; export interface DropdownMenuProps extends ElementProps {} const DropdownMenuSubTrigger = React.forwardRef< React.ElementRef, ElementProps & { inset?: boolean; } >(({ className, inset, children, ...props }, ref) => ( {children} )); DropdownMenuSubTrigger.displayName = DropdownMenuPrimitive.SubTrigger.displayName; const DropdownMenuSubContent = React.forwardRef< React.ElementRef, ElementProps >(({ className, ...props }, ref) => ( )); DropdownMenuSubContent.displayName = DropdownMenuPrimitive.SubContent.displayName; export interface DropdownMenuContentProps extends ElementProps {} const DropdownMenuContent = React.forwardRef< React.ElementRef, ElementProps >(({ className, sideOffset = 4, ...props }, ref) => ( )); DropdownMenuContent.displayName = DropdownMenuPrimitive.Content.displayName; export interface DropdownMenuItemProps extends ElementProps { inset?: boolean; } const DropdownMenuItem = React.forwardRef, DropdownMenuItemProps>( ({ className, inset, ...props }, ref) => ( ) ); DropdownMenuItem.displayName = DropdownMenuPrimitive.Item.displayName; const DropdownMenuCheckboxItem = React.forwardRef< React.ElementRef, ElementProps >(({ className, children, checked, ...props }, ref) => ( {children} )); DropdownMenuCheckboxItem.displayName = DropdownMenuPrimitive.CheckboxItem.displayName; const DropdownMenuRadioItem = React.forwardRef< React.ElementRef, ElementProps >(({ className, children, ...props }, ref) => ( {children} )); DropdownMenuRadioItem.displayName = DropdownMenuPrimitive.RadioItem.displayName; const DropdownMenuHeader = React.forwardRef< React.ElementRef, ElementProps & { inset?: boolean; } >(({ className, inset, ...props }, ref) => ( )); DropdownMenuHeader.displayName = 'DropdownMenuHeader'; const DropdownMenuLabel = React.forwardRef< React.ElementRef, ElementProps & { inset?: boolean; } >(({ className, inset, ...props }, ref) => ( )); DropdownMenuLabel.displayName = DropdownMenuPrimitive.Label.displayName; const DropdownMenuSeparator = React.forwardRef< React.ElementRef, ElementProps >(({ className, ...props }, ref) => ( )); DropdownMenuSeparator.displayName = DropdownMenuPrimitive.Separator.displayName; const DropdownMenuShortcut = ({ className, ...props }: React.HTMLAttributes) => { return ; }; DropdownMenuShortcut.displayName = 'DropdownMenuShortcut'; export interface DropdownProps extends DropdownMenuProps { trigger: React.ReactNode; contentProps?: DropdownMenuContentProps; side?: DropdownMenuContentProps['side']; align?: DropdownMenuContentProps['align']; alignOffset?: DropdownMenuContentProps['alignOffset']; sideOffset?: DropdownMenuContentProps['sideOffset']; } const Dropdown = React.forwardRef, DropdownProps>((props, ref) => { const { trigger, align, side, alignOffset, sideOffset = 4, contentProps, children, ...etc } = props; return ( {trigger} {children} ); }); export { DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuHeader, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, Dropdown, };