import React, { useEffect, useState } from "react"; import { useLanguage } from "../context/LanguageContext"; import { demoService } from "../services/demo.service"; import { Building2, User, Mail, Phone, MapPin, Users, MessageSquare, Send, CheckCircle, } from "lucide-react"; interface DemoModalProps { isOpen: boolean; onClose: () => void; } interface FormData { organizationName: string; fullName: string; email: string; phone: string; address: string; numberOfBranches: string; numberOfUsers: string; message: string; } const Demo: React.FC = ({ isOpen, onClose }) => { const { t } = useLanguage(); const [formData, setFormData] = useState({ organizationName: "", fullName: "", email: "", phone: "", address: "", numberOfBranches: "", numberOfUsers: "", message: "", }); const [errors, setErrors] = useState>({}); const [isSubmitted, setIsSubmitted] = useState(false); const handleInputChange = ( e: React.ChangeEvent ) => { const { name, value } = e.target; setFormData((prev) => ({ ...prev, [name]: value, })); if (errors[name as keyof FormData]) { setErrors((prev) => ({ ...prev, [name]: "", })); } }; const validateForm = (): boolean => { const newErrors: Partial = {}; if (!formData.organizationName.trim()) newErrors.organizationName = "Organization name is required"; if (!formData.fullName.trim()) newErrors.fullName = "Full 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.phone.trim()) newErrors.phone = "Phone number is required"; if (!formData.address.trim()) newErrors.address = "Address is required"; if (!formData.numberOfBranches.trim()) newErrors.numberOfBranches = "Number of branches is required"; if (!formData.numberOfUsers.trim()) newErrors.numberOfUsers = "Number of users is required"; if (!formData.message.trim()) newErrors.message = "Message is required"; setErrors(newErrors); return Object.keys(newErrors).length === 0; }; const handleSubmit = async (e: React.FormEvent) => { e.preventDefault(); if (!validateForm()) return; try { await demoService.createDemoForm(formData); setIsSubmitted(true); onClose(); // modal'ı otomatik kapat } catch (error) { console.error("Gönderim hatası:", error); alert("Sunucuya ulaşılamıyor."); } }; useEffect(() => { const handleKeyDown = (e: KeyboardEvent) => { if (e.key === "Escape") { onClose(); } }; if (isOpen) { window.addEventListener("keydown", handleKeyDown); } return () => { window.removeEventListener("keydown", handleKeyDown); }; }, [isOpen, onClose]); // 🎉 Gönderim sonrası teşekkür ekranı if (isSubmitted) { return (
{/* Kapat Butonu */}

Teşekkürler!

Demo talebiniz başarıyla gönderildi. 24 saat içinde size geri dönüş yapacağız.

); } // Modal kapalıysa render etme if (!isOpen) return null; // 🎯 Normal form ekranı return (
{/* Organization Name */}
{/* Full Name */}
{/* Email & Phone Row */}
{/* Address */}
{/* Branches & Users Row */}
{/* Message */}