'use client'; import { useState } from 'react'; import { X, ChevronLeft, ChevronRight, Check } from 'lucide-react'; const materials = [ { label: 'Кирпич/керамический блок', value: 'Кирпич/керамический блок', img: '/images/keramic.jpg', icon: '🧱', name: 'Кирпич', description: 'Прочный и долговечный' }, { label: 'Газобетон', value: 'Газобетон', img: '/images/gazobet.png', icon: '🏗️', name: 'Газобетон', description: 'Легкий и теплый' }, { label: 'Керамзитобетон', value: 'Керамзитобетон', img: '/images/keramiz.jpg', icon: '🏠', name: 'Керамзитобетон', description: 'Экологичный материал' }, ]; const areas = [ '80-100 кв.м.', '100-150 кв.м.', '150-200 кв.м.', 'более 200 кв.м.', ]; const finishOptions = [ 'Без отделки', 'Черновая отделка (стяжка, штукатурка и тд)', 'Чистовая отделка (обои, ламинат и тд)', ]; const financeOptions = [ 'Наличные', 'Сельская ипотека', 'Ипотека, кредит', 'Свой вариант', ]; interface HouseCalculatorModalProps { isOpen: boolean; onClose: () => void; userName?: string; userPhone?: string; } const HouseCalculatorModal = ({ isOpen, onClose, userName = '', userPhone = '' }: HouseCalculatorModalProps) => { const [step, setStep] = useState(1); const [material, setMaterial] = useState(''); const [area, setArea] = useState(''); const [finish, setFinish] = useState(''); const [finance, setFinance] = useState(''); const [isSubmitting, setIsSubmitting] = useState(false); if (!isOpen) return null; const canProceed = () => { if (step === 1) return material !== ''; if (step === 2) return area !== ''; if (step === 3) return finish !== ''; if (step === 4) return finance !== ''; return true; }; const handleNext = () => { if (step === 4) { handleSubmitCalculator(); return; } setStep((s) => s + 1); }; const handlePrevious = () => { setStep((s) => s - 1); }; const handleSubmitCalculator = async () => { if (isSubmitting) return; setIsSubmitting(true); try { const res = await fetch('/api/send-telegram', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ material, area, finish, finance, name: userName || 'Из калькулятора', phone: userPhone || 'Не указан' }), }); if (res.ok) { setStep(5); } } catch { // Обработка ошибок } finally { setIsSubmitting(false); } }; const closeModal = () => { setStep(1); setMaterial(''); setArea(''); setFinish(''); setFinance(''); setIsSubmitting(false); onClose(); }; const calculatePrice = () => { let basePrice = 1500000; // Базовая цена // Корректировка по площади if (area === '100-150 кв.м.') basePrice *= 1.3; else if (area === '150-200 кв.м.') basePrice *= 1.6; else if (area === 'более 200 кв.м.') basePrice *= 2; // Корректировка по материалу if (material === 'Кирпич/керамический блок') basePrice *= 1.2; else if (material === 'Керамзитобетон') basePrice *= 1.1; return Math.round(basePrice); }; return (

Калькулятор стоимости дома

{step === 1 && (

Выберите материал

{materials.map((m) => ( ))}
)} {step === 2 && (

Какая площадь дома?

{areas.map((a) => ( ))}
)} {step === 3 && (

Вариант отделки

{finishOptions.map((option) => ( ))}
)} {step === 4 && (

Источник финансирования

{financeOptions.map((option) => ( ))}
)} {step === 5 && (
🏠

Расчет готов!

{calculatePrice().toLocaleString()} ₽

Итоговая стоимость строительства

Детали расчета:

Материал: {materials.find(m => m.value === material)?.name}
Площадь: {area}
Отделка: {finish}
Финансирование: {finance}
)}
{step > 1 && step < 5 && ( )} {step < 4 ? ( ) : step === 4 ? ( ) : ( )}
); }; export default HouseCalculatorModal;