import { ThemeTypesModel, FontStyleTypeModel } from '../../Themes/theme_types'; import { Color, Kind } from '../../types'; type availableColor = Color.green | Color.blue | Color.dark; interface fileState { id: string; name: string; extension: string; size: number; error: string; progress: number; data: File; } interface UploadAreaProps { filesState?: fileState[]; heading?: string; description?: string; buttonLabel?: string; color?: availableColor; dragAndDropIcon?: string; dragAndDropText?: string; isDragAndDrop?: boolean; isMultiple?: boolean; allowFilesWithoutType?: boolean; maxFiles?: number; maxSize?: number; minSize?: number; maxTotalSize?: number; maxSymbolsNameError?: number; maxSymbolsName?: number; itemSuccessMessage?: string; exceptSymbols?: string; unknownExtensionsIcon?: string; chooseFileBtnKind?: Kind; acceptFormats?: string[]; acceptExtensions?: string[]; restrictedFormats?: string[]; restrictedExtensions?: string[]; isError?: boolean; errorMessage?: string; customClass?: string; isInversed?: boolean; isDisabled?: boolean; theme?: ThemeTypesModel; isRequired?: boolean; isDownloadable?: boolean; receivedFiles: (files: fileState[]) => void; deleteFile: (id: string) => void; reuploadFile: (id: string) => void; downloadFile?: (id: string) => void; } interface ModelView { style: { errorMessage: { color: string; }; day: TimeThemeObj; night: TimeThemeObj; }; size: { title: { font: FontStyleTypeModel; }; description: { font: FontStyleTypeModel; }; }; } type TimeThemeObj = { title: { color: string; }; description: { color: string; }; dndBorder: string; dndShadow: string; dndSymbols: string; green: { dndBorder: string; }; blue: { dndBorder: string; }; dark: { dndBorder: string; }; }; interface ContainerProps { disabled: boolean; } interface TitleProps { isRequired?: boolean; theme: ThemeTypesModel; styled: ModelView; timeTheme: 'night' | 'day'; } interface DescriptionProps { theme: ThemeTypesModel; styled: ModelView; timeTheme: 'night' | 'day'; } interface ErrorMessageProps { theme: ThemeTypesModel; styled: ModelView; } interface UploadedListProps { theme: ThemeTypesModel; } interface DnDAreaProps { color: availableColor; highlighted: boolean; disabled: boolean; theme: ThemeTypesModel; styled: ModelView; timeTheme: 'day' | 'night'; } interface UploadedListItemProps { theme: ThemeTypesModel; } export type { fileState, UploadAreaProps, ModelView, ContainerProps, TitleProps, DescriptionProps, ErrorMessageProps, UploadedListProps, DnDAreaProps, UploadedListItemProps, };