Обновлены компоненты страницы: передан параметр selectedCity в компонент Hero, добавлены новые изображения для услуг в компоненте Services, исправлены данные о компании в компонентах About и Footer, обновлены контактные данные в компоненте Contacts, изменены описания в компоненте WhyUs. Также добавлено предупреждение о необходимости замены заглушек для изображений.

This commit is contained in:
Bivekich
2025-04-06 18:07:54 +03:00
parent 5705d70867
commit eea97a129f
18 changed files with 65 additions and 21 deletions

View File

@ -104,7 +104,7 @@ const About = () => {
</div>
<div>
<h3 className="text-xl font-semibold text-gray-900 mb-2">
Более 9 лет на рынке
Более 11 лет на рынке
</h3>
<p className="text-gray-600">
Многолетний опыт работы позволяет нам решать задачи любой
@ -211,20 +211,20 @@ const About = () => {
variants={containerVariants}
>
<motion.div className="text-center" variants={statsVariants}>
<div className="text-4xl font-bold text-blue-700 mb-2">9+</div>
<div className="text-4xl font-bold text-blue-700 mb-2">11+</div>
<div className="text-gray-600">лет опыта</div>
</motion.div>
<motion.div className="text-center" variants={statsVariants}>
<div className="text-4xl font-bold text-blue-700 mb-2">500+</div>
<div className="text-4xl font-bold text-blue-700 mb-2">1500+</div>
<div className="text-gray-600">проектов</div>
</motion.div>
<motion.div className="text-center" variants={statsVariants}>
<div className="text-4xl font-bold text-blue-700 mb-2">50+</div>
<div className="text-gray-600">экспертов</div>
<div className="text-4xl font-bold text-blue-700 mb-2">100%</div>
<div className="text-gray-600">бесплатная юр. консультация</div>
</motion.div>
<motion.div className="text-center" variants={statsVariants}>
<div className="text-4xl font-bold text-blue-700 mb-2">98%</div>
<div className="text-gray-600">довольных клиентов</div>
<div className="text-4xl font-bold text-blue-700 mb-2">0</div>
<div className="text-gray-600">скрытых услуг и доплат</div>
</motion.div>
</motion.div>
</motion.div>

View File

@ -14,7 +14,7 @@ import {
const cityContacts = {
Москва: {
address: 'г. Москва, ул. Пресненская, д. 6, стр. 2',
address: 'г. Москва, ул. Космонавта Волкова, д. 29к1',
phone: '+7 (916) 830-58-58',
email: 'ckeproekt@yandex.ru',
workHours: 'ПН-ПТ: 8:00 - 20:00',
@ -223,7 +223,7 @@ const Contacts = ({ selectedCity }: ContactsProps) => {
Время работы
</h3>
<p className="text-gray-600">{cityData.workHours}</p>
<p className="text-gray-600">Сб-Вс: выходной</p>
<p className="text-gray-600">Сб-Вс: 8:00 - 18:00</p>
</div>
</motion.div>
</div>

View File

@ -86,7 +86,7 @@ const Footer = ({ selectedCity }: FooterProps) => {
>
<Building className="h-6 w-6" />
<div>
<h2 className="text-xl font-bold">ЦКЕ</h2>
<h2 className="text-xl font-bold">ЦКЭ</h2>
<p className="text-sm text-gray-600">
Центр комплексных экспертиз
</p>
@ -182,7 +182,7 @@ const Footer = ({ selectedCity }: FooterProps) => {
className="flex flex-col md:flex-row justify-between items-center gap-4 text-sm text-gray-500"
>
<div>
© {new Date().getFullYear()} ЦКЕ - Центр комплексных экспертиз.
© {new Date().getFullYear()} ЦКЭ - Центр комплексных экспертиз.
Все права защищены
</div>
<motion.div whileHover={{ scale: 1.05 }}>

View File

@ -73,7 +73,7 @@ const Header = ({ selectedCity, onCityChange }: HeaderProps) => {
>
<Building className="h-6 w-6" />
<div>
<span className="text-xl font-bold">ЦКЕ</span>
<span className="text-xl font-bold">ЦКЭ</span>
<span className="block text-sm font-normal text-gray-600">
Центр комплексных экспертиз
</span>

View File

@ -10,7 +10,11 @@ import { sendTelegramNotification } from '@/lib/telegram';
import ContactModal from './ContactModal';
import { cn } from '@/lib/utils';
const Hero = () => {
interface HeroProps {
selectedCity: 'Москва' | 'Чебоксары';
}
const Hero = ({ selectedCity }: HeroProps) => {
const [phone, setPhone] = useState('');
const [isSubmitted, setIsSubmitted] = useState(false);
const [error, setError] = useState('');
@ -93,6 +97,11 @@ const Hero = () => {
/>
</div>
{/* Заглушка-предупреждение */}
<div className="absolute top-4 right-4 bg-yellow-600 text-white text-xs px-3 py-1 rounded z-10">
Нужна баннерная фотография для этого раздела
</div>
<motion.div
className="container mx-auto px-4 py-16 sm:py-20 relative"
variants={containerVariants}
@ -105,7 +114,8 @@ const Hero = () => {
className="text-3xl sm:text-4xl md:text-5xl font-bold leading-tight"
variants={itemVariants}
>
Независимая строительно-техническая экспертиза в Москве и Чебоксарах
Независимая строительно-техническая экспертиза в{' '}
{selectedCity === 'Москва' ? 'Москве' : 'Чебоксарах'}
</motion.h1>
{/* Описание */}
@ -186,16 +196,16 @@ const Hero = () => {
variants={itemVariants}
>
<div className="bg-white/10 backdrop-blur-sm rounded-lg p-4">
<p className="font-bold text-xl sm:text-2xl mb-2">9+ лет</p>
<p className="font-bold text-xl sm:text-2xl mb-2">11+ лет</p>
<p className="text-blue-100">опыта в экспертизе</p>
</div>
<div className="bg-white/10 backdrop-blur-sm rounded-lg p-4">
<p className="font-bold text-xl sm:text-2xl mb-2">500+</p>
<p className="font-bold text-xl sm:text-2xl mb-2">1500+</p>
<p className="text-blue-100">выполненных проектов</p>
</div>
<div className="bg-white/10 backdrop-blur-sm rounded-lg p-4">
<p className="font-bold text-xl sm:text-2xl mb-2">100%</p>
<p className="text-blue-100">гарантия качества</p>
<p className="text-blue-100">фиксированная цена без доплат</p>
</div>
</motion.div>
</div>

View File

@ -11,10 +11,12 @@ import {
Building,
FlaskConical,
ArrowRight,
FileText,
} from 'lucide-react';
import { Button } from '@/components/ui/button';
import ContactModal from './ContactModal';
import Link from 'next/link';
import Image from 'next/image';
export const services = [
{
@ -29,6 +31,7 @@ export const services = [
'Расчет стоимости восстановительных работ',
'Составление экспертного заключения',
],
image: '/images/placeholders/services/flood-expertise.jpg',
},
{
icon: Waves,
@ -42,6 +45,7 @@ export const services = [
'Оценка состояния коммуникаций',
'Рекомендации по ремонту',
],
image: '/images/placeholders/services/sewerage-inspection.jpg',
},
{
icon: Home,
@ -55,6 +59,7 @@ export const services = [
'Анализ микроклимата',
'Подготовка документации',
],
image: '/images/placeholders/services/house-recognition.jpg',
},
{
icon: CheckSquare,
@ -68,6 +73,7 @@ export const services = [
'Выявление дефектов',
'Рекомендации по устранению',
],
image: '/images/placeholders/services/renovation-expertise.jpg',
},
{
icon: Thermometer,
@ -81,6 +87,7 @@ export const services = [
'Выявление мостиков холода',
'Рекомендации по утеплению',
],
image: '/images/placeholders/services/thermal-inspection.jpg',
},
{
icon: Building,
@ -94,6 +101,7 @@ export const services = [
'Оценка материалов',
'Выявление нарушений',
],
image: '/images/placeholders/services/construction-control.jpg',
},
{
icon: FlaskConical,
@ -107,6 +115,7 @@ export const services = [
'Расчет площадей',
'Составление технического паспорта',
],
image: '/images/placeholders/services/room-measurement.jpg',
},
];
@ -202,6 +211,26 @@ const Services = () => {
</ul>
</div>
</div>
<div className="relative h-64">
<Image
src={service.image}
alt={service.title}
fill
className="object-cover"
/>
<motion.div
initial={{ opacity: 0 }}
whileHover={{ opacity: 1 }}
className="absolute inset-0 bg-black bg-opacity-20 flex items-center justify-center"
>
<motion.div
whileHover={{ scale: 1.2 }}
whileTap={{ scale: 0.9 }}
>
<FileText className="w-10 h-10 text-white" />
</motion.div>
</motion.div>
</div>
</motion.div>
</Link>
))}
@ -213,6 +242,11 @@ const Services = () => {
<br />
Все консультации бесплатны.
</p>
<p className="text-gray-600 mb-6 text-sm italic">
Примечание: Для каждой услуги необходимы качественные тематические
фотографии. Пожалуйста, предоставьте соответствующие изображения
для замены заглушек.
</p>
<motion.div whileHover={{ scale: 1.05 }} whileTap={{ scale: 0.95 }}>
<Button
className="bg-blue-700 hover:bg-blue-800 text-white px-8"

View File

@ -31,13 +31,13 @@ const features = [
icon: Building2,
title: 'Членство в СРО',
description:
'Состоим в профильных СРО, предоставляющей разрешение на работы и страхование до 30 млн рублей.',
'Состоим в профильных СРО, предоставляющей разрешение на работы и подтверждающее нашу квалификацию.',
},
{
icon: Umbrella,
title: 'Страховая защита',
description:
'Застрахованы в Британском страховом доме на 10 млн рублей, что гарантирует безопасность наших клиентов.',
'Застрахованы в Британском страховом доме на 30 млн рублей, что гарантирует безопасность наших клиентов.',
},
{
icon: FileCheck,

View File

@ -47,12 +47,12 @@ export default function Home() {
onCityChange={setSelectedCity}
/>
<main className="flex-1">
<Hero />
<Hero selectedCity={selectedCity} />
<Services />
<About />
<WhyUs />
<WorkFlow />
<Certificates />
<Services />
<Contacts selectedCity={selectedCity} />
<ContactForm />
</main>