import { FontStyleTypeModel, ThemeTypesModel } from '../../Themes/theme_types'; import { Size, Color } from '../../types'; type availableColor = Color.green | Color.dark | Color.blue; type availableSize = Size.m | Size.l; interface ProgressBarPropType { value: number; className?: string; theme?: ThemeTypesModel; size?: availableSize; color?: availableColor; label?: string; description?: string; isError?: boolean; errorMessage?: string; isIndeterminate?: boolean; isInverse?: boolean; isVertical?: boolean; } type ThemeType = 'day' | 'night'; interface ContainerType { styled: ModelView; size: availableSize; hasDescription: boolean; } interface ProgressBarType { styled: ModelView; color: availableColor; size: availableSize; themeType: ThemeType; indeterminate?: boolean; vertical?: boolean; error?: boolean; } interface ProgressBarValueType { styled: ModelView; color: availableColor; themeType: ThemeType; value: number; vertical?: boolean; } interface LabelType { styled: ModelView; size: availableSize; themeType: ThemeType; } interface DescriptionType { styled: ModelView; size: availableSize; themeType: ThemeType; error?: boolean; } interface styleParams { progressbarColor: string; } interface commonParams { backgroundColor: string; labelColor: string; descriptionColor: string; errorColor: string; } interface colorParams { common: commonParams; green: styleParams; dark: styleParams; blue: styleParams; } interface sizeParams { container: { paddingTop: number; paddingBottom: number; paddingDescription: number; }; progressbar: { width?: number; height?: number; }; text: { marginTop: number; marginBottom: number; font: FontStyleTypeModel; }; } interface ModelView { style: { day: colorParams; night: colorParams; }; size: { m: sizeParams; l: sizeParams; vertical: sizeParams; }; } export type { ProgressBarPropType, ContainerType, ProgressBarType, ProgressBarValueType, LabelType, DescriptionType, ModelView, };