import * as react from 'react'; interface ComboboxOption { value: string; label: string; disabled?: boolean; } interface ComboboxGroup { /** Section title shown above options in the dropdown */ label: string; options: ComboboxOption[]; } interface ComboboxProps { /** Flat option list — use when sections are not needed */ options?: ComboboxOption[]; /** Grouped options with section titles — takes precedence over `options` when provided */ groups?: ComboboxGroup[]; value?: string; defaultValue?: string; onChange?: (value: string) => void; placeholder?: string; label?: string; error?: string; /** Filter predicate, defaults to a case-insensitive substring match on the label */ filter?: (option: ComboboxOption, query: string) => boolean; /** * Where the search input lives. * - `'trigger'` (default) — the trigger input doubles as the search field, matching the original behaviour. * - `'dropdown'` — the trigger is a button showing the selected value; the search input appears at the top of the dropdown panel. */ searchPlacement?: 'trigger' | 'dropdown'; /** * Enables "create a new option" — when set, a `Create ""` row appears at the * end of the list whenever the search text has no exact (case-insensitive) label match, * so users can add an option that doesn't exist yet without leaving the field. Called * with the trimmed query when that row is chosen; return a string to use as the new * option's value (e.g. a generated id), or return nothing to use the typed text as both * label and value. */ onCreateOption?: (label: string) => string | void; /** Customizes the create row's label. Defaults to `Create ""`. */ createOptionLabel?: (query: string) => string; className?: string; disabled?: boolean; required?: boolean; } declare const Combobox: react.ForwardRefExoticComponent>; export { Combobox, type ComboboxGroup, type ComboboxOption, type ComboboxProps };