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

Заключите договор до 1 июля и получите скидку на проведение пожарной экспертизы 15 %

Оставьте свои контактные данные и мы закрепим скидку до 1 июля за вами

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