import { ReactNode, RefObject, CSSProperties } from 'react'; /** * Font size value - can be a theme token key or a CSS value */ export type FontSizeValue = 'xs' | 'sm' | 'base' | 'md' | 'lg' | 'xl' | CSSProperties['fontSize']; /** * Option for the Select component */ export interface SelectOption { /** Unique value for the option */ value: string; /** Display label for the option */ label: string; /** Whether the option is disabled */ disabled?: boolean; /** Optional icon to display with the option */ icon?: ReactNode; /** * Whether the option is fixed (cannot be removed in multi-select) */ isFixed?: boolean; } /** * Props for the Select component */ export interface SelectProps { /** Currently selected value */ value: string | null; /** Change handler - called when selection changes */ onChange: (value: string | null) => void; /** Options to display in the dropdown */ options: SelectOption[]; /** Label for the select */ label?: string; /** Placeholder text when no value is selected */ placeholder?: string; /** Size variant (sm: 32px, md: 36px) */ size?: 'sm' | 'md'; /** Visual variant */ variant?: 'default' | 'filled' | 'outlined'; /** Error state */ error?: boolean; /** Error message to display */ errorMessage?: string; /** Disabled state */ disabled?: boolean; /** Whether the field is required */ required?: boolean; /** Full width */ fullWidth?: boolean; /** Enable search/filter functionality */ searchable?: boolean; /** Additional CSS classes */ className?: string; /** Accessible name */ 'aria-label'?: string; /** Test ID for testing (deprecated, use dataTestId) */ 'data-testid'?: string; /** Test identifier for automated testing */ dataTestId?: string; /** Data identifier for ib-ui compatibility */ dataId?: string; /** * Alias for searchable - ib-ui compatibility */ isSearchable?: boolean; /** * Show a clear button to reset the selection * Alias for isClearable - matches Multiselect API */ clearable?: boolean; /** * Show a clear button to reset the selection */ isClearable?: boolean; /** * Whether the select is loading */ isLoading?: boolean; /** * Assistive text displayed below the select */ assistiveText?: string | ReactNode; /** * Callback when menu opens */ onMenuOpen?: () => void; /** * Callback when menu closes */ onMenuClose?: () => void; /** * Callback when search input changes */ onInputChange?: (inputValue: string) => void; /** * Ref to the select element */ selectRef?: RefObject; /** * Custom name for form submission */ name?: string; /** * Menu placement relative to the trigger */ menuPlacement?: 'auto' | 'bottom' | 'top'; /** * aria-describedby attribute */ 'aria-describedby'?: string; /** * aria-labelledby attribute */ 'aria-labelledby'?: string; /** * No results message when filtering */ noResultsMessage?: string; /** * Search placeholder text */ searchPlaceholder?: string; /** * Font size for the field label * Can be a theme token key ('xs', 'sm', 'base', 'md', 'lg', 'xl') or CSS value */ labelFontSize?: FontSizeValue; /** * Font size for the selected value display * Can be a theme token key ('xs', 'sm', 'base', 'md', 'lg', 'xl') or CSS value */ selectedFontSize?: FontSizeValue; /** * Font size for options in the dropdown menu * Can be a theme token key ('xs', 'sm', 'base', 'md', 'lg', 'xl') or CSS value */ optionFontSize?: FontSizeValue; /** * Custom focus color for the select border and box-shadow * When provided, overrides the default theme-based focus styling * Accepts any valid CSS color value (hex, rgb, hsl, etc.) */ focusColor?: string; } //# sourceMappingURL=Select.types.d.ts.map