feat: simplify navigation and add RU/EN home and contacts

- simplify main navigation and hide extra menu items
- make home page more sales-focused with updated hero, benefits and fleet teaser
- add RU/EN handling for home and contacts, including SEO defaults
- integrate basic Strapi homepage API client (no breaking changes)
- update contacts page with messenger buttons and dynamic footer year

Made-with: Cursor
This commit is contained in:
2026-03-13 19:41:07 +05:00
parent 575db0ac53
commit fde9609f9a
26 changed files with 1753 additions and 735 deletions

View File

@@ -1,8 +1,13 @@
import React from 'react';
import PageHeader from '../components/PageHeader';
import { CheckCircle2, Building, Factory, ShoppingCart, Network, Wrench, Target, Award, Users, TrendingUp } from 'lucide-react';
import { useLocation } from 'react-router-dom';
const ConstructionPage: React.FC = () => {
const location = useLocation();
const isEnglish = location.pathname.startsWith('/en');
const prefix = isEnglish ? '/en' : '';
const capabilities = [
{ icon: Building, title: 'Строительство административных, жилых и офисных зданий' },
{ icon: Factory, title: 'Строительство промышленных комплексов' },
@@ -51,8 +56,12 @@ const ConstructionPage: React.FC = () => {
return (
<div className="bg-white pb-20">
<PageHeader
title="Строительство"
description="Полный комплекс строительных и монтажных работ любой сложности"
title={isEnglish ? 'Construction' : 'Строительство'}
description={
isEnglish
? 'Full range of construction and installation works of any complexity.'
: 'Полный комплекс строительных и монтажных работ любой сложности'
}
image="/media/images/headers/header-building.png"
/>
@@ -61,10 +70,15 @@ const ConstructionPage: React.FC = () => {
<div className="max-w-5xl mx-auto mb-20">
<div className="bg-gradient-to-br from-brand-orange to-orange-600 text-white rounded-2xl p-8 md:p-12 mb-12">
<p className="text-xl leading-relaxed mb-4 font-semibold">
Строительство зданий и сооружений одно из приоритетных направлений работы ООО «ГеоВектор».
{isEnglish
? 'Construction of buildings and facilities is one of the core business areas of GeoVector LLC.'
: 'Строительство зданий и сооружений одно из приоритетных направлений работы ООО «ГеоВектор».'
}
</p>
<p className="text-lg leading-relaxed">
Наши услуги включают выполнение полного комплекса строительных и монтажных работ.
{isEnglish
? 'Our services cover the full cycle of construction and installation works.'
: 'Наши услуги включают выполнение полного комплекса строительных и монтажных работ.'}
</p>
</div>
</div>
@@ -72,10 +86,12 @@ const ConstructionPage: React.FC = () => {
{/* Возможности компании */}
<div className="max-w-6xl mx-auto mb-20">
<h2 className="text-3xl font-bold text-gray-900 mb-4 text-center">
Возможности нашей компании
{isEnglish ? 'Our capabilities' : 'Возможности нашей компании'}
</h2>
<p className="text-center text-gray-600 mb-12 max-w-3xl mx-auto">
Мы предлагаем не только типовые строительные решения, но также индивидуальные разработки
{isEnglish
? 'We offer both standard construction solutions and fully tailored designs.'
: 'Мы предлагаем не только типовые строительные решения, но также индивидуальные разработки'}
</p>
<div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6">
@@ -101,20 +117,23 @@ const ConstructionPage: React.FC = () => {
<div className="max-w-6xl mx-auto mb-20">
<div className="bg-gray-50 rounded-2xl p-8 md:p-12">
<h2 className="text-3xl font-bold text-gray-900 mb-6 text-center">
Преимущества комплексного подхода к строительству
{isEnglish
? 'Benefits of an integrated construction approach'
: 'Преимущества комплексного подхода к строительству'}
</h2>
<div className="space-y-6">
<p className="text-lg text-gray-700 leading-relaxed">
Применение современных технических средств на всех этапах строительства, высокий профессионализм
архитекторов, инженеров-строителей и дизайнеров выступают гарантией своевременного и качественного
выполнения любого заказа.
{isEnglish
? 'Use of modern technologies at all stages of construction and high professionalism of our architects, structural engineers and designers guarantee timely and high-quality delivery of any project.'
: 'Применение современных технических средств на всех этапах строительства, высокий профессионализм архитекторов, инженеров-строителей и дизайнеров выступают гарантией своевременного и качественного выполнения любого заказа.'}
</p>
<div className="bg-white rounded-xl p-6 border-l-4 border-brand-orange">
<p className="text-gray-700 leading-relaxed">
За время деятельности компания реализовала значительное число проектов, включая возведение
и реконструкцию объектов, находящихся в Республике Башкортостан и других регионах страны.
{isEnglish
? 'Over the years we have implemented numerous projects, including construction and reconstruction works in the Republic of Bashkortostan and other regions of Russia.'
: 'За время деятельности компания реализовала значительное число проектов, включая возведение и реконструкцию объектов, находящихся в Республике Башкортостан и других регионах страны.'}
</p>
</div>
</div>
@@ -124,11 +143,14 @@ const ConstructionPage: React.FC = () => {
{/* Факторы, учитываемые при строительстве */}
<div className="max-w-6xl mx-auto mb-20">
<h2 className="text-3xl font-bold text-gray-900 mb-4 text-center">
Важнейшие факторы при выполнении строительства
{isEnglish
? 'Key factors we consider during construction'
: 'Важнейшие факторы при выполнении строительства'}
</h2>
<p className="text-center text-gray-600 mb-12 max-w-3xl mx-auto">
В процессе выполнения строительства мы учитываем все важнейшие факторы,
влияющие на эффективность будущего использования здания
{isEnglish
? 'During construction we consider all major factors that affect the efficiency and usability of the future facility.'
: 'В процессе выполнения строительства мы учитываем все важнейшие факторы, влияющие на эффективность будущего использования здания'}
</p>
<div className="grid grid-cols-1 md:grid-cols-3 gap-8">
@@ -161,12 +183,15 @@ const ConstructionPage: React.FC = () => {
<Users size={48} className="text-brand-orange" />
</div>
<div>
<h3 className="text-2xl font-bold mb-4">Проектирование и строительство единый процесс</h3>
<h3 className="text-2xl font-bold mb-4">
{isEnglish
? 'Design and construction as a single process'
: 'Проектирование и строительство единый процесс'}
</h3>
<p className="text-gray-300 leading-relaxed">
Проектирование и строительство объектов взаимосвязанные процессы, каждый из которых требует
тщательного контроля. Наша компания может предложить заказчикам не только непосредственное
проведение строительных работ, но и профессиональные услуги на всех стадиях выполнения заказа
от проектирования до отделочных работ и ввода готового объекта в эксплуатацию.
{isEnglish
? 'Design and construction are tightly connected processes, each requiring careful control. We can support you at every stage from initial design to finishing works and commissioning of the facility.'
: 'Проектирование и строительство объектов взаимосвязанные процессы, каждый из которых требует тщательного контроля. Наша компания может предложить заказчикам не только непосредственное проведение строительных работ, но и профессиональные услуги на всех стадиях выполнения заказа от проектирования до отделочных работ и ввода готового объекта в эксплуатацию.'}
</p>
</div>
</div>
@@ -176,7 +201,9 @@ const ConstructionPage: React.FC = () => {
{/* Разделы комплексных проектов */}
<div className="max-w-6xl mx-auto mb-20">
<h2 className="text-3xl font-bold text-gray-900 mb-8 text-center">
Выполнение разделов комплексных проектов
{isEnglish
? 'Execution of sections for complex projects'
: 'Выполнение разделов комплексных проектов'}
</h2>
<div className="bg-gray-50 rounded-2xl p-8 md:p-10">
@@ -197,7 +224,9 @@ const ConstructionPage: React.FC = () => {
{/* Специальные разделы */}
<div className="max-w-6xl mx-auto mb-20">
<h2 className="text-3xl font-bold text-gray-900 mb-8 text-center">
Разработка специальных разделов
{isEnglish
? 'Development of specialised sections'
: 'Разработка специальных разделов'}
</h2>
<div className="grid md:grid-cols-3 gap-6">
@@ -221,7 +250,7 @@ const ConstructionPage: React.FC = () => {
<div className="max-w-5xl mx-auto">
<div className="bg-gray-50 rounded-2xl p-8 md:p-12">
<h2 className="text-3xl font-bold text-gray-900 mb-8 text-center">
Почему выбирают нас
{isEnglish ? 'Why clients choose us' : 'Почему выбирают нас'}
</h2>
<div className="grid md:grid-cols-2 gap-6 mb-8">
@@ -230,9 +259,13 @@ const ConstructionPage: React.FC = () => {
1
</div>
<div>
<h3 className="font-bold text-lg mb-2 text-gray-900">Комплексный подход</h3>
<h3 className="font-bold text-lg mb-2 text-gray-900">
{isEnglish ? 'Integrated approach' : 'Комплексный подход'}
</h3>
<p className="text-gray-600 text-sm leading-relaxed">
От проектирования до ввода объекта в эксплуатацию
{isEnglish
? 'From design to commissioning of the facility.'
: 'От проектирования до ввода объекта в эксплуатацию'}
</p>
</div>
</div>
@@ -242,9 +275,13 @@ const ConstructionPage: React.FC = () => {
2
</div>
<div>
<h3 className="font-bold text-lg mb-2 text-gray-900">Современные технологии</h3>
<h3 className="font-bold text-lg mb-2 text-gray-900">
{isEnglish ? 'Modern technologies' : 'Современные технологии'}
</h3>
<p className="text-gray-600 text-sm leading-relaxed">
Применение передовых технических средств на всех этапах
{isEnglish
? 'Use of advanced technologies at all stages.'
: 'Применение передовых технических средств на всех этапах'}
</p>
</div>
</div>
@@ -254,9 +291,13 @@ const ConstructionPage: React.FC = () => {
3
</div>
<div>
<h3 className="font-bold text-lg mb-2 text-gray-900">Профессиональная команда</h3>
<h3 className="font-bold text-lg mb-2 text-gray-900">
{isEnglish ? 'Professional team' : 'Профессиональная команда'}
</h3>
<p className="text-gray-600 text-sm leading-relaxed">
Высокий профессионализм архитекторов, инженеров и дизайнеров
{isEnglish
? 'High professionalism of architects, engineers and designers.'
: 'Высокий профессионализм архитекторов, инженеров и дизайнеров'}
</p>
</div>
</div>
@@ -266,9 +307,13 @@ const ConstructionPage: React.FC = () => {
4
</div>
<div>
<h3 className="font-bold text-lg mb-2 text-gray-900">Индивидуальный подход</h3>
<h3 className="font-bold text-lg mb-2 text-gray-900">
{isEnglish ? 'Individual approach' : 'Индивидуальный подход'}
</h3>
<p className="text-gray-600 text-sm leading-relaxed">
Типовые и индивидуальные строительные решения
{isEnglish
? 'Standard and fully customised construction solutions.'
: 'Типовые и индивидуальные строительные решения'}
</p>
</div>
</div>
@@ -279,13 +324,15 @@ const ConstructionPage: React.FC = () => {
<div className="mt-12 text-center">
<div className="bg-white rounded-2xl p-8 shadow-lg">
<p className="text-gray-700 mb-6 text-lg">
Готовы начать строительство вашего объекта?
{isEnglish
? 'Ready to start construction of your facility?'
: 'Готовы начать строительство вашего объекта?'}
</p>
<a
href="#/contacts"
href={`#${prefix}/contacts`}
className="inline-block px-10 py-4 bg-brand-orange text-white font-bold rounded-lg hover:bg-orange-600 transition-colors text-lg shadow-lg hover:shadow-xl"
>
Обсудить проект
{isEnglish ? 'Discuss the project' : 'Обсудить проект'}
</a>
</div>
</div>