import { Menu as MenuPrimitive } from '@base-ui/react/menu'; import type * as React from 'react'; declare function DropdownMenuRoot({ ...props }: MenuPrimitive.Root.Props): React.JSX.Element; declare function DropdownMenuPortal({ ...props }: MenuPrimitive.Portal.Props): React.JSX.Element; declare function DropdownMenuTrigger({ ...props }: MenuPrimitive.Trigger.Props): React.JSX.Element; declare function DropdownMenuGroup({ ...props }: MenuPrimitive.Group.Props): React.JSX.Element; declare function DropdownMenuSub({ ...props }: MenuPrimitive.SubmenuRoot.Props): React.JSX.Element; declare function DropdownMenuSubTrigger({ className, inset, children, ...props }: MenuPrimitive.SubmenuTrigger.Props & { inset?: boolean; }): React.JSX.Element; declare function DropdownMenuRadioGroup({ ...props }: MenuPrimitive.RadioGroup.Props): React.JSX.Element; declare function DropdownMenuRadioItem({ className, children, ...props }: MenuPrimitive.RadioItem.Props): React.JSX.Element; declare function DropdownMenuCheckboxItem({ className, children, checked, ...props }: MenuPrimitive.CheckboxItem.Props): React.JSX.Element; declare function DropdownMenuShortcut({ className, ...props }: React.ComponentProps<'span'>): React.JSX.Element; /** * Enhanced DropdownMenuPopup with HumainOS styling */ export interface DropdownMenuPopupProps extends React.HTMLAttributes { /** Menu content */ children?: React.ReactNode; /** Width of the dropdown menu */ width?: 'auto' | 'sm' | 'md' | 'lg'; /** Side offset from the trigger */ sideOffset?: number; /** Side to show the menu on */ side?: 'top' | 'right' | 'bottom' | 'left'; /** Alignment of the menu */ align?: 'start' | 'center' | 'end'; /** Align offset */ alignOffset?: number; /** * DOM node to portal the popup into. Falls back to * `usePortalContainerOverride()` (which checks `PortalContainerProvider`), then to the * base-ui default (the document body). */ container?: HTMLElement | null; } declare function DropdownMenuPopup({ align, alignOffset, side, sideOffset, width, className, container, ...props }: DropdownMenuPopupProps): React.JSX.Element; declare function DropdownMenuSubPopup({ align, alignOffset, side, sideOffset, className, ...props }: DropdownMenuPopupProps): React.JSX.Element; /** * Header section for dropdown menu with avatar and user info */ export interface DropdownMenuHeaderProps extends React.ComponentProps<'div'> { /** Avatar element to display */ avatar?: React.ReactNode; /** Primary text (e.g., user name) */ title?: string; /** Secondary text (e.g., email) */ subtitle?: string; } declare function DropdownMenuHeader({ className, avatar, title, subtitle, children, ...props }: DropdownMenuHeaderProps): React.JSX.Element; export interface DropdownMenuLabelProps extends React.HTMLAttributes { /** Whether the label is inset */ inset?: boolean; } /** * Enhanced DropdownMenuLabel */ declare function DropdownMenuLabel({ className, inset, ...props }: DropdownMenuLabelProps): React.JSX.Element; /** * Enhanced DropdownMenuItem with icon and shortcut support */ export interface DropdownMenuItemProps extends Omit, 'onSelect'> { /** Item content */ children?: React.ReactNode; /** Icon displayed before the label */ icon?: React.ReactNode; /** Keyboard shortcut displayed on the right */ shortcut?: string; /** Makes the item destructive (red text) */ destructive?: boolean; /** Whether the item is disabled */ disabled?: boolean; /** * Render as a different element (Base UI pattern). * Use this to render as a custom component like Link or anchor. * @example render={} */ render?: React.ReactElement; /** Whether the item is inset */ inset?: boolean; /** Variant for styling */ variant?: 'default' | 'destructive'; } declare function DropdownMenuItem({ className, icon, shortcut, destructive, render, inset, variant, children, ...props }: DropdownMenuItemProps): React.JSX.Element; export interface DropdownMenuSeparatorProps extends React.HTMLAttributes { } /** * Enhanced DropdownMenuSeparator */ declare function DropdownMenuSeparator({ className, ...props }: DropdownMenuSeparatorProps): React.JSX.Element; export interface DropdownMenuItemsProps extends React.HTMLAttributes { } /** * Container for menu items with proper padding */ declare function DropdownMenuItems({ className, children, ...props }: DropdownMenuItemsProps): React.JSX.Element; /** * Styled shortcut badge that matches Figma design (uses Kbd wrapper) */ declare function DropdownMenuShortcutBadge({ className, children, ...props }: React.ComponentProps<'kbd'>): React.JSX.Element; export interface SimpleDropdownMenuProps { /** The element that triggers the dropdown (required) */ trigger: React.ReactElement; /** Dropdown content (typically DropdownMenu.Popup component) */ children?: React.ReactNode; /** Controlled open state. When provided, component is controlled. */ open?: boolean; /** Callback when open state changes */ onOpenChange?: (open: boolean) => void; } /** * Simplified DropdownMenu component with explicit trigger prop. * Prevents nested button hydration errors by using base-ui's render prop. * * @example * Menu}> * * * Option 1 * * * */ declare function SimpleDropdownMenu({ trigger, open, onOpenChange, children, }: SimpleDropdownMenuProps): React.JSX.Element; export declare const DropdownMenu: typeof DropdownMenuRoot & { Root: typeof DropdownMenuRoot; Portal: typeof DropdownMenuPortal; Trigger: typeof DropdownMenuTrigger; Popup: typeof DropdownMenuPopup; Group: typeof DropdownMenuGroup; Label: typeof DropdownMenuLabel; Item: typeof DropdownMenuItem; CheckboxItem: typeof DropdownMenuCheckboxItem; RadioGroup: typeof DropdownMenuRadioGroup; RadioItem: typeof DropdownMenuRadioItem; Separator: typeof DropdownMenuSeparator; Shortcut: typeof DropdownMenuShortcut; ShortcutBadge: typeof DropdownMenuShortcutBadge; Sub: typeof DropdownMenuSub; SubTrigger: typeof DropdownMenuSubTrigger; SubPopup: typeof DropdownMenuSubPopup; Header: typeof DropdownMenuHeader; Items: typeof DropdownMenuItems; Simple: typeof SimpleDropdownMenu; }; export type DropdownMenuPopupWrapperProps = DropdownMenuPopupProps; export type DropdownMenuItemWrapperProps = DropdownMenuItemProps; export type DropdownMenuHeaderWrapperProps = DropdownMenuHeaderProps; export {};