Add avatars and search to Duo Chat drawer group selector
What does this MR do and why?
This follow-up to !247578 (merged) brings the inline group selector in the Duo Chat drawer's empty state (shown when a user has no default Duo namespace) in line with the Figma design. The original selector was a bare GlCollapsibleListbox with no avatars, search, or grouping, scoped out of !247578 (merged) for a later pass.
It adds group avatars (GlAvatarLabeled, identicon fallback), a client-side case-insensitive search input, and a "Groups with GitLab Duo enabled" label above the listbox items. It also fixes a latent bug where the no-results text was hardcoded to the fetch-error message, which would have shown incorrectly when a search simply matched nothing. The search input is only rendered when candidates have loaded, so the fetch-error state shows just the error message.
Screenshots or screen recordings
| Before (master) | After (avatars, identicon fallback, search, group label) |
|---|---|
![]() |
![]() |
New states introduced by this MR:
| Search narrows the list | No matches shows "No results found" |
|---|---|
![]() |
![]() |
| Empty state (unchanged) |
|---|
![]() |
| Candidates query fails — before (master) | Candidates query fails — after (unchanged: search stays hidden on error) |
|---|---|
![]() |
![]() |
How to set up and validate locally
- Sign in as a user with no default Duo namespace set, who belongs to one or more Duo-enabled groups. (for setting up these groups, check out !247578 (merged))
- Open the Duo Chat drawer.
- Open the group selector.
- Confirm each item shows a group avatar and the "Groups with GitLab Duo enabled" label appears above the list.
- Type in the search box and confirm the list narrows accordingly.
- Type a term that matches nothing and confirm "No results found" is shown (not the fetch-error message).






