'use client' import { useState } from 'react' import { motion } from 'framer-motion' import { Button } from '@/components/ui/button' import { Input } from '@/components/ui/input' import { Label } from '@/components/ui/label' import { Textarea } from '@/components/ui/textarea' import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card' import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from '@/components/ui/select' import { Badge } from '@/components/ui/badge' import { Dialog, DialogContent, DialogDescription, DialogHeader, DialogTitle, } from '@/components/ui/dialog' import { Clock, User, Mail, Phone, MapPin, Briefcase, FileText, CheckCircle, Loader2, Award, GraduationCap } from 'lucide-react' import { toast } from 'sonner' interface PartTimeRegistrationFormProps { isOpen: boolean onClose: () => void } interface PartTimeFormData { // Personal Information firstName: string lastName: string email: string phone: string age: string gender: string // Address Information address: string city: string state: string zipCode: string // Professional Information education: string experience: string preferredRole: string availableHours: string availableDays: string // Additional Information skills: string motivation: string previousWorkExperience: string languagesKnown: string } export default function PartTimeRegistrationForm({ isOpen, onClose }: PartTimeRegistrationFormProps) { const [loading, setLoading] = useState(false) const [showSuccessModal, setShowSuccessModal] = useState(false) const [loginCredentials, setLoginCredentials] = useState<{ email: string password: string } | null>(null) const [formData, setFormData] = useState({ firstName: '', lastName: '', email: '', phone: '', age: '', gender: '', address: '', city: '', state: '', zipCode: '', education: '', experience: '', preferredRole: '', availableHours: '', availableDays: '', skills: '', motivation: '', previousWorkExperience: '', languagesKnown: '' }) const handleInputChange = (field: keyof PartTimeFormData, value: string) => { setFormData(prev => ({ ...prev, [field]: value })) } const handleSubmit = async (e: React.FormEvent) => { e.preventDefault() setLoading(true) try { const response = await fetch('/api/part-time/register', { method: 'POST', headers: { 'Content-Type': 'application/json', }, body: JSON.stringify(formData), }) const data = await response.json() if (!response.ok) { throw new Error(data.message || 'Registration failed') } setLoginCredentials(data.loginCredentials) setShowSuccessModal(true) onClose() // Close the main registration modal // Reset form setFormData({ firstName: '', lastName: '', email: '', phone: '', age: '', gender: '', address: '', city: '', state: '', zipCode: '', education: '', experience: '', preferredRole: '', availableHours: '', availableDays: '', skills: '', motivation: '', previousWorkExperience: '', languagesKnown: '' }) toast.success('Sales Executive application submitted successfully!') } catch (error) { console.error('Registration error:', error) toast.error(error instanceof Error ? error.message : 'Application submission failed') } finally { setLoading(false) } } return ( <> Sales Executive Application Apply for our Sales Executive position with guaranteed ₹10,000 salary + 1% commission
₹10,000 Guaranteed 1% Sales Commission
{/* Personal Information */}

Personal Information

handleInputChange('firstName', e.target.value)} required className="mt-1" />
handleInputChange('lastName', e.target.value)} required className="mt-1" />
handleInputChange('email', e.target.value)} required className="mt-1" />
handleInputChange('phone', e.target.value)} required className="mt-1" />
handleInputChange('age', e.target.value)} required className="mt-1" />
{/* Address Information */}

Address Information

handleInputChange('address', e.target.value)} required className="mt-1" />
handleInputChange('city', e.target.value)} required className="mt-1" />
handleInputChange('state', e.target.value)} required className="mt-1" />
handleInputChange('zipCode', e.target.value)} required className="mt-1" />
{/* Professional Information */}

Sales Experience & Availability

{/* Additional Information */}

Additional Information