Combobox
adn-ui/comboboxFreeComponent
An input combined with a filterable popup list of predefined items.
Live preview
live · rendered by the registry
Rendered by adn-ui on their own page — this is the component running, not a screenshot of it.Install it
npx shadcn@latest add https://ui.awaiden.com/r/combobox.jsonSource
1"use client";23import "./combobox.css";4import { Combobox as BaseCombobox } from "@base-ui/react/combobox";5import type React from "react";6import { cn } from "tailwind-variants";78import { ComboboxContext, useComboboxContext } from "./combobox.context";9import { comboboxVariants, type ComboboxVariants } from "./combobox.variants";1011export type ComboboxProps<12 Item = any,13 Multiple extends boolean | undefined = false,14> = ComboboxVariants & React.ComponentProps<typeof BaseCombobox.Root<Item, Multiple>>;1516export function ComboboxRoot<Item = any, Multiple extends boolean | undefined = false>({17 children,18 size,19 variant,20 ...props21}: ComboboxProps<Item, Multiple>) {22 const slots = comboboxVariants({ size, variant });2324 return (25 <ComboboxContext.Provider value={{ slots }}>26 <BaseCombobox.Root {...props}>{children}</BaseCombobox.Root>27 </ComboboxContext.Provider>28 );29}3031export type ComboboxInputGroupProps = React.ComponentProps<typeof BaseCombobox.InputGroup>;3233export const ComboboxInputGroup = ({ className, ...props }: ComboboxInputGroupProps) => {34 const { slots } = useComboboxContext();35 return <BaseCombobox.InputGroup className={cn(slots.inputGroup(), className)} {...props} />;36};3738export type ComboboxInputProps = React.ComponentProps<typeof BaseCombobox.Input>;3940export const ComboboxInput = ({41 className,42 children: _children,43 dangerouslySetInnerHTML: _dangerouslySetInnerHTML,44 ...props45}: ComboboxInputProps & { children?: React.ReactNode; dangerouslySetInnerHTML?: any }) => {46 const { slots } = useComboboxContext();47 return <BaseCombobox.Input className={cn(slots.input(), className)} {...props} />;48};4950export type ComboboxTriggerProps = React.ComponentProps<typeof BaseCombobox.Trigger>;5152export const ComboboxTrigger = ({ children, className, ...props }: ComboboxTriggerProps) => {53 const { slots } = useComboboxContext();54 return (55 <BaseCombobox.Trigger className={cn(slots.trigger(), className)} {...props}>56 {children ?? (57 <svg className="h-4 w-4 fill-current" viewBox="0 0 16 16">58 <path d="M12 6H4l4 4.5z" />59 </svg>60 )}61 </BaseCombobox.Trigger>62 );63};6465export type ComboboxClearProps = React.ComponentProps<typeof BaseCombobox.Clear>;6667export const ComboboxClear = ({ children, className, ...props }: ComboboxClearProps) => {68 const { slots } = useComboboxContext();69 return (70 <BaseCombobox.Clear className={cn(slots.clear(), className)} {...props}>71 {children ?? (72// … truncated
What it pulls in
npm packages
Files it writes
More from adn-ui
All 46 items| Component | Registry | Kind | Access | Installs | Command |
|---|---|---|---|---|---|
| Accordionaccordion | adn-ui | Components | Free | 2 deps · 5 files | |
| Alert Dialogalert-dialog | adn-ui | Components | Free | 2 deps · 5 files | |
| Aspect Ratioaspect-ratio | adn-ui | Components | Free | 1 dep · 5 files | |
| Autocompleteautocomplete | adn-ui | Components | Free | 2 deps · 5 files | |
| Avataravatar | adn-ui | Components | Free | 2 deps · 5 files | |
| Badgebadge | adn-ui | Components | Free | 1 dep · 5 files | |
| Breadcrumbbreadcrumb | adn-ui | Components | Free | 1 dep · 5 files | |
| Buttonbutton | adn-ui | Components | Free | 1 dep · 4 files |
