import { DropdownMenuCheckboxItemProps } from "@radix-ui/react-dropdown-menu"; import { ExcludedProps } from "@vitality-ds/system"; import AvatarButton from "../Avatar/AvatarButton"; import { AvatarButtonType } from "../Avatar/types"; import Button from "../Button"; import { ButtonProps } from "../Button/types"; import IconButton from "../IconButton"; import { IconButtonProps } from "../IconButton/types"; import { CustomDropdownMenuItemProps } from "./components/CustomDropdownMenuItem/types"; import { DropdownMenuItem } from "./components/DropdownMenuItem/types"; import { GroupLabelProps } from "./components/GroupLabel/types"; import { SubmenuProps } from "./components/Submenu/types"; export declare type TriggerProps = T extends keyof TriggerComponentTypes ? TriggerComponentTypes[T] : never; declare type NeverOnClick = { /** * ❌ The trigger's onClick is handled within the DropdownMenu component */ onClick?: never; }; declare type NeverDisableTriggerThroughTriggerProps = { /** * ❌ The triggers disabled state is handled by the disabled prop on the DropdownMenu component */ disabled?: never; }; export declare type TriggerComponentTypes = { iconButton: Omit & NeverOnClick & NeverDisableTriggerThroughTriggerProps; avatar: Omit & NeverOnClick & NeverDisableTriggerThroughTriggerProps; button: Omit & NeverOnClick & NeverDisableTriggerThroughTriggerProps & { "data-vitality-component"?: string; }; }; export declare type TriggerComponents = typeof Button | typeof IconButton | typeof AvatarButton; export declare type TriggerComponentOptions = keyof TriggerComponentTypes & string; declare type Trigger = { type?: T; props?: TriggerProps; }; export declare type DropdownMenuItemTypes = keyof DropdownMenuItemComponentProps; declare type DropdownMenuItemComponentProps = { item: DropdownMenuItem; subMenu?: SubmenuProps; divider: null; groupLabel: GroupLabelProps; checkableItem: DropdownMenuCheckboxItemProps; empty: null; custom?: CustomDropdownMenuItemProps; }; export declare type DropdownMenuItemProps = K extends keyof DropdownMenuItemComponentProps ? DropdownMenuItemComponentProps[K] : never; export declare type DropdownMenuItems = { type?: K; } & DropdownMenuItemProps; export declare type DropdownMenuProps = ExcludedProps & { items: DropdownMenuItems[]; trigger: Trigger; /** * The preferred alignment against the trigger. May change when collisions occur. */ preferredAlignment?: "start" | "center" | "end"; /** * Prevent the Dropdown's trigger from being pressed, therefore preventing the dropdown from showing */ disabled?: boolean; }; export {};