import type { Component } from 'vue'; export type InputType = 'password' | 'text' | 'number' | 'textarea'; export type EnterKeyHint = 'enter' | 'done' | 'go' | 'next' | 'previous' | 'search' | 'send'; export type TextAlign = 'center' | 'end' | 'justify' | 'left' | 'match-parent' | 'right' | 'start'; export type InputSize = 'small' | 'medium' | 'large'; export interface SearchResultItem { label?: string; value: string | number; [key: string]: any; } export interface InputProps { modelValue: string | number; placeholder?: string; disabled?: boolean; type?: InputType; spellcheck?: boolean; readonly?: boolean; enterKeyHint?: EnterKeyHint; search?: (data: string) => SearchResultItem[]; select?: (data: SearchResultItem) => void; maxLength?: string | number; minLength?: string | number; border?: boolean; align?: TextAlign; clearable?: boolean; customStyle?: string | object; showPassword?: boolean; rows?: number; prefixIcon?: string | Component; suffixIcon?: string | Component; size?: InputSize; autofocus?: boolean; emptyText?: string; label?: string; labelWidth?: string | number; labelStyle?: string | object; required?: boolean; } export interface InputEmits { 'update:modelValue': [value: string | number]; 'input': [value: string | number]; 'focus': [event: FocusEvent]; 'blur': [event: FocusEvent]; 'done': [element: HTMLInputElement | null]; 'change': [value: string | number]; }