registry/default/variants/v-select-9.tsx
import {
Select,
SelectGroup,
SelectGroupLabel,
SelectItem,
SelectPopup,
SelectTrigger,
SelectValue,
} from "@/registry/default/ui/select";
const countryGroups = [
{
items: [
{ label: "๐บ๐ธ United States", value: "us" },
{ label: "๐จ๐ฆ Canada", value: "ca" },
{ label: "๐ฒ๐ฝ Mexico", value: "mx" },
],
label: "North America",
},
{
items: [
{ label: "๐ฌ๐ง United Kingdom", value: "gb" },
{ label: "๐ฉ๐ช Germany", value: "de" },
{ label: "๐ซ๐ท France", value: "fr" },
{ label: "๐ฎ๐น Italy", value: "it" },
{ label: "๐ช๐ธ Spain", value: "es" },
{ label: "๐ณ๐ฑ Netherlands", value: "nl" },
],
label: "Europe",
},
{
items: [
{ label: "๐ฏ๐ต Japan", value: "jp" },
{ label: "๐จ๐ณ China", value: "cn" },
{ label: "๐ฎ๐ณ India", value: "in" },
{ label: "๐ฆ๐บ Australia", value: "au" },
{ label: "๐ธ๐ฌ Singapore", value: "sg" },
{ label: "๐ฐ๐ท South Korea", value: "kr" },
],
label: "Asia Pacific",
},
{
items: [
{ label: "๐ง๐ท Brazil", value: "br" },
{ label: "๐ฆ๐ท Argentina", value: "ar" },
{ label: "๐จ๐ด Colombia", value: "co" },
],
label: "Latin America",
},
];
const placeholder = { label: "Select a country", value: null };
const allItems = [placeholder, ...countryGroups.flatMap((g) => g.items)];
export default function Component() {
return (
<Select items={allItems}>
<SelectTrigger className="w-56">
<SelectValue />
</SelectTrigger>
<SelectPopup className="max-h-64">
{countryGroups.map((group) => (
<SelectGroup key={group.label}>
<SelectGroupLabel>{group.label}</SelectGroupLabel>
{group.items.map((item) => (
<SelectItem key={item.value} value={item}>
{item.label}
</SelectItem>
))}
</SelectGroup>
))}
</SelectPopup>
</Select>
);
}






















