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 {};