Удалены изображения сотрудников и секция отзывов, обновлены стили и тексты в секциях о компании, контактах и примерах работ для улучшения визуального восприятия и информативности.

This commit is contained in:
albivkt
2025-07-06 23:47:40 +03:00
parent 2ca5ac4f9d
commit f53e9888b9
23 changed files with 154 additions and 72 deletions

View File

@ -88,12 +88,12 @@ const AboutSection = () => {
{features.map((feature, index) => (
<FadeInSection key={index} delay={0.3 + index * 0.1}>
<div className="flex items-start space-x-4 p-4 rounded-xl bg-white/80 backdrop-blur-sm border border-gray-200 hover:bg-white/90 hover:shadow-lg transition-all duration-300 group">
<div className="text-2xl group-hover:scale-110 transition-transform duration-300">
<div className="text-3xl group-hover:scale-110 transition-transform duration-300">
{feature.icon}
</div>
<div>
<h4 className="font-semibold text-gray-800 mb-1">{feature.title}</h4>
<p className="text-gray-600 text-lg">{feature.description}</p>
<h4 className="font-bold text-gray-800 mb-2 text-xl">{feature.title}</h4>
<p className="text-gray-600 text-xl leading-relaxed">{feature.description}</p>
</div>
</div>
</FadeInSection>
@ -115,13 +115,13 @@ const AboutSection = () => {
<div className="absolute inset-0 rounded-2xl bg-gradient-to-br from-blue-500/10 to-purple-500/10 opacity-0 group-hover:opacity-100 transition-opacity duration-500"></div>
<div className="relative z-10 text-center">
<div className="text-3xl mb-2 group-hover:scale-110 transition-transform duration-300">
<div className="text-5xl mb-4 group-hover:scale-110 transition-transform duration-300">
{stat.icon}
</div>
<div className="text-3xl font-bold text-gray-800 mb-2 group-hover:text-blue-600 transition-all duration-300 drop-shadow-lg">
<div className="text-5xl font-bold text-gray-800 mb-4 group-hover:text-blue-600 transition-all duration-300 drop-shadow-lg">
{stat.number}
</div>
<div className="text-gray-600 text-sm font-medium">
<div className="text-gray-600 text-lg font-medium leading-relaxed">
{stat.label}
</div>
</div>
@ -137,10 +137,53 @@ const AboutSection = () => {
<FadeInSection as="div" delay={0.6} className="text-center mt-16">
<button
onClick={() => setIsContactModalOpen(true)}
className="inline-flex items-center space-x-2 px-6 py-3 rounded-full bg-gradient-to-r from-blue-500/20 to-purple-500/20 border border-blue-300 backdrop-blur-sm hover:scale-105 transition-transform duration-300 cursor-pointer hover:from-blue-500/30 hover:to-purple-500/30"
className="group relative overflow-hidden rounded-2xl hover:scale-105 transition-all duration-500 shadow-2xl hover:shadow-3xl"
>
<span className="text-gray-800 font-medium">Готовы начать строительство?</span>
<div className="w-2 h-2 bg-green-400 rounded-full"></div>
{/* Фоновое изображение */}
<div className="absolute inset-0">
<Image
src="/images/4.1.png"
alt="Строительство дома"
fill
className="object-cover"
/>
</div>
{/* Анимированный блик */}
<div className="absolute top-0 left-0 w-full h-full bg-gradient-to-r from-transparent via-white/20 to-transparent -skew-x-12 -translate-x-full group-hover:translate-x-full transition-transform duration-700"></div>
{/* Контент кнопки */}
<div className="relative z-10 px-8 py-6 rounded-2xl backdrop-blur-sm">
<div className="flex items-center justify-center space-x-4">
{/* Иконка дома */}
<div className="flex-shrink-0 w-12 h-12 bg-white/20 rounded-full flex items-center justify-center group-hover:scale-110 transition-transform duration-300">
<svg className="w-6 h-6 text-white" fill="currentColor" viewBox="0 0 24 24">
<path d="M12 3L2 12h3v8h6v-6h2v6h6v-8h3L12 3z"/>
</svg>
</div>
{/* Текст */}
<div className="text-center">
<h3 className="text-xl font-bold text-white mb-1 group-hover:text-yellow-200 transition-colors duration-300 drop-shadow-lg">
Готовы начать строительство?
</h3>
<p className="text-white/90 text-sm group-hover:text-white transition-colors duration-300 drop-shadow-md">
Получите бесплатную консультацию прямо сейчас
</p>
</div>
{/* Стрелка */}
<div className="flex-shrink-0 w-8 h-8 bg-white/20 rounded-full flex items-center justify-center group-hover:translate-x-1 transition-transform duration-300">
<svg className="w-4 h-4 text-white" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M9 5l7 7-7 7" />
</svg>
</div>
</div>
{/* Декоративные элементы */}
<div className="absolute top-2 right-2 w-2 h-2 bg-yellow-400 rounded-full animate-pulse"></div>
<div className="absolute bottom-2 left-2 w-1 h-1 bg-white/60 rounded-full"></div>
</div>
</button>
</FadeInSection>
</div>

View File

@ -88,9 +88,12 @@ const ContactSection = () => {
<h3 className="text-xl font-bold text-gray-800 mb-2 group-hover/item:text-blue-600 transition-colors duration-300">
Телефон
</h3>
<span className="text-gray-600 text-lg">
будет другой
</span>
<a
href="tel:+79530132423"
className="text-gray-600 text-lg hover:text-blue-600 hover:bg-blue-50 px-2 py-1 rounded-lg transition-all duration-300 cursor-pointer"
>
7 953 013 24 23
</a>
</div>
</div>

View File

@ -51,19 +51,36 @@ const Header = () => {
<div className="hidden md:flex items-center space-x-6 flex-shrink-0">
<div className="text-right">
<a
href="tel:+78352329226"
href="tel:+79530132423"
className="flex items-center text-white hover:text-blue-400 transition-colors group text-lg font-semibold whitespace-nowrap"
>
+7 8352 32 92 26
+7 953 013 24 23
</a>
<div className="text-xs text-gray-300 mt-1">Пн - Вс с 8:00 до 20:00</div>
</div>
<button
onClick={() => setIsModalOpen(true)}
className="bg-gradient-to-r from-blue-500/20 to-purple-500/20 border border-white/20 backdrop-blur-sm text-white px-8 py-3.5 rounded-lg hover:from-blue-500/30 hover:to-purple-500/30 hover:border-white/40 transition-all duration-300 hover:scale-105 text-base font-semibold flex-shrink-0 flex items-center space-x-2 group"
className="relative bg-gradient-to-r from-orange-500 to-red-500 text-white px-8 py-3.5 rounded-lg font-bold text-base flex-shrink-0 flex items-center space-x-2 group overflow-hidden transform hover:scale-105 transition-all duration-300 shadow-lg hover:shadow-xl animate-pulse hover:animate-none"
>
{/* Светящийся фон */}
<div className="absolute inset-0 bg-gradient-to-r from-orange-400 to-red-400 opacity-0 group-hover:opacity-100 transition-opacity duration-300"></div>
{/* Анимированная граница */}
<div className="absolute inset-0 rounded-lg bg-gradient-to-r from-yellow-400 via-orange-500 to-red-500 opacity-75 blur-sm group-hover:blur-md transition-all duration-300"></div>
<div className="absolute inset-0.5 bg-gradient-to-r from-orange-500 to-red-500 rounded-lg"></div>
{/* Контент кнопки */}
<div className="relative z-10 flex items-center space-x-2">
<Phone className="w-5 h-5 group-hover:animate-bounce" />
<span>Оставить заявку</span>
<span className="relative">
Оставить заявку
{/* Подчеркивание */}
<span className="absolute bottom-0 left-0 w-0 h-0.5 bg-yellow-300 group-hover:w-full transition-all duration-300"></span>
</span>
</div>
{/* Блик */}
<div className="absolute top-0 left-0 w-full h-full bg-gradient-to-r from-transparent via-white/20 to-transparent -skew-x-12 -translate-x-full group-hover:translate-x-full transition-transform duration-700"></div>
</button>
</div>

View File

@ -9,51 +9,51 @@ import { Droplets, Zap, Thermometer, Wrench } from 'lucide-react';
const workExamples = [
{
id: 1,
title: ом из газобетона',
description: 'Современный двухэтажный дом площадью 120 кв.м. с чистовой отделкой',
image: '/images/1q.jpeg',
area: '120 кв.м',
material: 'Газобетон',
title: еревянный каркасный дом',
description: 'Г.Чебоксары п. Альгешево, 100 м2',
image: '/images/koroche.jpg',
area: '100 кв.м',
material: 'Каркасная технология',
},
{
id: 2,
title: 'Каркасный дом',
description: 'Уютный одноэтажный дом с террасой, построен за 45 дней',
image: '/images/2q.jpeg',
area: '85 кв.м',
title: 'Деревянный каркасный дом',
description: 'г. Мариинский Посад, 80 м2',
image: '/images/koroche2.jpg',
area: '80 кв.м',
material: 'Каркасная технология',
},
{
id: 3,
title: ом из керамических блоков',
description: 'Энергоэффективный дом с современными инженерными системами',
image: '/images/3q.jpeg',
area: '160 кв.м',
material: 'Керамические блоки',
title: еревянный каркасный дом',
description: 'г. Цивильск, 80 м2',
image: '/images/koroche3.jpg',
area: '80 кв.м',
material: 'Каркасная технология',
},
{
id: 4,
title: ом из керамзитобетона',
description: 'Надежный и теплый дом для большой семьи',
image: '/images/4q.jpeg',
area: '140 кв.м',
material: 'Керамзитобетон',
title: еревянный каркасный дом',
description: 'с. Комсомольское, 78 м2',
image: '/images/koroche4.jpg',
area: '78 кв.м',
material: 'Каркасная технология',
},
{
id: 5,
title: 'Компактный дом',
description: 'Идеальное решение для молодой семьи с оптимальной планировкой',
image: '/images/5q.jpeg',
area: '95 кв.м',
material: 'Газобетон',
title: 'Деревянный каркасный дом',
description: 'Сосновка, 92 м2',
image: '/images/koroche5.jpg',
area: '92 кв.м',
material: 'Каркасная технология',
},
{
id: 6,
title: 'Загородный дом',
description: 'Просторный дом с панорамными окнами и современным дизайном',
image: '/images/6q.jpeg',
area: '180 кв.м',
material: 'Кирпич',
title: 'Деревянный каркасный дом',
description: 'пос. Кугеси 110 м2',
image: '/images/koroche6.webp',
area: '110 кв.м',
material: 'Каркасная технология',
},
];
@ -63,28 +63,32 @@ const additionalServices = [
icon: Droplets,
title: 'Монтаж водоснабжения',
description: 'Проектирование и установка систем водоснабжения с использованием качественных материалов',
features: ['Холодное и горячее водоснабжение', 'Установка счетчиков', 'Гарантия на работы']
features: ['Холодное и горячее водоснабжение', 'Установка счетчиков', 'Гарантия на работы'],
image: '/images/voda.jpeg'
},
{
id: 2,
icon: Wrench,
title: 'Монтаж канализации',
description: 'Полный комплекс работ по устройству канализационных систем',
features: ['Внутренняя канализация', 'Наружные сети', 'Септики и очистные сооружения']
features: ['Внутренняя канализация', 'Наружные сети', 'Септики и очистные сооружения'],
image: '/images/kanal.jpg'
},
{
id: 3,
icon: Zap,
title: 'Монтаж электрики',
description: 'Электромонтажные работы любой сложности с соблюдением всех норм безопасности',
features: ['Внутренняя проводка', 'Электрощиты', 'Освещение и розетки']
features: ['Внутренняя проводка', 'Электрощиты', 'Освещение и розетки'],
image: '/images/electro.jpg'
},
{
id: 4,
icon: Thermometer,
title: 'Монтаж отопления',
description: 'Установка современных систем отопления для комфортного проживания',
features: ['Радиаторное отопление', 'Теплые полы', 'Котельное оборудование']
features: ['Радиаторное отопление', 'Теплые полы', 'Котельное оборудование'],
image: '/images/otop.jpg'
},
];
@ -187,33 +191,50 @@ const WorkExamplesSection = () => {
<FadeInSection
key={service.id}
as="div"
className="group relative p-6 rounded-2xl bg-white/80 backdrop-blur-md border border-gray-200 hover:border-blue-300 hover:shadow-xl transition-all duration-500 hover:scale-105 hover:-translate-y-2"
className="group relative rounded-2xl bg-white/80 backdrop-blur-md border border-gray-200 hover:border-blue-300 hover:shadow-xl transition-all duration-500 hover:scale-105 hover:-translate-y-2 overflow-hidden"
delay={0.9 + (index * 0.1)}
>
{/* Фон */}
<div className="absolute inset-0 rounded-2xl bg-gradient-to-br from-blue-500/10 to-purple-500/10 opacity-0 group-hover:opacity-100 transition-opacity duration-500"></div>
<div className="relative z-10 text-center">
<div className="inline-flex items-center justify-center w-16 h-16 rounded-full bg-gradient-to-br from-blue-500/20 to-purple-500/20 border border-blue-200 mb-4 group-hover:scale-110 transition-transform duration-300">
<service.icon className="w-8 h-8 text-blue-600 group-hover:text-blue-700" />
<div className="relative z-10">
{/* Изображение */}
<div className="relative h-40 w-full overflow-hidden rounded-t-2xl">
<Image
src={service.image}
alt={service.title}
fill
className="object-cover group-hover:scale-110 transition-transform duration-500"
sizes="(max-width: 768px) 100vw, (max-width: 1200px) 50vw, 25vw"
/>
{/* Градиент поверх изображения */}
<div className="absolute inset-0 bg-gradient-to-t from-gray-900/60 via-transparent to-transparent"></div>
{/* Иконка поверх изображения */}
<div className="absolute top-4 left-4 w-12 h-12 rounded-full bg-white/20 backdrop-blur-sm border border-white/30 flex items-center justify-center group-hover:scale-110 transition-transform duration-300">
<service.icon className="w-6 h-6 text-white" />
</div>
</div>
<h4 className="text-lg font-bold text-gray-800 mb-3 group-hover:text-blue-600 transition-colors duration-300">
{service.title}
</h4>
<p className="text-gray-600 text-sm mb-4 leading-relaxed">
{service.description}
</p>
<ul className="space-y-2">
{service.features.map((feature, featureIndex) => (
<li key={featureIndex} className="flex items-center text-xs text-gray-500">
<div className="w-1.5 h-1.5 bg-green-400 rounded-full mr-2"></div>
{feature}
</li>
))}
</ul>
{/* Контент */}
<div className="p-6 text-center">
<h4 className="text-xl font-bold text-gray-800 mb-4 group-hover:text-blue-600 transition-colors duration-300">
{service.title}
</h4>
<p className="text-gray-600 text-base mb-6 leading-relaxed">
{service.description}
</p>
<ul className="space-y-3">
{service.features.map((feature, featureIndex) => (
<li key={featureIndex} className="flex items-center text-sm text-gray-500">
<div className="w-2 h-2 bg-green-400 rounded-full mr-3"></div>
{feature}
</li>
))}
</ul>
</div>
</div>
{/* Декоративный элемент */}
@ -229,7 +250,7 @@ const WorkExamplesSection = () => {
onClick={() => setIsCallbackModalOpen(true)}
className="inline-flex items-center space-x-2 px-6 py-3 rounded-full bg-gradient-to-r from-blue-500/20 to-purple-500/20 border border-blue-300 backdrop-blur-sm hover:scale-105 transition-transform duration-300 cursor-pointer hover:from-blue-500/30 hover:to-purple-500/30"
>
<span className="text-gray-800 font-medium">Хотите увидеть свой дом в этой галерее?</span>
<span className="text-gray-800 font-medium">Помощь в подборе земельного участка, юридическое сопровождение</span>
<div className="w-2 h-2 bg-green-400 rounded-full animate-pulse"></div>
</button>
</FadeInSection>