import React, { useState, useRef } from "react"; import { motion } from "framer-motion"; import { Navigation } from "../components/Navigation"; import { Footer } from "../components/Footer"; import { Button } from "../components/ui/button"; import { ShimmerButton } from "../components/ui/shimmer-button"; import { Badge } from "../components/ui/badge"; import { Card, CardContent } from "../components/ui/card"; import { Input } from "../components/ui/input"; import { Textarea } from "../components/ui/textarea"; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from "../components/ui/select"; import { Checkbox } from "../components/ui/checkbox"; import { RadioGroup, RadioGroupItem } from "../components/ui/radio-group"; import { Label } from "../components/ui/label"; import { GridPattern } from "../components/GridPattern"; import CustomReCaptcha, { ReCaptchaRef } from "../components/CustomReCaptcha"; // import { navigate } from "../App"; import { Rocket, Users, Target, Heart, Mail, Phone, Calendar, Upload, FileText, CheckCircle, ArrowRight, Briefcase, Settings, Eye, Trophy, Star, Lightbulb, Monitor, Building, Globe, MapPin, Clock, Headphones, Shield, } from "lucide-react"; import { useStoreContactUsMutation } from "@/src/services/storeContactUs"; import { useNavigate } from "react-router-dom"; import { navigateTo } from "@/App"; // Enhanced Hero Section - Centered const HeroSection = () => { const navigate = useNavigate(); return (
{/* Project Label */} Start Your Project {/* Main Heading - Centered */}

Turn Your Next Big Idea into Reality

Connect with Mobile App and AI Development Experts Today.

{/* Contact Options */}
); }; // Project Form Section - Separate with better spacing const ProjectFormSection = () => { const navigate = useNavigate(); const [formData, setFormData] = useState({ name: "", email: "", country: "", phone: "", services: "", budget: "", projectDescription: "", developmentStage: "", timeline: "", ndaRequired: false, agreeTerms: false, }); const [attachedFiles, setAttachedFiles] = useState([]); const [recaptchaToken, setRecaptchaToken] = useState(""); const [isRecaptchaVerified, setIsRecaptchaVerified] = useState(false); const recaptchaRef = useRef(null); const [submitContactForm, { isLoading, isSuccess, isError }] = useStoreContactUsMutation(); const handleFileUpload = (event: React.ChangeEvent) => { const files = event.target.files; if (files) { const validFiles = Array.from(files).filter( (file) => file.size <= 10 * 1024 * 1024 ); // 10MB limit setAttachedFiles((prev) => [...prev, ...validFiles]); } }; const removeFile = (index: number) => { setAttachedFiles((prev) => prev.filter((_, i) => i !== index)); }; const handleRecaptchaVerify = (token: string) => { setRecaptchaToken(token); setIsRecaptchaVerified(true); }; const handleRecaptchaExpired = () => { setRecaptchaToken(""); setIsRecaptchaVerified(false); }; const handleRecaptchaError = () => { setRecaptchaToken(""); setIsRecaptchaVerified(false); }; const handleSubmit = async (e: React.FormEvent) => { e.preventDefault(); // Validation checks if (!formData.name.trim()) { alert("Please enter your name."); return; } if (!formData.email.trim()) { alert("Please enter your email address."); return; } if (!formData.country) { alert("Please select your country."); return; } if (!formData.phone.trim()) { alert("Please enter your contact number."); return; } if (!formData.services) { alert("Please select a service."); return; } if (!formData.budget) { alert("Please select a budget range."); return; } if (!formData.projectDescription.trim()) { alert("Please describe your project."); return; } if (!formData.developmentStage) { alert("Please select your current development stage."); return; } if (!formData.timeline) { alert("Please select your expected timeline."); return; } if (!formData.agreeTerms) { alert("Please agree to the terms and conditions."); return; } // if (!isRecaptchaVerified) { // alert("Please complete the reCAPTCHA verification."); // return; // } try { const formDataToSend = new FormData(); // Map your form fields to the API expected fields formDataToSend.append('t_id', 'xyz123'); formDataToSend.append('name', formData.name); formDataToSend.append('email', formData.email); formDataToSend.append('country', formData.country); formDataToSend.append('phone_number', formData.phone); formDataToSend.append('service', formData.services); formDataToSend.append('budget', formData.budget); formDataToSend.append('message', formData.projectDescription); formDataToSend.append('development_stage', formData.developmentStage); formDataToSend.append('startTime', formData.timeline); formDataToSend.append('nda_signing', formData.ndaRequired ? '1' : '0'); formDataToSend.append('from_page', 'contact-us'); // Add files if any if (attachedFiles.length > 0) { attachedFiles.forEach((file) => { formDataToSend.append('contact_us_attachment', file); }); } // Add IP and user agent (you might want to get these dynamically) formDataToSend.append('ip', '192.168.1.10'); formDataToSend.append('user_agent', navigator.userAgent); // Submit the form await submitContactForm(formDataToSend).unwrap(); // Reset form on success setFormData({ name: '', email: '', country: '', phone: '', services: '', budget: '', projectDescription: '', developmentStage: '', timeline: '', ndaRequired: false, agreeTerms: false }); setAttachedFiles([]); // Reset reCAPTCHA if (recaptchaRef.current) { recaptchaRef.current.reset(); } setIsRecaptchaVerified(false); setRecaptchaToken(''); // Redirect to thank you page navigateTo('/thank-you'); } catch (error) { console.error('Form submission error:', error); // Handle error (show error message to user) alert('Failed to submit the form. Please try again.'); } }; return (

Tell Us About Your Project

Fill out the form below and our experts will get back to you within 24 hours

{/* Personal Information Section */}

Personal Information

setFormData({ ...formData, name: e.target.value }) } required />
setFormData({ ...formData, email: e.target.value }) } required />
setFormData({ ...formData, phone: e.target.value }) } required />
{/* Project Information Section */}

Project Information