"use client"; import {Menu as BaseMenu} from "@base-ui/react/menu"; import {mergeProps} from "@base-ui/react/merge-props"; import {useRender} from "@base-ui/react/use-render"; import {Check, ChevronRight, Circle} from "lucide-react"; import * as React from "react"; import {cn} from "@/lib/utilities"; import styles from "./dropdown-menu.module.css"; interface DropdownMenuProps extends React.ComponentPropsWithRef {} interface DropdownMenuTriggerProps extends Omit, "className"> { /** * Applies additional CSS classes to the component root element. * @default undefined */ className?: string; /** * Enables child element composition instead of rendering the default wrapper. * @default false * @deprecated Prefer Base UI's `render` prop. */ asChild?: boolean; } interface DropdownMenuSubTriggerProps extends Omit, "className"> { /** * Applies additional CSS classes to the component root element. * @default undefined */ className?: string; /** * Applies inset spacing to align nested content. * @default false */ inset?: boolean; } interface DropdownMenuContentProps extends Omit, "className"> { /** * Applies additional CSS classes to the component root element. * @default undefined */ className?: string; } interface DropdownMenuItemProps extends Omit, "className"> { /** * Applies additional CSS classes to the component root element. * @default undefined */ className?: string; /** * Applies inset spacing to align nested content. * @default false */ inset?: boolean; /** * Enables child element composition instead of rendering the default wrapper. * @default false * @deprecated Prefer Base UI's `render` prop. */ asChild?: boolean; } interface DropdownMenuCheckboxItemProps extends Omit, "className"> { /** * Applies additional CSS classes to the component root element. * @default undefined */ className?: string; } interface DropdownMenuRadioItemProps extends Omit, "className"> { /** * Applies additional CSS classes to the component root element. * @default undefined */ className?: string; } interface DropdownMenuLabelProps extends Omit, "className"> { /** * Applies additional CSS classes to the component root element. * @default undefined */ className?: string; /** * Applies inset spacing to align nested content. * @default false */ inset?: boolean; } interface DropdownMenuSeparatorProps extends Omit, "className"> { /** * Applies additional CSS classes to the component root element. * @default undefined */ className?: string; } interface DropdownMenuShortcutProps extends React.ComponentPropsWithRef<"span"> { /** * Applies additional CSS classes to the component root element. * @default undefined */ className?: string; /** * Overrides the default rendered element while preserving component behavior. * @default undefined */ render?: useRender.RenderProp>; /** * Enables child element composition instead of rendering the default wrapper. * @default false * @deprecated Prefer Base UI's `render` prop. */ asChild?: boolean; } /** * Coordinates dropdown menu state and accessibility behavior. * * @remarks * - Delegates structure and state to the underlying Base UI primitive * - Built on {@link https://base-ui.com/react/components/menu | Base UI Menu} * - Preserves the underlying primitive API for advanced composition * * @example * ```tsx * Content * ``` * * @see {@link https://base-ui.com/react/components/menu | Base UI Documentation} */ function DropdownMenu(props: Readonly): React.ReactElement { return ; } /** * Renders the dropdown menu group. * * @remarks * - Delegates structure and state to the underlying Base UI primitive * - Built on {@link https://base-ui.com/react/components/menu | Base UI Menu} * - Preserves the underlying primitive API for advanced composition * * @example * ```tsx * Content * ``` * * @see {@link https://base-ui.com/react/components/menu | Base UI Documentation} */ const DropdownMenuGroup = BaseMenu.Group; /** * Provides the dropdown menu portal container. * * @remarks * - Delegates structure and state to the underlying Base UI primitive * - Built on {@link https://base-ui.com/react/components/menu | Base UI Menu} * - Preserves the underlying primitive API for advanced composition * * @example * ```tsx * Content * ``` * * @see {@link https://base-ui.com/react/components/menu | Base UI Documentation} */ const DropdownMenuPortal = BaseMenu.Portal; /** * Coordinates the dropdown menu radio group. * * @remarks * - Delegates structure and state to the underlying Base UI primitive * - Built on {@link https://base-ui.com/react/components/menu | Base UI Menu} * - Preserves the underlying primitive API for advanced composition * * @example * ```tsx * Content * ``` * * @see {@link https://base-ui.com/react/components/menu | Base UI Documentation} */ const DropdownMenuRadioGroup = BaseMenu.RadioGroup; /** * Coordinates the dropdown menu sub. * * @remarks * - Delegates structure and state to the underlying Base UI primitive * - Built on {@link https://base-ui.com/react/components/menu | Base UI Menu} * - Preserves the underlying primitive API for advanced composition * * @example * ```tsx * Content * ``` * * @see {@link https://base-ui.com/react/components/menu | Base UI Documentation} */ const DropdownMenuSub: typeof BaseMenu.SubmenuRoot & {displayName?: string} = BaseMenu.SubmenuRoot; /** * Renders the dropdown menu trigger. * * @remarks * - Renders a `