c-select-18.tsx
import {
Avatar,
AvatarFallback,
AvatarImage,
} from "@/components/ui/avatar"
import { Field } from "@/components/ui/field"
import {
Select,
SelectContent,
SelectGroup,
SelectItem,
SelectLabel,
SelectTrigger,
SelectValue,
} from "@/components/ui/select"
const users = [
{
id: "1",
name: "Alex Johnson",
email: "alex@example.com",
avatar:
"https://images.unsplash.com/photo-1535713875002-d1d0cf377fde?w=96&h=96&dpr=2&q=80",
initials: "AJ",
},
{
id: "2",
name: "Sarah Chen",
email: "sarah@example.com",
avatar:
"https://images.unsplash.com/photo-1519699047748-de8e457a634e?w=96&h=96&dpr=2&q=80",
initials: "SC",
},
{
id: "3",
name: "Michael Rodriguez",
email: "michael@example.com",
avatar:
"https://images.unsplash.com/photo-1584308972272-9e4e7685e80f?w=96&h=96&dpr=2&q=80",
initials: "MR",
},
{
id: "4",
name: "Emma Wilson",
email: "emma@example.com",
avatar:
"https://images.unsplash.com/photo-1485893086445-ed75865251e0?w=96&h=96&dpr=2&q=80",
initials: "EW",
},
{
id: "5",
name: "David Kim",
email: "david@example.com",
avatar:
"https://images.unsplash.com/photo-1607990281513-2c110a25bd8c?w=96&h=96&dpr=2&q=80",
initials: "DK",
},
{
id: "6",
name: "Aron Thompson",
email: "lisa@example.com",
avatar:
"https://images.unsplash.com/photo-1527980965255-d3b416303d12?w=96&h=96&dpr=2&q=80",
initials: "LT",
},
{
id: "7",
name: "James Brown",
email: "james@example.com",
avatar:
"https://images.unsplash.com/photo-1543299750-19d1d6297053?w=96&h=96&dpr=2&q=80",
initials: "JB",
},
{
id: "8",
name: "Maria Garcia",
email: "maria@example.com",
avatar:
"https://images.unsplash.com/photo-1620075225255-8c2051b6c015?w=96&h=96&dpr=2&q=80",
initials: "MG",
},
{
id: "9",
name: "Nick Johnson",
email: "nick@example.com",
avatar:
"https://images.unsplash.com/photo-1485206412256-701ccc5b93ca?w=96&h=96&dpr=2&q=80",
initials: "NJ",
},
{
id: "10",
name: "Liam Thompson",
email: "liam@example.com",
avatar:
"https://images.unsplash.com/photo-1542595913-85d69b0edbaf?w=96&h=96&dpr=2&q=80",
initials: "LT",
},
]
export function Pattern() {
const mappedUsers = users.map((user) => ({
value: user.id,
label: user.name,
avatar: user.avatar,
initials: user.initials,
}))
return (
<Field className="max-w-xs">
<Select defaultValue={mappedUsers[2]} items={mappedUsers}>
<SelectTrigger>
<SelectValue>
{(item: (typeof mappedUsers)[number]) => (
<span className="flex items-center gap-2">
<Avatar className="size-5">
<AvatarImage src={item?.avatar} alt={item?.label} />
<AvatarFallback>{item?.initials}</AvatarFallback>
</Avatar>
<span>{item?.label}</span>
</span>
)}
</SelectValue>
</SelectTrigger>
<SelectContent alignItemWithTrigger={false}>
<SelectGroup>
<SelectLabel>Select a user</SelectLabel>
{mappedUsers.map((user) => (
<SelectItem key={user.value} value={user}>
<span className="flex items-center gap-2">
<Avatar className="size-6">
<AvatarImage src={user.avatar} alt={user.label} />
<AvatarFallback>{user.initials}</AvatarFallback>
</Avatar>
<span>{user.label}</span>
</span>
</SelectItem>
))}
</SelectGroup>
</SelectContent>
</Select>
</Field>
)
}


























