/**
* @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, };