import { FontStyleTypeModel, ThemeTypesModel } from '../../Themes/theme_types'; import { Size } from '../../types'; type availableSize = Size.s | Size.m | Size.l; type dayTime = 'light' | 'dark'; interface ButtonsProps { size: availableSize | 'internal'; } interface ChangeValueButtonProps { styles: viewModel; size: availableSize | 'internal'; state: StateContextOptions; } interface ContainerProps { styles: viewModel; state: StateContextOptions; } interface LabelProps { styles: viewModel; state: StateContextOptions; } interface ErrorMessageProps { styles: viewModel; state: StateContextOptions; } interface InputFieldProps { isInternalLabel: boolean; state: StateContextOptions; isFocused: boolean; disabled: boolean; styles: viewModel; sizeProp: availableSize | 'internal'; } interface generalSize { arrowButton: { width: number; height: number; }; svgArrows: { width: number; height: number; }; input: { paddingTop: number; paddingLeft: number; paddingRight: number; paddingBottom: number; }; font: FontStyleTypeModel; } interface dayScheme { label: { color: string; }; errorMessage: { color: string; }; input: { default: { placeholderColor: string; textColor: string; borderColor: string; backgroundColor: string; }; hover: { placeholderColor: string; textColor: string; borderColor: string; backgroundColor: string; }; active: { placeholderColor: string; textColor: string; borderColor: string; backgroundColor: string; }; readOnly: { placeholderColor: string; textColor: string; borderColor: string; backgroundColor: string; }; errorDefault: { borderColor: string; textColor: string; }; errorHover: { borderColor: string; textColor: string; }; }; changeValueBTN: { default: { backgroundColor: string; arrowColor: string; }; hover: { backgroundColor: string; arrowColor: string; }; active: { backgroundColor: string; arrowColor: string; }; }; } export interface StateContextOptions { size: availableSize; isRequired: boolean; isDisabled: boolean; dayTime: dayTime; isError: boolean; readOnly: boolean; } export interface NumberInputProps { size?: availableSize; labelPosition?: 'external' | 'internal'; theme?: ThemeTypesModel; label?: string; value?: number; ariaLabel?: string; className?: string; placeholder?: string; min?: number; max?: number; step?: number; readOnly?: boolean; isInverse?: boolean; increaseIcon?: string; decreaseIcon?: string; thousandSeparator?: 'comma' | 'point' | 'white space'; decimalSeparator?: 'comma' | 'point'; decimalCount?: number; isError?: boolean; errorMessage?: string; isRequired?: boolean; isDisabled?: boolean; hasOnlyPositiveValues?: boolean; suffix?: string; prefix?: string; errorState?: 'default' | 'focus out'; valueChanged?: (value: number | null) => void; } export interface viewModel { style: { light: dayScheme; dark: dayScheme; }; size: { label: { font: FontStyleTypeModel; }; errorMessage: { font: FontStyleTypeModel; }; internal: generalSize; s: generalSize; m: generalSize; l: generalSize; }; } export type { availableSize, ErrorMessageProps, LabelProps, InputFieldProps, ContainerProps, ButtonsProps, ChangeValueButtonProps, };