/** * TagInput — controlled multi-value tag editor (M17). * * Renders one removable chip per tag (`Badge` + a per-tag "×" button) plus a * text input to add a new tag on Enter. Fully controlled: the consumer owns * `value: string[]` and handles `onChange`. Adding calls * `onChange([...value, tag])`; removing calls `onChange` without that tag. * Dedup is built-in — adding an existing (trimmed) tag is a no-op, and so is * an empty/whitespace tag. `disabled` blocks both add and remove. * * Design (ADR D2 + parsimony ladder rung 5): composes `Input` + `Badge` with * Enter-to-add rather than the single-select `Combobox`. `Combobox` is a * typeahead that selects ONE value from a fixed list and closes its own * listbox on select — it has no "create arbitrary tag" affordance, so a plain * input is both simpler and a better fit for free-text multi-value tags. * `suggestions` power a native `` (zero-dep autocomplete). * * */ export interface TagInputProps { /** Current tags (controlled). */ value: string[]; /** Called with the next tag list on add/remove. */ onChange: (value: string[]) => void; /** Optional autocomplete suggestions surfaced via a native datalist. */ suggestions?: string[]; placeholder?: string; disabled?: boolean; className?: string; } declare const TagInput: import("react").ForwardRefExoticComponent>; export { TagInput };