import { UIIcons } from '@/UI-kit/constants';
import { UIColorValues, UISize, valueof } from '@/UI-kit/types';

export enum EInputType {
    button = 'button',
    checkbox = 'checkbox',
    color = 'color',
    date = 'date',
    datetimelocal = 'datetime-local',
    email = 'email',
    file = 'file',
    hidden = 'hidden',
    image = 'image',
    month = 'month',
    number = 'number',
    password = 'password',
    radio = 'radio',
    range = 'range',
    reset = 'reset',
    search = 'search',
    submit = 'submit',
    tel = 'tel',
    text = 'text',
    time = 'time',
    url = 'url',
    week = 'week',
    select = 'select',
    licence_plate = 'licence_plate',
}

export enum EInputInputmode {
    text = 'text',
    tel = 'tel',
    url = 'url',
    email = 'email',
    numeric = 'numeric',
    decimal = 'decimal',
    search = 'search',
}

export enum EInputComponentType {
    mask = 'mask',
    textarea = 'textarea',
    input = 'input',
    licence_plate = 'licence_plate',
}

export interface IInputProps {
    component?: EInputComponentType;
    id?: string;
    label?: string;
    mask?: string;
    placeholder?: string;
    type?: EInputType;
    inputmode?: EInputInputmode;
    modelValue?: string | number;
    errorMessage?: string;
    isError?: boolean;
    disabled?: boolean;
    readonly?: boolean;
    masked?: boolean;
    isCapitalize?: boolean;
    isSetInputFocus?: boolean;
    delay?: number;
    size?: UISize;
    isBoxShadow?: boolean;
    isDate?: boolean;
    isShowClear?: boolean;
    isAllowSameValues?: boolean;
    helperImg?: string;
    autoresize?: boolean;
    baseHeightTextarea?: number;
    prefixIcon?: valueof<typeof UIIcons>;
    prefixIconColor?: UIColorValues;
}
