import React, { useEffect, useState } from "react"; import { FaBuilding, FaUser, FaEnvelope, FaPhone, FaMapPin, FaUsers, FaRegComment, FaPaperPlane, FaCheckCircle } from 'react-icons/fa'; import { useLocalization } from "@/utils/hooks/useLocalization"; import { createDemoAsync } from "@/services/demo.service"; import { DemoDto } from "@/proxy/demo/models"; interface DemoModalProps { isOpen: boolean; onClose: () => void; } const Demo: React.FC = ({ isOpen, onClose }) => { const { translate } = useLocalization() const [formData, setFormData] = useState({ id: crypto.randomUUID(), organizationName: "", name: "", email: "", phoneNumber: "", address: "", numberOfBranches: 0, numberOfUsers: 0, 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 DemoDto]) { setErrors((prev) => ({ ...prev, [name]: "", })); } }; const validateForm = (): boolean => { const newErrors: Partial = {}; if (!formData.organizationName.trim()) newErrors.organizationName = "Organization name is required"; if (!formData.name.trim()) newErrors.name = "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.phoneNumber.trim()) newErrors.phoneNumber = "Phone number is required"; if (!formData.address.trim()) newErrors.address = "Address 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 createDemoAsync(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 */}
{/* Address */}
{/* Branches & Users Row */}
{/* Message */}