import { AvoidKeyboard } from '@/components/ui/avoid-keyboard'; import { Button } from '@/components/ui/button'; import { Input } from '@/components/ui/input'; import { Text } from '@/components/ui/text'; import { View } from '@/components/ui/view'; import { Mail, Lock, User, Phone, MessageSquare } from 'lucide-react-native'; import React, { useState } from 'react'; import { ScrollView } from 'react-native'; export function AvoidKeyboardForm() { const [formData, setFormData] = useState({ first: '', last: '', email: '', phone: '', password: '', confrim: '', message: '', }); const [errors, setErrors] = useState>({}); const validateForm = () => { const newErrors: Record = {}; if (!formData.first.trim()) { newErrors.first = 'Name is required'; } if (!formData.email.trim()) { newErrors.email = 'Email is required'; } else if (!/\S+@\S+\.\S+/.test(formData.email)) { newErrors.email = 'Please enter a valid email'; } if (!formData.password.trim()) { newErrors.password = 'Password is required'; } else if (formData.password.length < 6) { newErrors.password = 'Password must be at least 6 characters'; } setErrors(newErrors); return Object.keys(newErrors).length === 0; }; const handleSubmit = () => { if (validateForm()) { // Form is valid console.log('Form submitted:', formData); // Reset form setFormData({ first: '', last: '', email: '', phone: '', password: '', confrim: '', message: '', }); setErrors({}); } }; const updateField = (field: keyof typeof formData, value: string) => { setFormData((prev) => ({ ...prev, [field]: value })); // Clear error when user starts typing if (errors[field]) { setErrors((prev) => ({ ...prev, [field]: '' })); } }; return ( {/* Header */} Registration Form Fill out the form below. Notice how the keyboard avoidance keeps inputs visible. {/* Form Content */} updateField('first', value)} error={errors.first} /> updateField('last', value)} error={errors.last} /> updateField('email', value)} error={errors.email} keyboardType='email-address' autoCapitalize='none' /> updateField('email', value)} error={errors.email} keyboardType='email-address' autoCapitalize='none' /> updateField('phone', value)} error={errors.phone} keyboardType='phone-pad' /> updateField('password', value)} error={errors.password} secureTextEntry /> updateField('confrim', value)} error={errors.confrim} secureTextEntry /> By creating an account, you agree to our Terms of Service and Privacy Policy. {/* Keyboard avoidance for the form */} ); }