import type { InputHTMLAttributes, ReactNode } from 'react'; import type { InputCustomProps } from '../common-type'; export type InputSize = 'sm' | 'md' | 'lg'; export interface InputProps extends Omit, 'size' | 'prefix'>, InputCustomProps { /** * Size scale of the input component. * - `sm` (compact 32px/text-xs) * - `md` (standard 40px/text-sm default) * - `lg` (prominent 48px/text-base) * Defaults to `"md"`. */ size?: InputSize; /** * Space for right icon / control */ rightGroup?: ReactNode; /** * Space for left icon / control */ leftGroup?: ReactNode; /** * Static prefix addon text or element (e.g. `"https://"` or `"$"`). */ prefix?: ReactNode; /** * Static suffix addon text or element (e.g. `".com"` or `"USD"`). */ suffix?: ReactNode; /** * Renders a 1-Click clear `✕` button when text is present. */ clearable?: boolean; /** * Callback fired when clear button is clicked. */ onClear?: () => void; /** * Renders a live character count (`12 / 50`) below the input field. */ showCount?: boolean; /** * Helper message rendered below the input field. */ helperText?: ReactNode; }