Skip to main content
The @-mention / autocomplete picker that appears inside comment composers (and the mention chips it produces). You customize the data (who/what is mentionable), the layout (option rows, groups, empty state), and the chips.

Components

  • Primitive: VeltAutocomplete (+ sub-primitives VeltAutocompletePanel, VeltAutocompleteOption, VeltAutocompleteGroupOption, VeltAutocompleteEmpty, VeltAutocompleteChip, VeltAutocompleteChipTooltip). Most customers don’t mount these: autocomplete renders inside the comment composer.
  • Wireframes: VeltAutocompleteOptionWireframe, VeltAutocompleteGroupOptionWireframe, VeltAutocompleteEmptyWireframe, VeltAutocompleteChipTooltipWireframe.

Config props

Customize the data (the most common need): these props live on <VeltComments>:
PropTypeWhat it does
customAutocompleteSearchbooleanA toggle, not a callback. Switches the picker to your data, which you supply via ContactElement / AutocompleteElement (below).
expandMentionGroupsbooleanExpand group members inline
showMentionGroupsFirst / showMentionGroupsOnlybooleanGroup ordering / groups-only
paginatedContactListbooleanPaginate a long contact list
atHereEnabled / atHereLabel / atHereDescriptionboolean / stringThe “@here” option
customListDataOnCommentAutocompleteDataCustom (non-contact) mention data
These props do not exist: showMentionGroups, customGroups, atHere/showAtHere. Use the real names above.
Supply the contacts/data via hooks (headless config):
  • Contacts: useContactUtils()ContactElement: updateContactList(userContacts, config?), updateOrgList(...), enableAtHere()/setAtHereLabel(), getContactList(). Read with useContactList().
  • Custom (non-contact) items: useAutocompleteUtils()AutocompleteElement.create({ hotkey, type: 'custom'|'contact'|'group', data, groups? }): combine with customAutocompleteSearch.

CSS: stateful classes

(Override with !important, R9b.) Option rows: velt-autocomplete-option--container, --selected, --multi-select; groups: velt-group-option (header), velt-group-member-option. Chips: velt-autocomplete--contact-chip, --contact-chip-current-user, --group-chip, .custom-chip: note chip classes are styled in a global stylesheet, so override them globally, not inside a component scope. Empty: velt-autocomplete-empty--no-results / --add-contact / --error.

Wireframes: slot trees + tokens

VeltAutocompleteOptionWireframe → .Icon · .Name · .Description (prop: field) · .ErrorIcon
VeltAutocompleteGroupOptionWireframe        (group header row)
VeltAutocompleteEmptyWireframe              (no-results / add-contact state)
VeltAutocompleteChipTooltipWireframe → .Name · .Description · .Icon
.Description is the one slot with an input prop (field). Read tokens with {componentConfig.<x>}: flattenedItems (empty when length === 0), groups, expandMentionGroups, customAutocompleteSearch; per-row option (.name/.email/.description/.group.name/.group.userCount), chip (.label).

Headless hooks

useContactUtils() / useContactList() / useContactSelected(); useAutocompleteUtils() / useAutocompleteChipClick().

Limitations

customAutocompleteSearch only flips the mode: you must also feed data. The panel switches to virtual scroll past ~6 items. Some option/group types referenced in tokens are internal shapes (not in the public types): rely on the documented fields above and inspect at runtime if unsure.