import { AcceptableValue } from 'reka-ui';
/**
 * A listbox component for displaying a list of selectable options.
 * Use for dropdown menus, selection lists, or any list-based selection UI.
 * @category Form Inputs
 * @useCases option selection, dropdown list, selectable items, multi-select
 * @keywords listbox, select, options, list, dropdown, choices
 * @related UiSelect, UiTagsInput
 */
export interface UiListboxProps {
    /**
     * The controlled value of the listbox. Optional; can be bound with v-model.
     * - Omit for uncontrolled mode
     * - Use `v-model` for controlled mode
     */
    modelValue?: AcceptableValue | AcceptableValue[];
    /**
     * The value of the listbox when initially rendered.
     */
    defaultValue?: AcceptableValue | AcceptableValue[];
    /**
     * Whether multiple options can be selected.
     * @default false
     */
    multiple?: boolean;
    /**
     * The orientation of the listbox.
     */
    orientation?: 'horizontal' | 'vertical';
    /**
     * The reading direction of the listbox.
     */
    dir?: 'ltr' | 'rtl';
    /**
     * When true, prevents the user from interacting with listbox.
     * @default false
     */
    disabled?: boolean;
    /**
     * How multiple selection should behave.
     * @default 'toggle'
     */
    selectionBehavior?: 'toggle' | 'replace';
    /**
     * When true, hover over item will trigger highlight.
     * @default false
     */
    highlightOnHover?: boolean;
    /**
     * Use this to compare objects by a particular field.
     */
    by?: string | ((a: AcceptableValue, b: AcceptableValue) => boolean);
}
/**
 * Props for the UiListboxContent component.
 * Container that wraps the listbox items.
 */
export type UiListboxContentProps = Record<string, never>;
/**
 * Props for the UiListboxFilter component.
 * Provides a filter input for searching listbox items.
 */
export interface UiListboxFilterProps {
    /**
     * Placeholder text for the filter input.
     */
    placeholder?: string;
    /**
     * Whether to render as a child element (for composition with other components).
     */
    asChild?: boolean;
}
/**
 * Props for the UiListboxItem component.
 * Represents a selectable option in the listbox.
 */
export interface UiListboxItemProps {
    /**
     * The value of the listbox item.
     */
    value: AcceptableValue;
    /**
     * Whether the item is disabled.
     * @default false
     */
    disabled?: boolean;
}
/**
 * Props for the UiListboxItemIndicator component.
 * Displays a visual indicator when the item is selected.
 */
export type UiListboxItemIndicatorProps = Record<string, never>;
/**
 * Props for the UiListboxGroup component.
 * Groups related listbox items together.
 */
export type UiListboxGroupProps = Record<string, never>;
/**
 * Props for the UiListboxGroupLabel component.
 * Displays a label for a group of listbox items.
 */
export type UiListboxGroupLabelProps = Record<string, never>;
