import React, { useState } from 'react'; import { motion } from 'framer-motion'; import { Send, ShieldCheck } from 'lucide-react'; import { supabase } from '../lib/supabase'; const LeadForm = () => { const [formData, setFormData] = useState({ name: '', phone: '', objectType: '' }); const handleChange = (e) => { setFormData({ ...formData, [e.target.name]: e.target.value }); }; const [isSubmitting, setIsSubmitting] = useState(false); const handleSubmit = async (e) => { e.preventDefault(); setIsSubmitting(true); const botToken = import.meta.env.VITE_TG_BOT_TOKEN; const chatId = import.meta.env.VITE_TG_CHAT_ID; if (!botToken || !chatId) { console.warn("Telegram bot token or chat ID is missing."); alert("ВНИМАНИЕ: Не настроена интеграция с Telegram (отсутствуют ключи в .env). Заявка показана в консоли."); console.log("Данные заявки:", formData); setIsSubmitting(false); return; } const text = `🚨 Новая заявка на замер и расчет!\n\n👤 Имя/Организация: ${formData.name}\n📞 Телефон: ${formData.phone}\n🏢 Тип объекта: ${formData.objectType}`; try { const response = await fetch(`https://api.telegram.org/bot${botToken}/sendMessage`, { method: 'POST', headers: { 'Content-Type': 'application/json', }, body: JSON.stringify({ chat_id: chatId, text: text, }) }); if (response.ok) { // Write to Supabase (non-blocking — Telegram already succeeded) try { await supabase.from('orders').insert({ name: formData.name, phone: formData.phone, object_type: formData.objectType, status: 'новая', source: 'form', }); } catch (dbErr) { console.error('Supabase insert failed:', dbErr); } alert("Заявка успешно отправлена! Наши специалисты свяжутся с вами в ближайшее время для согласования замера."); setFormData({ name: '', phone: '', objectType: '' }); } else { alert("Произошла ошибка при отправке заявки. Пожалуйста, попробуйте позже или позвоните нам напрямую."); } } catch (error) { console.error("Ошибка при отправке в Telegram:", error); alert("Ошибка сети. Проверьте подключение к интернету и попробуйте снова."); } finally { setIsSubmitting(false); } }; return (
{/* Decorative Light Elements */}

ЗАЯВКА НА ЗАМЕР

Оставьте заявку на бесплатный выезд инженера для замера и расчета предварительной стоимости бронирования ваших окон.

    Анализ векторов угроз
    Расчет необходимых материалов
    Планирование логистики монтажа
e.target.style.borderColor = 'var(--accent-blue)'} onBlur={(e) => e.target.style.borderColor = 'var(--border-light)'} />
e.target.style.borderColor = 'var(--accent-blue)'} onBlur={(e) => e.target.style.borderColor = 'var(--border-light)'} />
{isSubmitting ? 'Отправка...' : 'Оставить заявку'}
); }; export default LeadForm;