"use client"; import { Autocomplete as AutocompletePrimitive } from "@base-ui/react/autocomplete"; import { ChevronsUpDownIcon, XIcon } from "lucide-react"; import { cn } from "~/lib/utils"; import { Input } from "~/components/ui/input"; import { ScrollArea } from "~/components/ui/scroll-area"; const Autocomplete = AutocompletePrimitive.Root; function AutocompleteInput({ className, showTrigger = false, showClear = false, startAddon, size, ...props }: Omit & { showTrigger?: boolean; showClear?: boolean; startAddon?: React.ReactNode; size?: "sm" | "default" | "lg" | number; ref?: React.Ref; }) { const sizeValue = (size ?? "default") as "sm" | "default" | "lg" | number; return (
{startAddon && ( )} } {...props} /> {showTrigger && ( )} {showClear && ( )}
); } function AutocompletePopup({ className, children, side = "bottom", sideOffset = 4, alignOffset, align = "start", anchor, ...props }: AutocompletePrimitive.Popup.Props & { align?: AutocompletePrimitive.Positioner.Props["align"]; sideOffset?: AutocompletePrimitive.Positioner.Props["sideOffset"]; alignOffset?: AutocompletePrimitive.Positioner.Props["alignOffset"]; side?: AutocompletePrimitive.Positioner.Props["side"]; anchor?: AutocompletePrimitive.Positioner.Props["anchor"]; }) { return ( {children} ); } function AutocompleteItem({ className, children, ...props }: AutocompletePrimitive.Item.Props) { return ( {children} ); } function AutocompleteSeparator({ className, ...props }: AutocompletePrimitive.Separator.Props) { return ( ); } function AutocompleteGroup({ className, ...props }: AutocompletePrimitive.Group.Props) { return ( ); } function AutocompleteGroupLabel({ className, ...props }: AutocompletePrimitive.GroupLabel.Props) { return ( ); } function AutocompleteEmpty({ className, ...props }: AutocompletePrimitive.Empty.Props) { return ( ); } function AutocompleteRow({ className, ...props }: AutocompletePrimitive.Row.Props) { return ( ); } function AutocompleteValue({ ...props }: AutocompletePrimitive.Value.Props) { return ; } function AutocompleteList({ className, ...props }: AutocompletePrimitive.List.Props) { return ( ); } function AutocompleteClear({ className, ...props }: AutocompletePrimitive.Clear.Props) { return ( ); } function AutocompleteStatus({ className, ...props }: AutocompletePrimitive.Status.Props) { return ( ); } function AutocompleteCollection({ ...props }: AutocompletePrimitive.Collection.Props) { return ; } function AutocompleteTrigger({ className, children, ...props }: AutocompletePrimitive.Trigger.Props) { return ( {children} ); } const useAutocompleteFilter = AutocompletePrimitive.useFilter; export { Autocomplete, AutocompleteInput, AutocompleteTrigger, AutocompletePopup, AutocompleteItem, AutocompleteSeparator, AutocompleteGroup, AutocompleteGroupLabel, AutocompleteEmpty, AutocompleteValue, AutocompleteList, AutocompleteClear, AutocompleteStatus, AutocompleteRow, AutocompleteCollection, useAutocompleteFilter, };