'use client'; import s from './styles.module.scss'; import { Button, Input, Mark, PhoneInput, TextArea } from '@shared/ui'; import toast from 'react-hot-toast'; import { Controller, useForm } from 'react-hook-form'; import { zodResolver } from '@hookform/resolvers/zod'; import { z } from 'zod'; import { sendFormFn } from '@shared/api/api.service'; import { isValidPhoneNumber } from 'libphonenumber-js/min'; import Link from 'next/link'; const FormSchema = z.object({ name: z .string() .min(3, { message: 'Поле должно содержать не менее 3-х букв' }) .regex(/^[A-Za-zА-Яа-яЁё]+(?:[ '-][A-Za-zА-Яа-яЁё]+)*$/, { message: 'Поле содержит некорректные символы', }), phone: z.string().refine(isValidPhoneNumber, 'Некорректный номер телефона'), message: z .string() .min(21, { message: 'Оставьте сообщение мин. 20 символов' }), }); type TForm = z.infer; const defaultValues = { name: '', phone: '', message: '', }; export default function FooterForm() { const { handleSubmit, control, reset, clearErrors, formState: { errors }, } = useForm({ resolver: zodResolver(FormSchema), defaultValues, }); const onSubmit = async (data: TForm) => { const payload = { ...data, form: 'footer-form', }; try { await sendFormFn(payload); toast.success('Заявка на консультацию принята'); reset(defaultValues); } catch (e) { toast.error('Ошибка при отправке заявки...', { duration: 3000, }); } }; return (

Давайте обсудим ваши задачи

( { clearErrors('name'); field.onChange(e); }} error={errors && errors.name?.message} errorTextColor={'#ff9191'} /> )} /> ( { clearErrors('phone'); field.onChange(e); }} error={errors && errors.phone?.message} errorTextColor={'#ff9191'} /> )} /> (