shadcn.io is an independent project built on shadcn/ui
Each row shows an avatar, the name, the email, and the role. The roles include Design Engineer and CEO. After a pick, the button shows only the name.
Use it when people share names, and the email or role is what tells them apart. A name and avatar only is a simpler Combobox row. In React, Ark UI does not arrange the three lines.
Installation
Anatomy

Usage
<Combobox
collection={collection}
onInputValueChange={handleInputValueChange}
onValueChange={handleValueChange}
positioning={{ getAnchorElement: () => triggerRef.current }}
selectionBehavior="clear"
value={value}
>
<ComboboxTrigger
className={cn(
buttonVariants({ variant: "outline" }),
"w-[300px] justify-between"
)}
ref={triggerRef}
>
{selected ? selected.label : "Select member..."}
</ComboboxTrigger>
<ComboboxContent>
<ComboboxInput
className="w-full"
placeholder="Search members..."
showTrigger={false}
/>
<ComboboxEmpty>No member found.</ComboboxEmpty>
<ComboboxList>
{collection.items.map((member) => (
<ComboboxItem
className="items-start gap-2 py-3"
item={member}
key={member.value}
>
{/* The rest of the file is under Installation. */}FAQ
How is each row laid out?
ComboboxItem gets items-start gap-2 py-3. An Avatar at the default size sits beside a column with the name in font-medium and the email and role in muted text-xs.
Who is listed?
Hayden Bleasel (Design Engineer), shadcn (Engineer), Lee Robinson (VP of Product) and Guillermo Rauch (CEO), each with a vercel.com email.
Can I search by email or role?
Not as built: the search matches names only. Add the email and role to the text the combobox searches if people look for them.
API Reference
Combobox
Sets collection={collection}, onInputValueChange={handleInputValueChange}, onValueChange={handleValueChange}, positioning, getAnchorElement and cn. The rest is on the Combobox page.
Avatar
Sets alt="" and src={member.avatar}. The rest is on the Avatar page.


