import { FC, HTMLAttributes, ReactElement, ReactNode, Ref, MouseEvent, KeyboardEvent } from 'react';
import { SelectOptionProps } from './components';
export type SelectEvent = MouseEvent | null | KeyboardEvent;
export interface SelectProps extends Omit, 'onSelect'> {
/**
* Optional class name for the listbox (dropdown) container.
*/
listboxClassName?: string;
/**
* Optional class name for the outer wrapper of the Select component.
*/
wrapperClassName?: string;
/**
* Class name applied to the value container.
*/
valueClassName?: string;
/**
* Class name applied to the placeholder container when no value is selected.
*/
placeholderClassName?: string;
/**
* Custom class name applied to the root trigger button element.
*/
className?: string;
/**
* One or more `` elements defining the selectable items.
*/
children?: ReactElement | ReactElement[];
/**
* Optional content placed at the start (left) of the trigger button.
* Useful for icons or labels.
*/
startSlot?: ReactNode;
/**
* Optional content placed at the end (right) of the trigger button.
* Commonly used for chevrons or indicators.
*/
endSlot?: ReactNode;
/**
* Custom node to render in place of the selected value.
*/
valueSlot?: ReactNode;
/**
* Custom node to render when no value is selected.
*/
placeholderSlot?: ReactNode;
/**
* Fallback string shown when no value is selected and no `placeholderSlot` is provided.
*/
placeholder?: string;
/**
* Whether the select is disabled.
* Prevents interaction and applies a disabled style.
*/
disabled?: boolean;
/**
* If true, the select cannot be changed but remains focusable.
*/
readOnly?: boolean;
/**
* Visual style variant for the select control.
*/
variant?: 'inline' | 'field';
/**
* Visual size of the select control.
*/
size?: 'small' | 'medium' | 'large';
/**
* Ref to the combobox or button element for DOM access or focus management.
*/
comboboxRef?: Ref;
/**
* Makes the dropdown listbox span the full width of the trigger.
*/
fullWidthListbox?: boolean;
/**
* The currently selected value (controlled).
*/
value?: string | number | undefined;
/**
* The default selected value (uncontrolled).
*/
defaultValue?: string | number | undefined;
/**
* Callback fired when an option is selected.
*
* @param event - The triggering event
* @param value - The selected option value
*/
onSelect?(event: SelectEvent, value: string | number | undefined): void;
/**
* Ref to the trigger button element.
*/
ref?: Ref;
/**
* Optional `name` for form integration.
* Included in form submissions when value is set.
*/
name?: string;
}
/** A Select is a UI component that provides a dropdown menu of options from which users can choose one. It is commonly used for forms and filtering, offering a list of predefined values in a compact, accessible manner */
export declare const Select: FC;