snapshot of https://github.com/shadcn-ui/ui.git (main, 2026-09-15; blobs > 131072B omitted)
This commit is contained in:
104
apps/v4/examples/aria/combobox-custom.tsx
Normal file
104
apps/v4/examples/aria/combobox-custom.tsx
Normal file
@@ -0,0 +1,104 @@
|
||||
"use client"
|
||||
|
||||
import {
|
||||
Combobox,
|
||||
ComboboxContent,
|
||||
ComboboxEmpty,
|
||||
ComboboxInput,
|
||||
ComboboxItem,
|
||||
ComboboxList,
|
||||
} from "@/styles/aria-nova/ui/combobox"
|
||||
import {
|
||||
Item,
|
||||
ItemContent,
|
||||
ItemDescription,
|
||||
ItemTitle,
|
||||
} from "@/styles/aria-nova/ui/item"
|
||||
|
||||
const countries = [
|
||||
{
|
||||
code: "ar",
|
||||
value: "argentina",
|
||||
label: "Argentina",
|
||||
continent: "South America",
|
||||
},
|
||||
{ code: "au", value: "australia", label: "Australia", continent: "Oceania" },
|
||||
{ code: "br", value: "brazil", label: "Brazil", continent: "South America" },
|
||||
{ code: "ca", value: "canada", label: "Canada", continent: "North America" },
|
||||
{ code: "cn", value: "china", label: "China", continent: "Asia" },
|
||||
{
|
||||
code: "co",
|
||||
value: "colombia",
|
||||
label: "Colombia",
|
||||
continent: "South America",
|
||||
},
|
||||
{ code: "eg", value: "egypt", label: "Egypt", continent: "Africa" },
|
||||
{ code: "fr", value: "france", label: "France", continent: "Europe" },
|
||||
{ code: "de", value: "germany", label: "Germany", continent: "Europe" },
|
||||
{ code: "it", value: "italy", label: "Italy", continent: "Europe" },
|
||||
{ code: "jp", value: "japan", label: "Japan", continent: "Asia" },
|
||||
{ code: "ke", value: "kenya", label: "Kenya", continent: "Africa" },
|
||||
{ code: "mx", value: "mexico", label: "Mexico", continent: "North America" },
|
||||
{
|
||||
code: "nz",
|
||||
value: "new-zealand",
|
||||
label: "New Zealand",
|
||||
continent: "Oceania",
|
||||
},
|
||||
{ code: "ng", value: "nigeria", label: "Nigeria", continent: "Africa" },
|
||||
{
|
||||
code: "za",
|
||||
value: "south-africa",
|
||||
label: "South Africa",
|
||||
continent: "Africa",
|
||||
},
|
||||
{ code: "kr", value: "south-korea", label: "South Korea", continent: "Asia" },
|
||||
{
|
||||
code: "gb",
|
||||
value: "united-kingdom",
|
||||
label: "United Kingdom",
|
||||
continent: "Europe",
|
||||
},
|
||||
{
|
||||
code: "us",
|
||||
value: "united-states",
|
||||
label: "United States",
|
||||
continent: "North America",
|
||||
},
|
||||
]
|
||||
|
||||
export function ComboboxWithCustomItems() {
|
||||
return (
|
||||
<Combobox allowsEmptyCollection aria-label="Country">
|
||||
<ComboboxInput placeholder="Search countries..." />
|
||||
<ComboboxContent>
|
||||
<ComboboxList
|
||||
renderEmptyState={() => (
|
||||
<ComboboxEmpty>No countries found.</ComboboxEmpty>
|
||||
)}
|
||||
>
|
||||
{countries
|
||||
.filter((country) => country.code !== "")
|
||||
.map((country) => (
|
||||
<ComboboxItem
|
||||
key={country.code}
|
||||
id={country.code}
|
||||
textValue={country.label}
|
||||
>
|
||||
<Item size="xs" className="p-0">
|
||||
<ItemContent>
|
||||
<ItemTitle className="whitespace-nowrap">
|
||||
{country.label}
|
||||
</ItemTitle>
|
||||
<ItemDescription>
|
||||
{country.continent} ({country.code})
|
||||
</ItemDescription>
|
||||
</ItemContent>
|
||||
</Item>
|
||||
</ComboboxItem>
|
||||
))}
|
||||
</ComboboxList>
|
||||
</ComboboxContent>
|
||||
</Combobox>
|
||||
)
|
||||
}
|
||||
Reference in New Issue
Block a user