1.9k
'use client' import { CommandList } from 'cmdk'import { Check, ChevronsUpDown } from 'lucide-react' import * as React from 'react' import { Button } from '@/components/ui/button'import { Command, CommandEmpty, CommandGroup, CommandInput, CommandItem,} from '@/components/ui/command'import { Popover, PopoverContent, PopoverTrigger,} from '@/components/ui/popover' import { cn } from '@/lib/utils' const frameworks = [ { value: 'next.js', label: 'Next.js', }, { value: 'sveltekit', label: 'SvelteKit', }, { value: 'nuxt.js', label: 'Nuxt.js', }, { value: 'remix', label: 'Remix', }, { value: 'astro', label: 'Astro', },] export function ComboboxDemo() { const [open, setOpen] = React.useState(false) const [value, setValue] = React.useState('') return ( <Popover open={open} onOpenChange={setOpen}> <PopoverTrigger asChild> <Button variant="noShadow" role="combobox" aria-expanded={open} className="w-[200px] justify-between" > {value ? frameworks.find((framework) => framework.value === value)?.label : 'Select framework...'} <ChevronsUpDown color="black" className="ml-2 h-4 w-4 shrink-0" /> </Button> </PopoverTrigger> <PopoverContent className="w-[200px] !border-0 p-0 font-base"> <Command> <CommandList> <CommandInput placeholder="Search framework..." /> <CommandEmpty>No framework found.</CommandEmpty> <CommandGroup> {frameworks.map((framework) => ( <CommandItem key={framework.value} value={framework.value} onSelect={(currentValue) => { setValue(currentValue === value ? '' : currentValue) setOpen(false) }} > <Check className={cn( 'mr-2 h-4 w-4', value === framework.value ? 'opacity-100' : 'opacity-0', )} /> {framework.label} </CommandItem> ))} </CommandGroup> </CommandList> </Command> </PopoverContent> </Popover> )}
import { CommandList } from 'cmdk'import { Check, ChevronsUpDown } from 'lucide-react' import * as React from 'react' import { Button } from '@/components/ui/button'import { Command, CommandEmpty, CommandGroup, CommandInput, CommandItem,} from '@/components/ui/command'import { Popover, PopoverContent, PopoverTrigger,} from '@/components/ui/popover' import { cn } from '@/lib/utils'
const frameworks = [ { value: 'next.js', label: 'Next.js', }, { value: 'sveltekit', label: 'SvelteKit', }, { value: 'nuxt.js', label: 'Nuxt.js', }, { value: 'remix', label: 'Remix', }, { value: 'astro', label: 'Astro', },]
const [open, setOpen] = React.useState(false)const [value, setValue] = React.useState('')
<Popover open={open} onOpenChange={setOpen}> <PopoverTrigger asChild> <Button variant="noShadow" role="combobox" aria-expanded={open} className="w-[200px] justify-between" > {value ? frameworks.find((framework) => framework.value === value)?.label : 'Select framework...'} <ChevronsUpDown color="black" className="ml-2 h-4 w-4 shrink-0" /> </Button> </PopoverTrigger> <PopoverContent className="w-[200px] !border-0 p-0 font-bold"> <Command> <CommandList> <CommandInput placeholder="Search framework..." /> <CommandEmpty>No framework found.</CommandEmpty> <CommandGroup> {frameworks.map((framework) => ( <CommandItem key={framework.value} value={framework.value} onSelect={(currentValue) => { setValue(currentValue === value ? '' : currentValue) setOpen(false) }} > <Check className={cn( 'mr-2 h-4 w-4', value === framework.value ? 'opacity-100' : 'opacity-0', )} /> {framework.label} </CommandItem> ))} </CommandGroup> </CommandList> </Command> </PopoverContent></Popover>
xd