/** * DropdownMenu — shadcn/WealthX * Base: npx shadcn\@latest add dropdown-menu * Figma: https://www.figma.com/design/9V9F0NGVsif8LGmEhVjOcT/Design-System---shadcn?node-id=73-229 * * WealthX overrides: * - DropdownMenuContent: rounded-md → rounded-none (sharp corners) * - DropdownMenuItem: rounded-sm → rounded-none * - DropdownMenuSubTrigger: rounded-sm → rounded-none * - DropdownMenuCheckboxItem: rounded-sm → rounded-none; added data-checked:bg-primary/10 * - DropdownMenuRadioItem: rounded-sm → rounded-none; added data-checked:bg-primary/10 * - DropdownMenuSubContent: rounded-md → rounded-none */ import { type ReactElement } from "react"; import * as React from "react"; import { CheckIcon, ChevronRightIcon, CircleIcon } from "lucide-react"; import { Menu as MenuPrimitive } from "@base-ui/react/menu"; import { cn } from "@/lib/utils"; import { asChildProps } from "@/lib/as-child"; import { useThemeVars } from "@/lib/theme-provider"; export type DropdownMenuProps = React.ComponentProps; function DropdownMenu({ ...props }: DropdownMenuProps): ReactElement { return ; } export type DropdownMenuPortalProps = React.ComponentProps< typeof MenuPrimitive.Portal >; function DropdownMenuPortal({ ...props }: DropdownMenuPortalProps): ReactElement { return ; } export type DropdownMenuTriggerProps = React.ComponentProps< typeof MenuPrimitive.Trigger > & { /** shadcn-compatible alias for Base UI's `render`: replaces the trigger with its single child. */ asChild?: boolean; }; function DropdownMenuTrigger({ asChild, children, ...props }: DropdownMenuTriggerProps): ReactElement { return ( ); } type MenuPositionerProps = React.ComponentProps; export type DropdownMenuContentProps = React.ComponentProps< typeof MenuPrimitive.Popup > & { sideOffset?: number; align?: MenuPositionerProps["align"]; side?: MenuPositionerProps["side"]; }; function DropdownMenuContent({ className, sideOffset = 4, align, side, style, ...props }: DropdownMenuContentProps): ReactElement { const themeVars = useThemeVars(); return ( ); } export type DropdownMenuGroupProps = React.ComponentProps< typeof MenuPrimitive.Group >; function DropdownMenuGroup({ ...props }: DropdownMenuGroupProps): ReactElement { return ; } export type DropdownMenuItemProps = React.ComponentProps< typeof MenuPrimitive.Item > & { inset?: boolean; variant?: "default" | "destructive"; }; function DropdownMenuItem({ className, inset, variant = "default", ...props }: DropdownMenuItemProps): ReactElement { return ( ); } export type DropdownMenuCheckboxItemProps = React.ComponentProps< typeof MenuPrimitive.CheckboxItem >; function DropdownMenuCheckboxItem({ className, children, checked, ...props }: DropdownMenuCheckboxItemProps): ReactElement { return ( {children} ); } export type DropdownMenuRadioGroupProps = React.ComponentProps< typeof MenuPrimitive.RadioGroup >; function DropdownMenuRadioGroup({ ...props }: DropdownMenuRadioGroupProps): ReactElement { return ( ); } export type DropdownMenuRadioItemProps = React.ComponentProps< typeof MenuPrimitive.RadioItem >; function DropdownMenuRadioItem({ className, children, ...props }: DropdownMenuRadioItemProps): ReactElement { return ( {children} ); } export type DropdownMenuLabelProps = React.ComponentProps< typeof MenuPrimitive.GroupLabel > & { inset?: boolean; }; function DropdownMenuLabel({ className, inset, ...props }: DropdownMenuLabelProps): ReactElement { return ( ); } export type DropdownMenuSeparatorProps = React.ComponentProps< typeof MenuPrimitive.Separator >; function DropdownMenuSeparator({ className, ...props }: DropdownMenuSeparatorProps): ReactElement { return ( ); } export type DropdownMenuShortcutProps = React.ComponentProps<"span">; function DropdownMenuShortcut({ className, ...props }: DropdownMenuShortcutProps): ReactElement { return ( ); } export type DropdownMenuSubProps = React.ComponentProps< typeof MenuPrimitive.SubmenuRoot >; function DropdownMenuSub({ ...props }: DropdownMenuSubProps): ReactElement { return ; } export type DropdownMenuSubTriggerProps = React.ComponentProps< typeof MenuPrimitive.SubmenuTrigger > & { inset?: boolean; }; function DropdownMenuSubTrigger({ className, inset, children, ...props }: DropdownMenuSubTriggerProps): ReactElement { return ( {children} ); } export type DropdownMenuSubContentProps = React.ComponentProps< typeof MenuPrimitive.Popup > & { sideOffset?: number; }; function DropdownMenuSubContent({ className, sideOffset = 0, style, ...props }: DropdownMenuSubContentProps): ReactElement { const themeVars = useThemeVars(); return ( ); } export { DropdownMenu, DropdownMenuPortal, DropdownMenuTrigger, DropdownMenuContent, DropdownMenuGroup, DropdownMenuLabel, DropdownMenuItem, DropdownMenuCheckboxItem, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubTrigger, DropdownMenuSubContent, };