import React from 'react'; import ComboboxOption from './ComboboxOption'; import type { ContentNode } from '../../types'; import type { ComboboxValue } from './ComboboxOption'; import type { ListboxOption } from '../Listbox/ListboxContext'; interface ComboboxOption { key?: string; label: string; value?: ComboboxValue; formValue?: ComboboxValue; description?: string; removeOptionLabel?: string; } interface BaseComboboxProps extends Omit, 'value' | 'defaultValue'> { label: ContentNode; options?: ComboboxOption[]; requiredText?: React.ReactNode; error?: React.ReactNode; autocomplete?: 'none' | 'manual' | 'automatic'; onActiveChange?: (option: ListboxOption) => void; renderNoResults?: (() => React.JSX.Element) | React.ReactElement; portal?: React.RefObject | HTMLElement; inputRef?: React.Ref; description?: React.ReactNode; } interface SingleSelectComboboxProps extends BaseComboboxProps { value?: ComboboxValue; defaultValue?: ComboboxValue; inputValue?: never; defaultInputValue?: never; onSelectionChange?: (props: { target: T; value: ComboboxValue; previousValue: ComboboxValue; }) => void; multiselect?: false; } interface MultiSelectComboboxProps extends BaseComboboxProps { value?: ComboboxValue[]; defaultValue?: ComboboxValue[]; inputValue?: ComboboxValue; defaultInputValue?: ComboboxValue; onSelectionChange?: (props: { target: T; value: ComboboxValue[]; previousValue: ComboboxValue[]; }) => void; multiselect: true; } declare const Combobox: React.ForwardRefExoticComponent<(SingleSelectComboboxProps | MultiSelectComboboxProps) & React.RefAttributes>; export default Combobox;