import { FontStyleTypeModel, ThemeTypesModel } from '../../Themes/theme_types'; import { Size } from '../../types'; type availableSizes = Size.s | Size.m | Size.l; interface SearchPropsType { value?: string; size?: availableSizes; ariaLabel?: string; placeholder?: string; className?: string; isTrimValue?: boolean; readOnly?: boolean; icon?: string; theme?: ThemeTypesModel; isInverse?: boolean; isDisabled?: boolean; valueChanged?: (val: string) => void; searchSubmitted?: (val: string) => void; lostFocus?: () => void; } interface LabelPropsTypes { isFocused: boolean; isDisabled: boolean; color: 'dark' | 'light'; styled: ModelView; theme: ThemeTypesModel; size: availableSizes; } interface InputPropsTypes { styled: ModelView; theme: ThemeTypesModel; sizeProp: availableSizes; color: 'dark' | 'light'; } interface colorVariants { light: componentsVars; dark: componentsVars; } interface componentsVars { input: componentsStates; } interface componentsStates { default: stateParams; hover: stateParams; active: stateParams; readOnly: stateParams; } interface stateParams { placeholderColor: string; textColor: string; borderColor: string; backgroundColor: string; searchIconColor: string; } interface sizeVariants { s: sizeComponents; m: sizeComponents; l: sizeComponents; } interface sizeComponents { cancelIcon: { size: number; padding: number; }; searchIcon: { padding: number; size: number; shiftTop: number; shiftLeft: number; }; input: { paddingTop: number; paddingLeft: number; paddingRight: number; paddingBottom: number; }; font: FontStyleTypeModel; } interface ModelView { style: colorVariants; size: sizeVariants; } export type { SearchPropsType, LabelPropsTypes, InputPropsTypes, ModelView };