"use client"; import React, { useState, useRef } from 'react'; import { X, Upload, Plus, FileText, Trash2, Sliders, Briefcase, GraduationCap, MapPin, Globe, CheckSquare } from 'lucide-react'; interface NewScreeningFormProps { onClose: () => void; onSubmit: (formData: FormData) => void; isLoading: boolean; } export default function NewScreeningForm({ onClose, onSubmit, isLoading }: NewScreeningFormProps) { const fileInputRef = useRef(null); const [jobTitle, setJobTitle] = useState(''); const [jobDescription, setJobDescription] = useState(''); const [requiredSkills, setRequiredSkills] = useState(''); const [requiredExperienceYears, setRequiredExperienceYears] = useState(2); const [requiredEducation, setRequiredEducation] = useState('Bachelor'); const [preferredLocation, setPreferredLocation] = useState(''); const [preferredLanguages, setPreferredLanguages] = useState(''); const [requiredCertifications, setRequiredCertifications] = useState(''); const [topNCandidates, setTopNCandidates] = useState(10); const [files, setFiles] = useState([]); const [isDragActive, setIsDragActive] = useState(false); const handleDrag = (e: React.DragEvent) => { e.preventDefault(); e.stopPropagation(); if (e.type === "dragenter" || e.type === "dragover") { setIsDragActive(true); } else if (e.type === "dragleave") { setIsDragActive(false); } }; const handleDrop = (e: React.DragEvent) => { e.preventDefault(); e.stopPropagation(); setIsDragActive(false); if (e.dataTransfer.files && e.dataTransfer.files[0]) { const droppedFiles = Array.from(e.dataTransfer.files).filter( file => file.type === "application/pdf" ); if (droppedFiles.length > 0) { setFiles(prev => [...prev, ...droppedFiles]); } } }; const handleFileSelect = (e: React.ChangeEvent) => { if (e.target.files && e.target.files[0]) { const selectedFiles = Array.from(e.target.files).filter( file => file.type === "application/pdf" ); setFiles(prev => [...prev, ...selectedFiles]); } }; const removeFile = (idx: number) => { setFiles(prev => prev.filter((_, i) => i !== idx)); }; const handleSubmit = (e: React.FormEvent) => { e.preventDefault(); if (files.length === 0) { alert("Please upload at least one PDF resume."); return; } const data = new FormData(); data.append("job_title", jobTitle); data.append("job_description", jobDescription); data.append("required_skills", requiredSkills); data.append("required_experience_years", requiredExperienceYears.toString()); data.append("required_education", requiredEducation); data.append("preferred_location", preferredLocation); data.append("preferred_languages", preferredLanguages); data.append("required_certifications", requiredCertifications); data.append("top_n_candidates", topNCandidates.toString()); files.forEach(file => { data.append("resumes", file); }); onSubmit(data); }; return (
{/* Border Accent Line */}
{/* Form Header */}

New Candidate Screening

Configure matching parameters and upload target resumes.

{/* Form Body */}
{/* Left side parameters */}
setJobTitle(e.target.value)} placeholder="e.g. Front End Engineer" className="glass-input w-full py-2.5 pl-10 pr-4 text-sm" />
setRequiredSkills(e.target.value)} placeholder="React, TypeScript, Next.js, TailwindCSS" className="glass-input w-full py-2.5 pl-10 pr-4 text-sm" />
setRequiredExperienceYears(parseInt(e.target.value) || 0)} className="glass-input w-full py-2.5 px-4 text-sm text-center" />
setPreferredLocation(e.target.value)} placeholder="e.g. Remote, Lahore" className="glass-input w-full py-2.5 pl-10 pr-4 text-sm" />
setPreferredLanguages(e.target.value)} placeholder="e.g. English, Urdu" className="glass-input w-full py-2.5 pl-10 pr-4 text-sm" />
setRequiredCertifications(e.target.value)} placeholder="e.g. AWS Certified Developer, Scrum Master" className="glass-input w-full py-2.5 px-4 text-sm" />