import { FontStyleTypeModel, ThemeTypesModel } from '../../Themes/theme_types'; import { Size, stickerOptions } from '../../types'; type availableSize = Size; interface DisabledDates { before?: Date; after?: Date; days?: number[]; daysOfMonth?: number[]; dates?: Date[]; ranges?: DisabledRanges[]; } interface DisabledRanges { from: Date; to: Date; } interface DatePickerProps { size?: availableSize; labelPosition?: 'internal' | 'external'; value?: Date; label?: string; description?: string; errorMessage?: string; placeholder?: string; format?: string; openedDate?: Date; icon?: string; isRequired?: boolean; readOnly?: boolean; isUTCFormat?: boolean; disabledDates?: DisabledDates; isResponsive?: boolean; minDate?: Date; maxDate?: Date; minMode?: 'year' | 'month' | 'day'; isManualInput?: boolean; inputByFormatMask?: boolean; customClass?: string; isDisabled?: boolean; isError?: boolean; isInverse?: boolean; stickerOptions?: stickerOptions; errorState?: 'default' | 'focus out'; dateSelected?: (date: Date | string) => void; theme?: ThemeTypesModel; } interface iconParams { backgroundColor: string; iconColor: string; } interface inputParams { placeholderColor: string; borderColor: string; } interface readOnlyInput extends inputParams { color: string; backgroundColor: string; } interface themeType { label: { color: string; }; description: { color: string; }; errorMessage: { color: string; }; icon: { default: iconParams; hover: iconParams; pressed: iconParams; }; input: { backgroundColor: string; textColor: string; default: inputParams; hover: inputParams; active: inputParams; readOnly: readOnlyInput; errorDefault: { borderColor: string; }; errorHover: { borderColor: string; }; }; } interface sizeObject { font: FontStyleTypeModel; icon: { size: number; containerWidth: number; offset: number; }; input: { paddingTop: number; paddingBottom: number; paddingLeft: number; paddingRight: number; }; } interface viewModel { style: { day: themeType; night: themeType; }; size: { label: { font: FontStyleTypeModel; }; description: { font: FontStyleTypeModel; }; errorMessage: { font: FontStyleTypeModel; }; s: sizeObject; m: sizeObject; l: sizeObject; }; } interface ContainerProps { disabled: boolean; } interface LabelProps { requiredValue?: boolean; styled: viewModel; dayTime: 'day' | 'night'; } interface DescriptionProps { styled: viewModel; dayTime: 'day' | 'night'; } interface DateInputProps { styled: viewModel; sizeProp: availableSize; isManualInput?: boolean; dayTime: 'day' | 'night'; } interface SelectPartProps { innerLabel: boolean; focused: boolean; isActive: boolean; isError: boolean; readOnly: boolean; styled: viewModel; dayTime: 'day' | 'night'; } interface ErrorMessageProps { styled: viewModel; } interface IconContainerProps { styled: viewModel; size: availableSize; isReadOnly: boolean; allowFocusOutline: boolean; dayTime: 'day' | 'night'; } export type { DatePickerProps, viewModel, ContainerProps, LabelProps, DescriptionProps, IconContainerProps, SelectPartProps, ErrorMessageProps, DateInputProps, DisabledDates, DisabledRanges, };