"use client"; import { zodResolver } from "@hookform/resolvers/zod"; import { GlobeIcon, LoaderIcon, MailIcon, PhoneIcon } from "lucide-react"; import { useState } from "react"; import { Controller, useForm } from "react-hook-form"; import { z } from "zod"; 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({ firstName: z.string().min(1, "نام را وارد کنید"), lastName: z.string().min(1, "نام خانوادگی را وارد کنید"), email: z .string() .min(1, "ایمیل را وارد کنید") .email("ایمیل واردشده معتبر نیست"), subject: z.string().min(1, "موضوع را وارد کنید"), message: z.string().min(1, "پیام را وارد کنید"), }); type ContactFormData = z.infer; interface Contact2Props { title?: string; description?: string; phone?: string; email?: string; web?: { label: string; url: string }; className?: string; onSubmit?: (data: ContactFormData) => Promise; } const Contact2 = ({ title = "با تیم فروش صحبت کنید", description = "برای دمو CRM، انتخاب پلن یا مشاوره استقرار پیام بگذارید. کارشناس فروش معمولاً ظرف یک روز کاری پاسخ می‌دهد.", phone = "۲۱-۱۲۳۴۵۶۷۸", email = "contact@example.com", web = { label: "راهنمای محصول", url: "https://www.ShadcnBlocks", }, className, onSubmit, }: Contact2Props) => { const [isSubmitted, setIsSubmitted] = useState(false); const [showSuccess, setShowSuccess] = useState(false); const form = useForm({ resolver: zodResolver(contactFormSchema), mode: "onSubmit", reValidateMode: "onSubmit", defaultValues: { firstName: "", lastName: "", email: "", subject: "", 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 (

درخواست یا سؤال خود را بنویسید

پاسخ در روزهای کاری، معمولاً کمتر از ۲۴ ساعت

{isSubmitted && (

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

)}
( نام * {fieldState.invalid && ( )} )} /> ( نام خانوادگی{" "} * {fieldState.invalid && ( )} )} />
( ایمیل * {fieldState.invalid && ( )} )} /> ( موضوع * {fieldState.invalid && ( )} )} /> ( پیام *