import { useState } from 'react'; import { Link, useNavigate } from 'react-router-dom'; import { useForm } from 'react-hook-form'; import { zodResolver } from '@hookform/resolvers/zod'; import { z } from 'zod'; import { useAuthStore } from '../../store/authStore'; import { Button, Input, Card, CardHeader, CardTitle, CardContent } from '../ui'; import { Eye, EyeOff, MessageSquare } from 'lucide-react'; import toast from 'react-hot-toast'; import { register as registerUser } from '../../services/authService'; const registerSchema = z.object({ name: z.string().min(2, 'Name must be at least 2 characters'), email: z.string().email('Please enter a valid email address'), password: z.string().min(6, 'Password must be at least 6 characters'), confirmPassword: z.string(), }).refine((data) => data.password === data.confirmPassword, { message: "Passwords don't match", path: ["confirmPassword"], }); type RegisterFormData = z.infer; export function RegisterForm() { const navigate = useNavigate(); const { login, setLoading } = useAuthStore(); const [showPassword, setShowPassword] = useState(false); const [showConfirmPassword, setShowConfirmPassword] = useState(false); const { register, handleSubmit, formState: { errors, isSubmitting }, } = useForm({ resolver: zodResolver(registerSchema), }); const onSubmit = async (data: RegisterFormData) => { try { setLoading(true); const response = await registerUser({ name: data.name, email: data.email, password: data.password, }); login(response.user, response.token); toast.success('Welcome to Saast!'); navigate('/chat'); } catch (error: any) { toast.error(error.message || 'Registration failed'); } finally { setLoading(false); } }; return (

Create your account

Join thousands using Saast for AI chat applications

Sign Up

Already have an account?{' '} Sign in

); }