import type { TextFieldProps, PasswordFieldProps, PhoneNumberFieldProps, RadioProps } from '../../primitives'; export type MachineFieldTypeKey = 'password' | 'tel'; export type AuthenticatorFieldTypeKey = 'email' | 'password' | 'phone' | 'default' | 'radio'; type RadioFieldOnBlur = RadioProps['onBlur']; export type TextFieldOnBlur = TextFieldProps['onBlur']; export type OnChangeText = TextFieldProps['onChangeText']; export type OnChange = TextFieldProps['onChange']; type FieldOptions = { name: string; onBlur?: Type extends 'radio' ? RadioFieldOnBlur : TextFieldOnBlur; required?: boolean; type: Type; } & Omit; type EmailFieldOptions = FieldOptions; type PasswordFieldOptions = FieldOptions; type PhoneFieldOptions = FieldOptions; type DefaultFieldOptions = FieldOptions; export type TextFieldOptionsType = (EmailFieldOptions | PasswordFieldOptions | PhoneFieldOptions | DefaultFieldOptions) & { labelHidden?: boolean; }; export type RadioFieldOptions = FieldOptions, 'radio'>; /** * `field` options union */ export type TypedField = RadioFieldOptions | TextFieldOptionsType; export {};