"use client"; import { zodResolver } from "@hookform/resolvers/zod"; import { Building2, Check, ChevronRight, HelpCircle, Laptop, LoaderIcon, Rocket, Users, } 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({ serviceType: z.string().min(1, "یک مسیر را انتخاب کنید"), name: z.string().min(1, "نام الزامی است"), email: z .string() .min(1, "ایمیل الزامی است") .email("آدرس ایمیل نامعتبر است"), company: z.string().optional(), message: z.string().min(1, "شرح نیاز فروش الزامی است"), }); type ContactFormData = z.infer; const services = [ { id: "consulting", icon: Users, title: "مشاوره فروش و سامانه مدیریت ارتباط با مشتری", description: "طراحی قیف فروش، فرآیند پیگیری لید و ساختار سامانه مدیریت ارتباط با مشتری", }, { id: "development", icon: Laptop, title: "سفارشی‌سازی پلتفرم", description: "اتوماسیون فروش، یکپارچه‌سازی و داشبورد KPI", }, { id: "enterprise", icon: Building2, title: "سامانه مدیریت ارتباط با مشتری سازمانی", description: "پیاده‌سازی در مقیاس بزرگ با کنترل دسترسی و گزارش‌گیری", }, { id: "startup", icon: Rocket, title: "تیم‌های در حال رشد", description: "راه‌اندازی سریع سامانه مدیریت ارتباط با مشتری برای تیم‌های فروش در حال مقیاس", }, { id: "other", icon: HelpCircle, title: "سایر درخواست‌ها", description: "مهاجرت داده، شراکت تجاری یا مشاوره تخصصی", }, ]; interface Contact29Props { title?: string; subtitle?: string; className?: string; onSubmit?: (data: ContactFormData) => Promise; } const Contact29 = ({ title = "مسیر سامانه مدیریت ارتباط با مشتری مناسب را انتخاب کنید", subtitle = "نوع نیاز فروش را مشخص کنید و جزئیات پیاده‌سازی سامانه مدیریت ارتباط با مشتری را برای تیم فروش ارسال کنید.", className, onSubmit, }: Contact29Props) => { const [step, setStep] = useState<"select" | "form" | "success">("select"); const [selectedService, setSelectedService] = useState(""); const form = useForm({ resolver: zodResolver(contactFormSchema), mode: "onSubmit", reValidateMode: "onSubmit", defaultValues: { serviceType: "", name: "", email: "", company: "", message: "", }, }); const handleServiceSelect = (serviceId: string) => { setSelectedService(serviceId); form.setValue("serviceType", serviceId); }; const handleContinue = () => { if (selectedService) { setStep("form"); } }; const handleFormSubmit = async (data: ContactFormData) => { try { if (onSubmit) { await onSubmit(data); } else { console.log("Form submitted:", data); await new Promise((resolve) => setTimeout(resolve, 1000)); } setStep("success"); } catch { form.setError("root", { message: "مشکلی پیش آمد. لطفاً دوباره تلاش کنید.", }); } }; const resetForm = () => { setStep("select"); setSelectedService(""); form.reset(); }; if (step === "success") { return (

درخواست شما ثبت شد

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

); } return (
{step === "select" && (

{title}

{subtitle}

{services.map((service) => { const Icon = service.icon; const isSelected = selectedService === service.id; return ( ); })}
)} {step === "form" && (

جزئیات نیاز فروش را تکمیل کنید

هرچه درباره تیم فروش، قیف فعلی و یکپارچگی‌ها دقیق‌تر بنویسید، پیشنهاد سامانه مدیریت ارتباط با مشتری و زمان‌بندی دمو دقیق‌تر خواهد بود.

{(() => { const service = services.find( (s) => s.id === selectedService, ); if (!service) return null; const Icon = service.icon; return ( <>

{service.title}

{service.description}

); })()}

اطلاعات تماس فروش

( نام و نام خانوادگی * {fieldState.invalid && ( )} )} /> ( ایمیل کاری * {fieldState.invalid && ( )} )} />
( نام شرکت یا سازمان )} /> ( شرح نیاز سامانه مدیریت ارتباط با مشتری *