The field is a real combobox, wired the way the pattern asks for. antuikit changes none of it, so the work left to you is naming, announcing and contrast.
- The input carries role="combobox" (the role prop can override it), aria-autocomplete="list" and aria-haspopup="listbox".
- aria-expanded tracks the popup. aria-controls, aria-owns and aria-activedescendant are set only while it is open, and point at <id>_list and <id>_list_<index>.
- The popup list is role="listbox" and each row is role="option" with aria-selected and aria-disabled. A row whose label is a plain string also gets it as aria-label.
- The input's autoComplete defaults to new-password, which keeps the browser's autofill panel from covering the suggestions. Do not overwrite it without a reason.
- A group heading is not announced as a group. A { label, options } row renders as a plain div inside the listbox with no role of its own, so the rows under it do not say which group they came from. Put the distinction in the option text when it changes what the option means.