import React, { useState } from 'react'; interface FormData { name: string; email: string; phone: string; subject: string; message: string; } interface FormErrors { name?: string; email?: string; phone?: string; subject?: string; message?: string; } const Contact: React.FC = () => { const [formData, setFormData] = useState({ name: '', email: '', phone: '', subject: '', message: '', }); const [errors, setErrors] = useState({}); const [isSubmitting, setIsSubmitting] = useState(false); const [isSubmitted, setIsSubmitted] = useState(false); const validateForm = (): boolean => { const newErrors: FormErrors = {}; if (!formData.name.trim()) { newErrors.name = '이름을 입력해주세요.'; } if (!formData.email.trim()) { newErrors.email = '이메일을 입력해주세요.'; } else if (!/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(formData.email)) { newErrors.email = '올바른 이메일 형식을 입력해주세요.'; } if (!formData.phone.trim()) { newErrors.phone = '전화번호를 입력해주세요.'; } else if (!/^[0-9-+\s()]+$/.test(formData.phone)) { newErrors.phone = '올바른 전화번호 형식을 입력해주세요.'; } if (!formData.subject.trim()) { newErrors.subject = '문의 제목을 입력해주세요.'; } if (!formData.message.trim()) { newErrors.message = '문의 내용을 입력해주세요.'; } else if (formData.message.length < 10) { newErrors.message = '문의 내용을 최소 10자 이상 입력해주세요.'; } setErrors(newErrors); return Object.keys(newErrors).length === 0; }; const handleChange = (e: React.ChangeEvent) => { const { name, value } = e.target; setFormData(prev => ({ ...prev, [name]: value, })); if (errors[name as keyof FormErrors]) { setErrors(prev => ({ ...prev, [name]: undefined, })); } }; const handleSubmit = async (e: React.FormEvent) => { e.preventDefault(); if (!validateForm()) return; setIsSubmitting(true); try { // 실제 구현에서는 API 호출 await new Promise(resolve => setTimeout(resolve, 1000)); setIsSubmitted(true); setFormData({ name: '', email: '', phone: '', subject: '', message: '', }); } catch (error) { console.error('Form submission error:', error); } finally { setIsSubmitting(false); } }; if (isSubmitted) { return (

문의가 접수되었습니다

빠른 시일 내에 답변 드리겠습니다.

); } return (

문의하기

궁금한 사항이나 문의사항이 있으시면 언제든지 연락주세요.

{/* Contact Information */}

연락처 정보

주소
서울시 강남구 테헤란로 123
이메일
contact@nicepayments.com
전화번호
02-1234-5678
운영시간
평일 09:00 - 18:00
{/* Contact Form */}

문의 양식

{errors.name &&

{errors.name}

}
{errors.email &&

{errors.email}

}
{errors.phone &&

{errors.phone}

}
{errors.subject &&

{errors.subject}

}