import React from 'react'; import { FontStyleTypeModel, ThemeTypesModel } from '../../Themes/theme_types'; import { Size, stickerOptions } from '../../types'; type dayTime = 'day' | 'night'; type kindInteraction = 'mouse' | 'keyboard'; type sizeAvailable = Size.s | Size.m | Size.l; interface selectItemPropTypes { label: string; value: string; counter?: string; isDisabled?: boolean; } interface SelectPropsType { selectItems: selectItemPropTypes[]; size?: sizeAvailable; labelPosition?: 'external' | 'internal'; label?: string; ariaLabel?: string; description?: string; value?: string; placeholder?: string; theme?: ThemeTypesModel; icon?: string; errorMessage?: string; isResponsive?: boolean; className?: string; errorState?: 'default' | 'focus out'; isDisabled?: boolean; isInverse?: boolean; isError?: boolean; stickerOptions?: stickerOptions; isRequired?: boolean; placeholderTemplate?: () => React.ReactElement; selectedTemplate?: (selectedItem: selectItemPropTypes | null) => React.ReactElement; selectOptionTemplate?: (optionItem: selectItemPropTypes) => React.ReactElement; valueChanged?: (val: selectItemPropTypes) => void; } interface ContainerProps { isDisabled: boolean; isError: boolean; dayTime: dayTime; styled: ModelView; } interface LabelProps { isRequired: boolean; styled: ModelView; isInner?: boolean; dayTime: dayTime; } interface DescriptionProps { styled: ModelView; dayTime: dayTime; } interface ActiveItemProps { styled: ModelView; size: sizeAvailable; dayTime: dayTime; } interface PlaceholderProps { styled: ModelView; size: sizeAvailable; } interface SelectFieldProps { styled: ModelView; size: sizeAvailable; dayTime: dayTime; isOpened: boolean; isFocused: boolean; isError: boolean; } interface RightIconProps { styled: ModelView; size: sizeAvailable; dayTime: dayTime; } interface inputViewParams { placeholderColor?: string; textColor?: string; borderColor?: string; backgroundColor?: string; } interface inputStates { default: inputViewParams; hover: inputViewParams; active: inputViewParams; errorDefault: inputViewParams; errorHover: inputViewParams; } interface sizeElementsParams { iconContainer: { width: number; height: number; }; icon: { width: number; height: number; }; input: { paddingTop: number; paddingLeft: number; paddingRight: number; paddingBottom: number; minHeight: number; }; font: FontStyleTypeModel; } interface dayTheme { label: { color: string; }; description: { color: string; }; errorMessage: { color: string; }; input: inputStates; chevronIconColor: string; } interface ModelView { style: { day: dayTheme; night: dayTheme; }; size: { label: { font: FontStyleTypeModel; }; description: { font: FontStyleTypeModel; }; s: sizeElementsParams; m: sizeElementsParams; l: sizeElementsParams; }; } export type { selectItemPropTypes, kindInteraction, SelectPropsType, ContainerProps, LabelProps, DescriptionProps, ActiveItemProps, PlaceholderProps, SelectFieldProps, RightIconProps, ModelView, };