import React from 'react'; import { CSSObject } from 'styled-components'; import { BoxSystemProps } from './Box'; import { Item } from '../utils/selectableItems'; import { StyleConfig, PartStyles } from '../utils/styleConfig'; export declare type SelectParts = { button: 'hover' | 'focus' | 'active' | 'disabled'; buttonIcon: ''; menu: ''; scrollIndicator: 'hover'; item: 'highlighted' | 'grouped' | 'disabled'; itemIcon: ''; label: ''; separator: ''; }; export declare type SelectStyleProp = { styleConfig?: StyleConfig; }; export declare type SelectSystemProps = BoxSystemProps; export declare type SelectSharedProps = { children: React.ReactNode; className?: string; style?: React.CSSProperties; 'aria-label'?: string; 'aria-labelledby'?: string; 'aria-describedby'?: string; id?: string; name?: string; autoFocus?: boolean; disabled?: boolean; required?: boolean; readOnly?: boolean; tabIndex?: number; value?: string; onValueChange?: (value?: string) => void; defaultValue?: string; isOpen?: boolean; onIsOpenChange?: (isOpen?: boolean) => void; }; export declare const systemProps: (props: any) => any[]; export declare const systemPropNames: string[]; export declare const UseNativeSelectContext: React.Context; export declare type OptionProps = { label: string; value: string; disabled?: boolean; }; export declare function Option(props: OptionProps): null; export declare type OptionGroupProps = { children: React.ReactNode; label?: string; disabled?: boolean; }; export declare function OptionGroup(props: OptionGroupProps): null; declare type SelectMenuChild = { type: 'option'; item: Item & { index: number; }; isInGroup?: boolean; } | { type: 'label'; label: string; } | { type: 'separator'; }; export declare function getSelectMenuChildren(children: any): SelectMenuChild[]; export declare function getItemsFromChildren(children: any): Item[]; export declare function getItemsFromSelectMenuChildren(menuChildren: SelectMenuChild[]): Item[]; export declare function useSelectValueState(items: Item[], props: SelectSharedProps): readonly [string | undefined, (state?: string | undefined) => void, () => void]; export declare const selectButtonFunctionalStyles: CSSObject; export declare const selectButtonLabelFunctionalStyles: CSSObject; declare type ButtonIconPartProps = { buttonIconStyles?: PartStyles; }; export declare function ButtonIconPart(props: ButtonIconPartProps): JSX.Element; export {};