import * as React from "react" import { Menu as MenuPrimitive } from "@base-ui/react/menu" import { cn } from "@/lib/utils" import { ChevronRightIcon, CheckIcon } from "lucide-react" export type DropdownMenuRootProps = MenuPrimitive.Root.Props export type DropdownMenuPortalProps = MenuPrimitive.Portal.Props export type DropdownMenuTriggerProps = MenuPrimitive.Trigger.Props export type DropdownMenuContentProps = MenuPrimitive.Popup.Props & Pick< MenuPrimitive.Positioner.Props, "align" | "alignOffset" | "side" | "sideOffset" > export type DropdownMenuGroupProps = MenuPrimitive.Group.Props export type DropdownMenuLabelProps = React.ComponentProps<"div"> & { inset?: boolean } export type DropdownMenuItemProps = MenuPrimitive.Item.Props & { inset?: boolean variant?: "default" | "destructive" closeOnSelect?: boolean } export type DropdownMenuSubmenuProps = MenuPrimitive.SubmenuRoot.Props export type DropdownMenuSubmenuTriggerProps = MenuPrimitive.SubmenuTrigger.Props & { inset?: boolean } export type DropdownMenuSubmenuContentProps = React.ComponentProps export type DropdownMenuCheckboxItemProps = MenuPrimitive.CheckboxItem.Props & { inset?: boolean closeOnSelect?: boolean } export type DropdownMenuRadioGroupProps = MenuPrimitive.RadioGroup.Props export type DropdownMenuRadioItemProps = MenuPrimitive.RadioItem.Props & { inset?: boolean closeOnSelect?: boolean } export type DropdownMenuSeparatorProps = MenuPrimitive.Separator.Props export type DropdownMenuShortcutProps = React.ComponentProps<"span"> export type DropdownMenuItemDescriptionProps = React.ComponentProps<"span"> const menuItemClassName = "relative group/dropdown-menu-item flex min-h-9 w-full cursor-default select-none items-center gap-2 rounded-[var(--radius-md)] px-2.5 py-2 text-sm text-popover-foreground outline-none transition-[background-color,color] data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[highlighted]:bg-accent data-[highlighted]:text-accent-foreground data-[inset=true]:pl-8 data-[variant=destructive]:text-destructive data-[variant=destructive]:data-[highlighted]:bg-destructive/10 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4" function DropdownMenu({ ...props }: MenuPrimitive.Root.Props) { return } function DropdownMenuPortal({ ...props }: DropdownMenuPortalProps) { return } function DropdownMenuTrigger({ ...props }: DropdownMenuTriggerProps) { if (!("render" in props) && React.isValidElement(props.children)) { const { children, ...rest } = props return } return } function DropdownMenuContent({ align = "start", alignOffset = 0, side = "bottom", sideOffset = 4, className, ...props }: DropdownMenuContentProps) { return ( ) } function DropdownMenuGroup({ ...props }: DropdownMenuGroupProps) { return } function DropdownMenuLabel({ className, inset, ...props }: DropdownMenuLabelProps) { return (
) } function DropdownMenuItem({ className, inset, variant = "default", closeOnSelect = true, onSelect, ...props }: DropdownMenuItemProps) { return ( { if (!closeOnSelect) { event.preventDefault() } onSelect?.(event) }} {...props} /> ) } function DropdownMenuSub({ ...props }: DropdownMenuSubmenuProps) { return } function DropdownMenuSubTrigger({ className, inset, children, ...props }: DropdownMenuSubmenuTriggerProps) { return ( {children} ) } function DropdownMenuSubContent({ align = "start", alignOffset = -3, side = "right", sideOffset = 0, className, ...props }: DropdownMenuSubmenuContentProps) { return ( ) } function DropdownMenuCheckboxItem({ className, children, checked, inset, closeOnSelect = true, onSelect, ...props }: DropdownMenuCheckboxItemProps) { return ( { if (!closeOnSelect) { event.preventDefault() } onSelect?.(event) }} {...props} > {children} ) } function DropdownMenuRadioGroup({ ...props }: DropdownMenuRadioGroupProps) { return ( ) } function DropdownMenuRadioItem({ className, children, inset, closeOnSelect = true, onSelect, ...props }: DropdownMenuRadioItemProps) { return ( { if (!closeOnSelect) { event.preventDefault() } onSelect?.(event) }} {...props} > {children} ) } function DropdownMenuSeparator({ className, ...props }: DropdownMenuSeparatorProps) { return ( ) } function DropdownMenuShortcut({ className, ...props }: DropdownMenuShortcutProps) { return ( ) } function DropdownMenuItemDescription({ className, ...props }: DropdownMenuItemDescriptionProps) { return ( ) } export { DropdownMenu, DropdownMenuPortal, DropdownMenuTrigger, DropdownMenuContent, DropdownMenuGroup, DropdownMenuLabel, DropdownMenuItem, DropdownMenuCheckboxItem, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuItemDescription, DropdownMenuSub, DropdownMenuSubTrigger, DropdownMenuSubContent, }