import { ReactNode, ReactElement } from 'react'; export type CodeInputState = "default" | "error" | "success"; export interface CodeInputProps { value?: string; defaultValue?: string; onChange?: (value: string, name?: string) => void; onComplete?: (value: string) => void; onBlur?: () => void; maxLength?: number; placeholder?: string; disabled?: boolean; className?: string; autoFocus?: boolean; pasteTransformer?: (pasted: string) => string; name?: string; label?: string; required?: boolean; state?: CodeInputState; supportingText?: ReactNode | (() => ReactNode); showSupportingText?: boolean; slotClassName?: string; hideSlotsMiddleSeparator?: boolean; } /** @deprecated Use CodeInputState instead */ export type OtpInputVariant = CodeInputState; export interface LegacyCodeInputProps { /** @deprecated Use 'state' instead */ variant?: "default" | "error" | "success"; /** @deprecated Use 'state' + 'showSupportingText' instead */ hasError?: boolean; /** @deprecated Use 'supportingText' (string) + 'state' instead */ errorComponent?: ReactElement<{ className?: string; }> | string; /** @deprecated Use 'supportingText' instead */ helperComponent?: ReactElement<{ className?: string; }> | string; /** @deprecated No longer supported — supportingText is always left-aligned, like Input */ helperAlignment?: "left" | "center" | "right"; } /** @internal — allows legacy props during migration period */ export type CodeInputPropsWithLegacy = CodeInputProps & Partial;