'use client';
import * as React from 'react';
import { Combobox as ComboboxPrimitive } from '@base-ui/react';
import { CheckIcon, ChevronDownIcon, XIcon } from 'lucide-react';
import {
Button,
cn,
InputGroup,
InputGroupAddon,
InputGroupButton,
InputGroupInput,
} from '@gib/ui';
const Combobox = ComboboxPrimitive.Root;
const ComboboxValue = ({ ...props }: ComboboxPrimitive.Value.Props) => (
);
const ComboboxTrigger = ({
className,
children,
...props
}: ComboboxPrimitive.Trigger.Props) => (
{children}
);
const ComboboxClear = ({
className,
...props
}: ComboboxPrimitive.Clear.Props) => (
}
/>
);
const ComboboxInput = ({
className,
children,
disabled = false,
showTrigger = true,
showClear = false,
...props
}: ComboboxPrimitive.Input.Props & {
showTrigger?: boolean;
showClear?: boolean;
}) => (
}
{...props}
/>
{showTrigger && (
}
data-slot='input-group-button'
className='group-has-data-[slot=combobox-clear]/input-group:hidden data-pressed:bg-transparent'
disabled={disabled}
/>
)}
{showClear && }
{children}
);
const ComboboxContent = ({
className,
side = 'bottom',
sideOffset = 6,
align = 'start',
alignOffset = 0,
anchor,
...props
}: ComboboxPrimitive.Popup.Props &
Pick<
ComboboxPrimitive.Positioner.Props,
'side' | 'align' | 'sideOffset' | 'alignOffset' | 'anchor'
>) => (
);
const ComboboxList = ({
className,
...props
}: ComboboxPrimitive.List.Props) => (
);
const ComboboxItem = ({
className,
children,
...props
}: ComboboxPrimitive.Item.Props) => (
{children}
}
/>
);
const ComboboxGroup = ({
className,
...props
}: ComboboxPrimitive.Group.Props) => (
);
const ComboboxLabel = ({
className,
...props
}: ComboboxPrimitive.GroupLabel.Props) => (
);
const ComboboxCollection = ({
...props
}: ComboboxPrimitive.Collection.Props) => (
);
const ComboboxEmpty = ({
className,
...props
}: ComboboxPrimitive.Empty.Props) => (
);
const ComboboxSeparator = ({
className,
...props
}: ComboboxPrimitive.Separator.Props) => (
);
const ComboboxChips = ({
className,
...props
}: React.ComponentPropsWithRef &
ComboboxPrimitive.Chips.Props) => (
);
const ComboboxChip = ({
className,
children,
showRemove = true,
...props
}: ComboboxPrimitive.Chip.Props & {
showRemove?: boolean;
}) => (
{children}
{showRemove && (
}
/>
)}
);
const ComboboxChipsInput = ({
className,
...props
}: ComboboxPrimitive.Input.Props) => (
);
const useComboboxAnchor = () => React.useRef(null);
export {
Combobox,
ComboboxInput,
ComboboxContent,
ComboboxList,
ComboboxItem,
ComboboxGroup,
ComboboxLabel,
ComboboxCollection,
ComboboxEmpty,
ComboboxSeparator,
ComboboxChips,
ComboboxChip,
ComboboxChipsInput,
ComboboxTrigger,
ComboboxValue,
useComboboxAnchor,
};