"use client"; import { zodResolver } from "@hookform/resolvers/zod"; import { LoaderIcon, MailIcon, MessageCircle } from "lucide-react"; import { useState } from "react"; import { Controller, useForm } from "react-hook-form"; import { z } from "zod"; import { Accordion, AccordionContent, AccordionItem, AccordionTrigger, } from "@/components/ui/accordion"; import { Button } from "@/components/ui/button"; import { Field, FieldError, FieldGroup, FieldLabel, } from "@/components/ui/field"; import { Input } from "@/components/ui/input"; import { Textarea } from "@/components/ui/textarea"; import { cn } from "@/lib/utils"; const contactFormSchema = z.object({ name: z.string().min(1, "نام الزامی است"), email: z .string() .min(1, "ایمیل الزامی است") .email("آدرس ایمیل نامعتبر است"), message: z.string().min(1, "پیام الزامی است"), }); type ContactFormData = z.infer; interface FAQ { question: string; answer: string; } interface Contact25Props { title?: string; description?: string; faqTitle?: string; faqs?: FAQ[]; className?: string; onSubmit?: (data: ContactFormData) => Promise; } const Contact25 = ({ title = "پشتیبانی، دمو و onboarding", description = "پاسخ پرسش‌های رایج محصول را ببینید یا برای دمو، استقرار و پشتیبانی پیام بفرستید.", faqTitle = "سوالات متداول سامانه مدیریت ارتباط با مشتری", faqs = [ { question: "ساعات پشتیبانی محصول چیست؟", answer: "تیم Customer Success شنبه تا چهارشنبه، ۹ تا ۱۸ در دسترس است. برای موارد فوری خارج از این ساعات به urgent@company.com ایمیل بزنید.", }, { question: "پاسخ به تیکت چقدر طول می‌کشد؟", answer: "معمولاً ظرف ۲۴ ساعت کاری به درخواست‌های پشتیبانی پاسخ می‌دهیم. مسائل پیچیده یا یکپارچه‌سازی ممکن است تا ۴۸ ساعت زمان ببرد.", }, { question: "پشتیبانی تلفنی دارید؟", answer: "بله؛ پشتیبانی تلفنی برای پلن حرفه‌ای و سازمانی فعال است. شماره اختصاصی را در داشبورد حساب خود ببینید.", }, { question: "چطور دموی محصول رزرو کنم؟", answer: "از فرم همین صفحه یا تماس با تیم فروش می‌توانید دمو شخصی‌سازی‌شده رزرو کنید. هر جلسه معمولاً ۳۰ تا ۴۵ دقیقه است.", }, { question: "در پیام پشتیبانی چه بنویسم؟", answer: "ایمیل حساب، توضیح دقیق مشکل یا سؤال onboarding، و در صورت نیاز اسکرین‌شات یا متن خطا را ارسال کنید تا سریع‌تر رسیدگی شود.", }, ], className, onSubmit, }: Contact25Props) => { const [isSubmitted, setIsSubmitted] = useState(false); const [showSuccess, setShowSuccess] = useState(false); const form = useForm({ resolver: zodResolver(contactFormSchema), mode: "onSubmit", reValidateMode: "onSubmit", defaultValues: { name: "", email: "", message: "", }, }); const handleFormSubmit = async (data: ContactFormData) => { try { if (onSubmit) { await onSubmit(data); } else { console.log("Form submitted:", data); await new Promise((resolve) => setTimeout(resolve, 1000)); } setIsSubmitted(true); setShowSuccess(true); form.reset(); setTimeout(() => setShowSuccess(false), 4500); setTimeout(() => setIsSubmitted(false), 5000); } catch { form.setError("root", { message: "ارسال ناموفق بود. لطفاً دوباره تلاش کنید.", }); } }; return (

{title}

{description}

{faqTitle}

{faqs.map((faq, index) => ( {faq.question} {faq.answer} ))}

هنوز سؤال دارید؟

{isSubmitted && (

تیکت شما ثبت شد. تیم پشتیبانی به‌زودی پاسخ می‌دهد.

)} ( نام کامل * {fieldState.invalid && ( )} )} /> ( ایمیل کاری * {fieldState.invalid && ( )} )} /> ( پیام *