import type { ButtonHTMLAttributes, CSSProperties, ReactElement } from 'react'; import type { PortalProps } from '../portal'; type SelectValue = string | number | undefined; interface SelectOption { readonly value: T; readonly label: string | number; /** @description Use to give a more descriptive label to screen readers */ readonly ariaLabel?: string | undefined; /** @default false */ readonly disabled?: boolean | undefined; readonly icon?: ReactElement | undefined; } type SelectOptions = SelectOption[]; interface SelectProps extends Omit, 'children' | 'value' | 'defaultValue' | 'onChange'> { readonly icon?: ReactElement | undefined; readonly value?: T; readonly defaultValue?: T; readonly options: SelectOptions; readonly onChange?: ((value: T) => void) | undefined; /** @default true */ readonly clearable?: boolean | undefined; readonly placement?: PortalProps['align'] | undefined; readonly wrapperClassName?: string | undefined; readonly wrapperStyle?: CSSProperties | undefined; } export type { SelectProps, SelectOptions, SelectOption, SelectValue };