mirror of
https://github.com/shadcn-ui/ui.git
synced 2026-06-25 21:56:08 +00:00
116 lines
2.3 KiB
TypeScript
116 lines
2.3 KiB
TypeScript
import {
|
|
Combobox,
|
|
ComboboxCollection,
|
|
ComboboxContent,
|
|
ComboboxEmpty,
|
|
ComboboxGroup,
|
|
ComboboxInput,
|
|
ComboboxItem,
|
|
ComboboxLabel,
|
|
ComboboxList,
|
|
} from "@/examples/base/ui/combobox"
|
|
import { Input } from "@/examples/base/ui/input"
|
|
import { InputGroup, InputGroupAddon } from "@/examples/base/ui/input-group"
|
|
import { Select } from "@/examples/base/ui/select"
|
|
import { GlobeIcon } from "lucide-react"
|
|
|
|
const timezones = [
|
|
{
|
|
value: "Americas",
|
|
items: [
|
|
"(GMT-5) New York",
|
|
"(GMT-8) Los Angeles",
|
|
"(GMT-6) Chicago",
|
|
"(GMT-5) Toronto",
|
|
"(GMT-8) Vancouver",
|
|
"(GMT-3) São Paulo",
|
|
],
|
|
},
|
|
{
|
|
value: "Europe",
|
|
items: [
|
|
"(GMT+0) London",
|
|
"(GMT+1) Paris",
|
|
"(GMT+1) Berlin",
|
|
"(GMT+1) Rome",
|
|
"(GMT+1) Madrid",
|
|
"(GMT+1) Amsterdam",
|
|
],
|
|
},
|
|
{
|
|
value: "Asia/Pacific",
|
|
items: [
|
|
"(GMT+9) Tokyo",
|
|
"(GMT+8) Shanghai",
|
|
"(GMT+8) Singapore",
|
|
"(GMT+4) Dubai",
|
|
"(GMT+11) Sydney",
|
|
"(GMT+9) Seoul",
|
|
],
|
|
},
|
|
] as const
|
|
|
|
const items = [
|
|
{
|
|
label: "Select a framework",
|
|
value: null,
|
|
},
|
|
{
|
|
label: "React",
|
|
value: "react",
|
|
},
|
|
{
|
|
label: "Vue",
|
|
value: "vue",
|
|
},
|
|
{
|
|
label: "Angular",
|
|
value: "angular",
|
|
},
|
|
{
|
|
label: "Svelte",
|
|
value: "svelte",
|
|
},
|
|
{
|
|
label: "Solid",
|
|
value: "solid",
|
|
},
|
|
{
|
|
label: "Preact",
|
|
value: "preact",
|
|
},
|
|
{
|
|
label: "Next.js",
|
|
value: "next.js",
|
|
},
|
|
]
|
|
|
|
export function ComboxboxInputAddon() {
|
|
return (
|
|
<Combobox items={timezones}>
|
|
<ComboboxInput placeholder="Select a timezone">
|
|
<InputGroupAddon>
|
|
<GlobeIcon />
|
|
</InputGroupAddon>
|
|
</ComboboxInput>
|
|
<ComboboxContent alignOffset={-28} className="w-60">
|
|
<ComboboxEmpty>No timezones found.</ComboboxEmpty>
|
|
<ComboboxList>
|
|
{(group) => (
|
|
<ComboboxGroup key={group.value} items={group.items}>
|
|
<ComboboxLabel>{group.value}</ComboboxLabel>
|
|
<ComboboxCollection>
|
|
{(item) => (
|
|
<ComboboxItem key={item} value={item}>
|
|
{item}
|
|
</ComboboxItem>
|
|
)}
|
|
</ComboboxCollection>
|
|
</ComboboxGroup>
|
|
)}
|
|
</ComboboxList>
|
|
</ComboboxContent>
|
|
</Combobox>
|
|
)
|
|
}
|