import { FontStyleTypeModel, ThemeTypesModel } from '../../Themes/theme_types'; import { Size, stickerOptions } from '../../types'; import * as dayjs from 'dayjs'; type availableSize = Size; interface DisabledDates { before?: Date; after?: Date; days?: number[]; daysOfMonth?: number[]; dates?: Date[]; ranges?: DisabledRanges[]; } interface DisabledRanges { from: Date; to: Date; } interface DateRangePickerProps { value?: Date[]; label?: string; size?: availableSize; labelPosition?: 'internal' | 'external'; description?: string; errorMessage?: string; placeholder?: string[]; format?: string; openedDate?: Date; disabledDates?: DisabledDates; icon?: string; isRequired?: boolean; isUTCFormat?: boolean; isResponsive?: boolean; minDate?: Date; maxDate?: Date; isManualInput?: boolean; inputByFormatMask?: boolean; customClass?: string; isDisabled?: boolean; isInverse?: boolean; readOnly?: boolean; isError?: boolean; stickerOptions?: stickerOptions; errorState?: 'default' | 'focus out'; dateRangeSelected?: (date: Date[] | string[] | null) => void; theme?: ThemeTypesModel; } interface rangeObjType { first: dayjs.Dayjs | undefined; second: dayjs.Dayjs | undefined; } 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 RangeInfoProps { styled: viewModel; sizeProp: availableSize; isManualInput?: boolean; } interface RangeInputProps { styled: viewModel; sizeProp: availableSize; hintText: boolean; isManualInput?: boolean; dayTime: 'day' | 'night'; } interface InfoSpanProps { styled: viewModel; sizeProp: availableSize; isManualInput?: boolean; } interface DateInputProps { styled: viewModel; sizeProp: availableSize; isManualInput?: boolean; dayTime: 'day' | 'night'; } interface SelectPartProps { innerLabel: boolean; focused: boolean; isActive: boolean; readOnly: boolean; manualInput: boolean; isError: 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 { DateRangePickerProps, rangeObjType, viewModel, ContainerProps, LabelProps, DescriptionProps, RangeInfoProps, IconContainerProps, SelectPartProps, InfoSpanProps, RangeInputProps, ErrorMessageProps, DateInputProps, };