Combobox
trovecn/comboboxFreeComponent
Base UI combobox — a text input filtered against a list as you type.
Install it
npx shadcn@latest add https://trovecn.dev/r/combobox.jsonSource
1"use client";23import {4 createContext,5 useCallback,6 useContext,7 useEffect,8 useMemo,9 useRef,10 useState,11 type ReactNode,12} from "react";13import { Combobox as ComboboxPrimitive } from "@base-ui/react/combobox";14import { motion, AnimatePresence, useReducedMotion } from "motion/react";15import { CheckIcon, ChevronDownIcon, SearchIcon, XIcon } from "lucide-react";1617import { cn } from "@/lib/utils";18import { spring } from "@/lib/springs";19import {20 useProximityHover,21 proximityHoverWashClassName,22 proximityHoverWashOpacity,23} from "@/hooks/use-proximity-hover";2425interface ComboboxProximityContextValue {26 registerItem: (index: number, element: HTMLElement | null) => void;27}2829const ComboboxProximityContext = createContext<ComboboxProximityContextValue | null>(null);3031function Combobox<Value, Multiple extends boolean | undefined = false>({32 ...props33}: ComboboxPrimitive.Root.Props<Value, Multiple>) {34 return <ComboboxPrimitive.Root data-slot="combobox" {...props} />;35}3637function ComboboxInputGroup({ className, ...props }: ComboboxPrimitive.InputGroup.Props) {38 return (39 <ComboboxPrimitive.InputGroup40 data-slot="combobox-input-group"41 className={cn(42 "flex h-8 w-full min-w-0 items-center gap-1.5 rounded-lg border border-input bg-transparent pr-1.5 pl-2.5 transition-colors outline-none focus-within:border-ring focus-within:ring-3 focus-within:ring-ring/50 has-data-disabled:pointer-events-none has-data-disabled:opacity-50 dark:bg-input/30",43 className,44 )}45 {...props}46 />47 );48}4950function ComboboxInput({ className, ...props }: ComboboxPrimitive.Input.Props) {51 return (52 <ComboboxPrimitive.Input53 data-slot="combobox-input"54 className={cn(55 "h-full min-w-0 flex-1 bg-transparent text-body text-foreground outline-none placeholder:text-muted-foreground",56 className,57 )}58 {...props}59 />60 );61}6263function ComboboxSearchIcon({ className, ...props }: React.ComponentProps<"span">) {64 return (65 <span66 data-slot="combobox-search-icon"67 aria-hidden68 className={cn("flex shrink-0 items-center justify-center text-muted-foreground", className)}69 {...props}70 >71 <SearchIcon className="size-4" />72 </span>73 );74}7576function ComboboxIcon({ className, ...props }: ComboboxPrimitive.Icon.Props) {77 return (78 <ComboboxPrimitive.Icon79 data-slot="combobox-icon"80 className={cn("shrink-0 text-muted-foreground", className)}81 {...props}82 >83// … truncated
What it pulls in
npm packages
Other registry items
Files it writes
More from trovecn
All 26 items| Component | Registry | Kind | Access | Installs | Command |
|---|---|---|---|---|---|
| Accordionaccordion | trovecn | Components | Free | 3 deps | |
| Agent Activityagent-activity | trovecn | Components | Free | 2 deps | |
| Approval Requestapproval-request | trovecn | Components | Free | 2 deps | |
| Buttonbutton | trovecn | Components | Free | 2 deps | |
| Checkboxcheckbox | trovecn | Components | Free | 2 deps | |
| Checkbox Groupcheckbox-group | trovecn | Components | Free | 2 deps | |
| Comparison Slidercomparison-slider | trovecn | Components | Free | 1 dep | |
| Context Menucontext-menu | trovecn | Components | Free | 3 deps |
