diff --git a/src/components/HouseCalculatorModal.tsx b/src/components/HouseCalculatorModal.tsx index 8513538..e247ee6 100644 --- a/src/components/HouseCalculatorModal.tsx +++ b/src/components/HouseCalculatorModal.tsx @@ -4,9 +4,30 @@ import { useState } from 'react'; import { X, ChevronLeft, ChevronRight, Check } from 'lucide-react'; const materials = [ - { label: 'Кирпич/керамический блок', value: 'Кирпич/керамический блок', img: '/images/keramic.jpg' }, - { label: 'Газобетон', value: 'Газобетон', img: '/images/gazobet.png' }, - { label: 'Керамзитобетон', value: 'Керамзитобетон', img: '/images/keramiz.jpg' }, + { + 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 = [ @@ -16,6 +37,19 @@ const areas = [ 'более 200 кв.м.', ]; +const finishOptions = [ + 'Без отделки', + 'Черновая отделка (стяжка, штукатурка и тд)', + 'Чистовая отделка (обои, ламинат и тд)', +]; + +const financeOptions = [ + 'Наличные', + 'Сельская ипотека', + 'Ипотека, кредит', + 'Свой вариант', +]; + interface HouseCalculatorModalProps { isOpen: boolean; onClose: () => void; @@ -33,6 +67,14 @@ const HouseCalculatorModal = ({ isOpen, onClose, userName = '', userPhone = '' } 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 === 1 && !material) return; if (step === 2 && !area) return; @@ -73,7 +115,7 @@ const HouseCalculatorModal = ({ isOpen, onClose, userName = '', userPhone = '' } setStep(5); } } catch { - // Обработка ошибки + // Обработка ошибок } finally { setIsSubmitting(false); } @@ -89,9 +131,23 @@ const HouseCalculatorModal = ({ isOpen, onClose, userName = '', userPhone = '' } 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 (
- {/* Декоративный фон */}
@@ -137,9 +193,15 @@ const HouseCalculatorModal = ({ isOpen, onClose, userName = '', userPhone = '' } }`}>
+
+ {m.icon} +

- {m.label} + {m.name}

+

+ {m.description} +

))} @@ -176,22 +238,24 @@ const HouseCalculatorModal = ({ isOpen, onClose, userName = '', userPhone = '' } {step === 3 && (

- Выберите тип отделки + Вариант отделки

-
- {['Без отделки', 'Черновая отделка', 'Чистовая отделка'].map((f) => ( -