Autocomplete
retab-ui/autocompleteFreeComponent
An autocomplete input built on Base UI primitives.
Install it
npx shadcn@latest add https://ui.retab.com/r/autocomplete.jsonSource
1"use client";23import type React from "react";4import { Autocomplete as AutocompletePrimitive } from "@base-ui/react/autocomplete";5import { ChevronsUpDown, X } from "lucide-react";67import { cn } from "@/lib/utils";8import { Input } from "@/components/ui/input";9import { ScrollArea } from "@/components/ui/scroll-area";1011export const Autocomplete: typeof AutocompletePrimitive.Root =12 AutocompletePrimitive.Root;1314export function AutocompleteInput({15 className,16 showTrigger = false,17 showClear = false,18 startAddon,19 size,20 triggerProps,21 clearProps,22 ...props23}: Omit<AutocompletePrimitive.Input.Props, "size"> & {24 showTrigger?: boolean;25 showClear?: boolean;26 startAddon?: React.ReactNode;27 size?: "sm" | "default" | "lg" | number;28 ref?: React.Ref<HTMLInputElement>;29 triggerProps?: AutocompletePrimitive.Trigger.Props;30 clearProps?: AutocompletePrimitive.Clear.Props;31}): React.ReactElement {32 const sizeValue = (size ?? "default") as "sm" | "default" | "lg" | number;3334 return (35 <AutocompletePrimitive.InputGroup36 className="text-foreground relative w-full not-has-[>*.w-full]:w-fit has-disabled:opacity-64"37 data-slot="autocomplete-input-group"38 >39 {startAddon && (40 <div41 aria-hidden="true"42 className="pointer-events-none absolute inset-y-0 start-px z-10 flex items-center ps-[calc(--spacing(3)-1px)] opacity-80 has-[+[data-size=sm]]:ps-[calc(--spacing(2.5)-1px)] [&_svg]:-mx-0.5 [&_svg:not([class*='size-'])]:size-4.5 sm:[&_svg:not([class*='size-'])]:size-4"43 data-slot="autocomplete-start-addon"44 >45 {startAddon}46 </div>47 )}48 <AutocompletePrimitive.Input49 className={cn(50 startAddon &&51 "*:data-[slot=autocomplete-input]:ps-[calc(--spacing(8.5)-1px)] data-[size=sm]:*:data-[slot=autocomplete-input]:ps-[calc(--spacing(7.5)-1px)] sm:*:data-[slot=autocomplete-input]:ps-[calc(--spacing(8)-1px)] sm:data-[size=sm]:*:data-[slot=autocomplete-input]:ps-[calc(--spacing(7)-1px)]",52 sizeValue === "sm"53 ? "has-[+[data-slot=autocomplete-trigger],+[data-slot=autocomplete-clear]]:*:data-[slot=autocomplete-input]:pe-6.5"54 : "has-[+[data-slot=autocomplete-trigger],+[data-slot=autocomplete-clear]]:*:data-[slot=autocomplete-input]:pe-7",55 className,56 )}57 data-slot="autocomplete-input"58 render={<Input nativeInput size={sizeValue} />}59 {...props}60 />61 {showTrigger && (62// … truncated
What it pulls in
npm packages
Other registry items
Files it writes
More from retab-ui
All 130 items| Component | Registry | Kind | Access | Installs | Command |
|---|---|---|---|---|---|
| Alertalert | retab-ui | Components | Free | 1 dep | |
| Alert Dialogalert-dialog | retab-ui | Components | Free | 1 dep | |
| Aspect Ratioaspect-ratio | retab-ui | Components | Free | no deps | |
| Attachment Sidebarattachment-sidebar | retab-ui | Components | Free | 1 dep | |
| Calendarcalendar | retab-ui | Components | Free | 2 deps | |
| Code Viewercode-viewer | retab-ui | Components | Free | 2 deps · 32 files | |
| Commandcommand | retab-ui | Components | Free | 2 deps | |
| CSV source adaptercsv-source | retab-ui | Components | Free | no deps |
