import { useForm, Controller } from 'react-hook-form'
import { zodResolver } from '@hookform/resolvers/zod'
import { loginSchema, LoginFormData } from './loginSchema' // Your Zod schema
import { TextField } from '@/../components/TextField'
import { Button, View } from 'react-native'
export const LoginFormWithValidation = () => {
const {
control,
handleSubmit,
formState: { errors },
} = useForm<LoginFormData>({
resolver: zodResolver(loginSchema), // Integrate Zod resolver
defaultValues: {
email: '',
password: '',
},
})
const onSubmit = (data: LoginFormData) => {
console.log('Form submitted:', data)
// Handle login logic here
}
return (
<View>
<Controller
control={control}
name="email"
render={({ field: { onChange, onBlur, value } }) => (
<TextField
label="Email"
onBlur={onBlur}
onChangeText={onChange}
value={value}
placeholder="Enter your email"
keyboardType="email-address"
autoCapitalize="none"
status={errors.email ? 'error' : 'default'}
helperText={errors.email?.message}
/>
)}
/>
<Controller
control={control}
name="password"
render={({ field: { onChange, onBlur, value } }) => (
<TextField
label="Password"
onBlur={onBlur}
onChangeText={onChange}
value={value}
placeholder="Enter your password"
secureTextEntry
status={errors.password ? 'error' : 'default'}
helperText={errors.password?.message}
/>
)}
/>
<Button title="Submit" onPress={handleSubmit(onSubmit)} />
</View>
)
}