const { useState: useStateCta } = React; function CTA() { const [channel, setChannel] = useStateCta('phone'); // phone | email | telegram const [form, setForm] = useStateCta({ name: '', park: '', contact: '' }); const [errors, setErrors] = useStateCta({}); const [submitted, setSubmitted] = useStateCta(false); const channelMeta = { phone: { label: 'Телефон', placeholder: '+7 (___) ___-__-__', validate: v => /^[+\d\s\-()]{10,}$/.test(v) }, email: { label: 'Почта', placeholder: 'name@company.ru', validate: v => /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(v) }, telegram: { label: 'Telegram', placeholder: '@username', validate: v => /^@?[a-zA-Z0-9_]{4,}$/.test(v.trim()) }, }; const submit = (e) => { e.preventDefault(); const errs = {}; if (!form.name.trim()) errs.name = true; if (!form.park.trim()) errs.park = true; if (!channelMeta[channel].validate(form.contact)) errs.contact = true; setErrors(errs); if (Object.keys(errs).length === 0) { fetch('https://script.google.com/macros/s/AKfycbzCJ3oehyE3VyC-dNdTpQ5Li8O87qO6jcwzknZVHXrSXAoW52ybNdYCH8V_uZBv_qQW/exec', { method: 'POST', mode: 'no-cors', body: JSON.stringify({ name: form.name, park: form.park, channel, contact: form.contact, ua: navigator.userAgent }) }); setSubmitted(true); } }; const switchChannel = (ch) => { setChannel(ch); setForm(f => ({ ...f, contact: '' })); setErrors(e => ({ ...e, contact: false })); }; return (

Бесплатно покажем, как бот закроет поддержку в вашем парке.

Запишитесь на демо — покажем бота на ваших реальных диалогах. Также попробуйте бесплатно 7 дней.
Чтобы узнать стоимость подписки для вашего парка — оставьте заявку.
{!submitted ?
setForm({ ...form, name: e.target.value })} /> setForm({ ...form, park: e.target.value })} />
{['phone', 'email', 'telegram'].map(ch => ( ))}
setForm({ ...form, contact: e.target.value })} />
Перезвоним или напишем в рабочее время.
:
Заявка отправлена. Менеджер свяжется с вами в ближайшее время.
}
); } window.CTA = CTA;