'use client' import React, { useState } from 'react' import { useForm } from 'react-hook-form' import { z } from 'zod' import { zodResolver } from '@hookform/resolvers/zod' import { Button } from '@/components/ui/button' import { Input } from '@/components/ui/input' import { Label } from '@/components/ui/label' import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from '@/components/ui/select' import { Textarea } from '@/components/ui/textarea' import { submitDemoRequest } from '@/app/demo/actions' import type { DemoRequestFormData } from '@/app/demo/actions' const PRODUCT_OPTIONS = [ { value: 'آبشده همکار', label: 'آبشده همکار' }, { value: 'آبشده خانگی', label: 'آبشده خانگی' }, { value: 'فروشگاه‌ساز طلا', label: 'فروشگاه‌ساز طلا' }, { value: 'قیمت‌دهی طلا', label: 'قیمت‌دهی طلا' }, { value: 'سایر', label: 'سایر' }, ] const schema = z.object({ name: z.string().min(2, { message: 'نام و نام خانوادگی حداقل ۲ کاراکتر باشد.' }), phone: z .string() .min(10, { message: 'شماره تماس معتبر وارد کنید.' }) .regex(/^[\d\s۰-۹]+$/, { message: 'فقط اعداد وارد کنید.' }), product: z .string() .refine((v) => v && v !== '__empty__', { message: 'نرم‌افزار مورد نظر را انتخاب کنید.' }), email: z.string().email({ message: 'ایمیل معتبر وارد کنید.' }).optional().or(z.literal('')), message: z.string().max(1000).optional(), }) type FormValues = z.infer export function DemoRequestForm() { const [status, setStatus] = useState<'idle' | 'loading' | 'success' | 'error'>('idle') const [errorMessage, setErrorMessage] = useState(null) const { register, handleSubmit, formState: { errors }, setValue, watch, reset, } = useForm({ resolver: zodResolver(schema), defaultValues: { name: '', phone: '', product: '', email: '', message: '', }, }) const productValue = watch('product') const onSubmit = async (data: FormValues) => { setStatus('loading') setErrorMessage(null) const product = data.product?.trim() && data.product !== '__empty__' ? data.product : '' const payload: DemoRequestFormData = { name: data.name.trim(), phone: data.phone.replace(/\s/g, ''), product, email: data.email?.trim() || undefined, message: data.message?.trim() || undefined, } const result = await submitDemoRequest(payload) if (result.success) { setStatus('success') reset() } else { setStatus('error') setErrorMessage(result.error ?? 'خطایی رخ داد.') } } if (status === 'success') { return (

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

کارشناسان مستر دکور در اسرع وقت با شما تماس می‌گیرند تا زمان جلسه دمو و نمایش امکانات سامانه را هماهنگ کنند.

) } return (
{errors.name && (

{errors.name.message}

)}
{errors.phone && (

{errors.phone.message}

)}
{errors.product && (

{errors.product.message}

)}
{errors.email && (

{errors.email.message}

)}