"use client" import { Autocomplete as AutocompletePrimitive } from "@base-ui/react/autocomplete" import { cva, type VariantProps } from "class-variance-authority" import { cn } from "@/lib/utils" import { ScrollArea } from "@/components/ui/scroll-area" import { XIcon, ChevronsUpDownIcon } from "lucide-react" const inputVariants = cva( "outline-none flex w-full text-foreground placeholder:text-muted-foreground disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 [[readonly]]:bg-muted/80 [[readonly]]:cursor-not-allowed border border-input focus-visible:border-ring aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 rounded-lg bg-transparent dark:bg-input/30 text-sm transition-colors focus-visible:ring-ring/50 focus-visible:ring-3 aria-invalid:ring-3", { variants: { size: { sm: "h-7 px-2 [&~[data-slot=autocomplete-clear]]:end-1.5 [&~[data-slot=autocomplete-trigger]]:end-1.5", default: "h-8 px-2.5 [&~[data-slot=autocomplete-clear]]:end-1.75 [&~[data-slot=autocomplete-trigger]]:end-1.75", lg: "h-9 px-2.5 [&~[data-slot=autocomplete-clear]]:end-2 [&~[data-slot=autocomplete-trigger]]:end-2", }, }, defaultVariants: { size: "default", }, } ) const Autocomplete = AutocompletePrimitive.Root function AutocompleteValue({ ...props }: AutocompletePrimitive.Value.Props) { return ( ) } function AutocompleteInput({ className, size = "default", showClear = false, showTrigger = false, ...props }: Omit & VariantProps & { showClear?: boolean showTrigger?: boolean }) { return (
{showTrigger && } {showClear && }
) } function AutocompleteStatus({ className, ...props }: AutocompletePrimitive.Status.Props) { return ( ) } function AutocompletePortal({ ...props }: AutocompletePrimitive.Portal.Props) { return ( ) } function AutocompleteBackdrop({ ...props }: AutocompletePrimitive.Backdrop.Props) { return ( ) } function AutocompletePositioner({ className, ...props }: AutocompletePrimitive.Positioner.Props) { return ( ) } function AutocompleteList({ className, scrollAreaClassName, ...props }: AutocompletePrimitive.List.Props & { scrollAreaClassName?: string scrollFade?: boolean scrollbarGutter?: boolean }) { return ( ) } function AutocompleteCollection({ ...props }: React.ComponentProps) { return ( ) } function AutocompleteRow({ className, ...props }: React.ComponentProps) { return ( ) } function AutocompleteItem({ className, ...props }: React.ComponentProps) { return ( ) } export interface AutocompleteContentProps extends React.ComponentProps< typeof AutocompletePrimitive.Popup > { 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"] showBackdrop?: boolean } function AutocompleteContent({ className, children, showBackdrop = false, align = "start", sideOffset = 4, alignOffset = 0, side = "bottom", anchor, ...props }: AutocompleteContentProps) { return ( {showBackdrop && }
{children}
) } function AutocompleteGroup({ ...props }: React.ComponentProps) { return ( ) } function AutocompleteGroupLabel({ className, ...props }: React.ComponentProps) { return ( ) } function AutocompleteEmpty({ className, ...props }: React.ComponentProps) { return ( ) } function AutocompleteClear({ className, ...props }: React.ComponentProps) { return ( ) } function AutocompleteTrigger({ className, ...props }: React.ComponentProps) { return ( ) } function AutocompleteArrow({ ...props }: React.ComponentProps) { return ( ) } function AutocompleteSeparator({ className, ...props }: React.ComponentProps) { return ( ) } export { Autocomplete, AutocompleteValue, AutocompleteTrigger, AutocompleteInput, AutocompleteStatus, AutocompletePortal, AutocompleteBackdrop, AutocompletePositioner, AutocompleteContent, AutocompleteList, AutocompleteCollection, AutocompleteRow, AutocompleteItem, AutocompleteGroup, AutocompleteGroupLabel, AutocompleteEmpty, AutocompleteClear, AutocompleteArrow, AutocompleteSeparator, }