/** * @fileoverview DropdownMenu — premium animated dropdown menu with Motion spring transitions, sub-menus, checkbox/radio items, and keyboard navigation. * @module packages/ui/components/ui/dropdown-menu * @layer core * * @component * @example * import { DropdownMenu, DropdownMenuTrigger, DropdownMenuContent, DropdownMenuItem } from '@saasflare/ui'; * * * Open * * Profile * Settings * * */ import * as React from "react"; import * as DropdownMenuPrimitive from "@radix-ui/react-dropdown-menu"; import { type SaasflareComponentProps } from "../../providers"; /** * Dropdown menu root. Manages open state and wires {@link DropdownMenuTrigger} * and {@link DropdownMenuContent} together, with spring-animated content, * nested sub-menus, checkbox/radio items, and full keyboard navigation. * * @component * @layer core */ declare function DropdownMenu({ ...props }: React.ComponentProps): import("react/jsx-runtime").JSX.Element; /** * Portals menu content into the document body. Rarely needed directly — * {@link DropdownMenuContent} renders its own portal. * * @component * @layer core */ declare function DropdownMenuPortal({ ...props }: React.ComponentProps): import("react/jsx-runtime").JSX.Element; /** * Button that toggles the dropdown menu open and closed. * * @component * @layer core */ declare function DropdownMenuTrigger({ className, ...props }: React.ComponentProps): import("react/jsx-runtime").JSX.Element; /** * Groups related menu items for semantics and accessible structure. * * @component * @layer core */ declare function DropdownMenuGroup({ ...props }: React.ComponentProps): import("react/jsx-runtime").JSX.Element; /** * Root for a nested sub-menu. Wraps {@link DropdownMenuSubTrigger} and * {@link DropdownMenuSubContent}. * * @component * @layer core */ declare function DropdownMenuSub({ ...props }: React.ComponentProps): import("react/jsx-runtime").JSX.Element; /** * Single-select group for {@link DropdownMenuRadioItem} children, controlled * via `value` / `onValueChange`. * * @component * @layer core */ declare function DropdownMenuRadioGroup({ ...props }: React.ComponentProps): import("react/jsx-runtime").JSX.Element; /** * Props for {@link DropdownMenuContent}. * * Extends the Radix Content props with {@link SaasflareComponentProps}, so * `surface`, `radius`, `animated`, and `iconWeight` can be supplied * per-instance or inherited from . */ interface DropdownMenuContentProps extends Omit, keyof SaasflareComponentProps>, SaasflareComponentProps { } /** * Floating menu panel with a spring scale/fade entrance. Portals itself — * no {@link DropdownMenuPortal} wrapper required. * * @component * @layer core */ declare function DropdownMenuContent({ className, sideOffset, surface, radius, animated, iconWeight, ...props }: DropdownMenuContentProps): import("react/jsx-runtime").JSX.Element; interface DropdownMenuItemExtraProps { /** Indent the item to align with sibling items that have a leading icon or indicator. */ inset?: boolean; /** Visual intent of the item. `"destructive"` tints the label and focus state with the destructive token. */ variant?: "default" | "destructive"; } /** * Selectable menu entry. `inset` aligns it with icon-bearing siblings; * `variant="destructive"` tints label and focus state with the destructive token. * * @component * @layer core */ declare function DropdownMenuItem({ className, inset, variant, ...props }: React.ComponentProps & DropdownMenuItemExtraProps): import("react/jsx-runtime").JSX.Element; /** * Menu item with a toggleable checked state, rendering a check indicator in * the leading slot. * * @component * @layer core */ declare function DropdownMenuCheckboxItem({ className, children, checked, ...props }: React.ComponentProps): import("react/jsx-runtime").JSX.Element; /** * Single-select menu item for use inside {@link DropdownMenuRadioGroup}, * rendering a dot indicator when active. * * @component * @layer core */ declare function DropdownMenuRadioItem({ className, children, ...props }: React.ComponentProps): import("react/jsx-runtime").JSX.Element; /** * Non-interactive heading for a group of menu items. * * @component * @layer core */ declare function DropdownMenuLabel({ className, inset, ...props }: React.ComponentProps & { inset?: boolean; }): import("react/jsx-runtime").JSX.Element; /** * Thin horizontal rule between menu groups. * * @component * @layer core */ declare function DropdownMenuSeparator({ className, ...props }: React.ComponentProps): import("react/jsx-runtime").JSX.Element; /** * Right-aligned keyboard-shortcut hint inside a menu item. Purely visual — * does not register the key binding. * * @component * @layer core */ declare function DropdownMenuShortcut({ className, ...props }: React.ComponentProps<"span">): import("react/jsx-runtime").JSX.Element; /** * Menu item that opens a nested sub-menu, with a trailing caret indicator. * * @component * @layer core */ declare function DropdownMenuSubTrigger({ className, inset, children, ...props }: React.ComponentProps & { inset?: boolean; }): import("react/jsx-runtime").JSX.Element; /** * Floating panel for a nested sub-menu, animated via CSS data-state transitions. * * @component * @layer core */ declare function DropdownMenuSubContent({ className, ...props }: React.ComponentProps): import("react/jsx-runtime").JSX.Element; export { DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, type DropdownMenuContentProps, };