About this set
Multiselects where each pick becomes a removable chip inside the field, next to a text input that filters the suggestions as you type. Chips with suggestions, up to five is a skills picker with a 3 / 5 counter: matching text is highlighted, picked skills carry a tick in the list, and once five are chosen the rest are marked unavailable and trying to add another is announced. Invite by name or email, with avatars suggests teammates with coloured initials and their addresses, and also accepts any valid email typed in, added with Enter or a comma. Both are built on the WAI-ARIA editable combobox with list autocomplete: Down and Up move through the suggestions with aria-activedescendant, Enter adds or removes the highlighted one, Escape closes the list or clears the text, and Backspace in an empty field removes the last chip. Every chip has its own labelled remove button, a polite status line reads out what was added or removed, and a hidden select multiple holds the value, so the form submits the picks. Without JavaScript that select is shown as a plain list.
What’s included
- Removable chips with labelled remove buttons
- Type-to-filter suggestions with the match highlighted
- Optional limit with a live counter
- Free entry of email addresses with Enter or a comma
- Backspace removes the last chip
- Hidden select multiple keeps the form value
Accessibility
The text input is a role="combobox" with aria-autocomplete="list", aria-expanded and aria-activedescendant, labelled by its visible label and described by the hint; the suggestions form a multi-select listbox with aria-selected, and options past the limit get aria-disabled. Each chip's remove button is named, for example Remove Figma, and a role="status" line announces additions, removals and match counts. Focus shows as a ring around the whole field, and the chip buttons have their own outline.
Customise it
Change --tg-accent, --tg-chip, --tg-chip-ink, --tg-tint and --tg-line on .tg; avatar colours come from data-tone on each option. In Tailwind edit the --color-tg-* theme colours. data-max sets the limit and data-create="email" allows free entry.





