import type { CSSProperties, HTMLAttributes, KeyboardEvent, ReactElement, RefObject } from "react"; import type { PortalProps } from "../portal"; export type DropdownPlacement = "bottom-start" | "bottom-end" | "top-start" | "top-end"; export interface DropdownBaseProps extends Omit, "onSelect">, Pick { defaultIsOpen?: boolean; disabled?: boolean; fullWidth?: boolean; isOpen?: boolean; onKeyDown?: (e: KeyboardEvent) => void; onOpenChange?: (isOpen: boolean) => void; openOnFocus?: boolean; placement?: DropdownPlacement; popupWidth?: number; triggerComponent?: JSX.Element; width?: number | string; } export interface DropdownHookProps extends Pick { ariaLabelledBy?: string; id: string; popupComponent: ReactElement; rootRef: RefObject; } export interface DropdownHookTriggerProps { "aria-expanded"?: boolean; "aria-labelledby"?: string; "aria-owns"?: string; id: string; onClick?: (e: MouseEvent) => void; onFocus?: (e: FocusEvent) => void; role: string; onKeyDown?: (e: KeyboardEvent) => void; style?: CSSProperties; } interface ComponentProps extends HTMLAttributes { width?: number | string; } export interface DropdownHookResult { componentProps: ComponentProps; isOpen: boolean; label: string; popperRef: (node: HTMLElement | null) => void; triggerProps: DropdownHookTriggerProps; } export {};