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:
@@ -1,60 +1,100 @@
|
||||
import React from 'react';
|
||||
import PageHeader from '../components/PageHeader';
|
||||
import { CheckCircle2, Map, FileText, MapPin, Landmark, ClipboardList, Navigation } from 'lucide-react';
|
||||
import { useLocation } from 'react-router-dom';
|
||||
|
||||
const LandSurveyPage: React.FC = () => {
|
||||
const location = useLocation();
|
||||
const isEnglish = location.pathname.startsWith('/en');
|
||||
|
||||
const services = [
|
||||
{
|
||||
icon: Landmark,
|
||||
title: 'Рекультивация нарушенных земель',
|
||||
description: 'Восстановление земель после промышленной деятельности и приведение их в состояние, пригодное для дальнейшего использования'
|
||||
title: isEnglish ? 'Reclamation of disturbed lands' : 'Рекультивация нарушенных земель',
|
||||
description: isEnglish
|
||||
? 'Restoration of land affected by industrial activities and bringing it into a condition suitable for further use.'
|
||||
: 'Восстановление земель после промышленной деятельности и приведение их в состояние, пригодное для дальнейшего использования'
|
||||
},
|
||||
{
|
||||
icon: FileText,
|
||||
title: 'Подготовка материалов к актам выбора земельного участка лесного фонда',
|
||||
description: 'Комплексная подготовка документации и согласование с надзорными инстанциями для выбора участков лесного фонда'
|
||||
title: isEnglish
|
||||
? 'Preparation of documentation for selecting forest land plots'
|
||||
: 'Подготовка материалов к актам выбора земельного участка лесного фонда',
|
||||
description: isEnglish
|
||||
? 'Comprehensive preparation of documentation and coordination with supervisory authorities for selecting forest fund land plots.'
|
||||
: 'Комплексная подготовка документации и согласование с надзорными инстанциями для выбора участков лесного фонда'
|
||||
},
|
||||
{
|
||||
icon: Map,
|
||||
title: 'Градостроительный план земельного участка',
|
||||
description: 'Разработка градостроительного плана с указанием всех необходимых параметров и ограничений использования территории'
|
||||
title: isEnglish
|
||||
? 'Urban development plan of a land plot'
|
||||
: 'Градостроительный план земельного участка',
|
||||
description: isEnglish
|
||||
? 'Development of an urban development plan indicating all required parameters and land‑use restrictions for the territory.'
|
||||
: 'Разработка градостроительного плана с указанием всех необходимых параметров и ограничений использования территории'
|
||||
},
|
||||
{
|
||||
icon: ClipboardList,
|
||||
title: 'Проект планировки и проект межевания территории',
|
||||
description: 'Разработка проектов планировки и межевания для комплексного освоения территорий и организации рационального землепользования'
|
||||
title: isEnglish
|
||||
? 'Planning and subdivision (demarcation) projects'
|
||||
: 'Проект планировки и проект межевания территории',
|
||||
description: isEnglish
|
||||
? 'Development of planning and subdivision projects for integrated development of territories and rational land use.'
|
||||
: 'Разработка проектов планировки и межевания для комплексного освоения территорий и организации рационального землепользования'
|
||||
},
|
||||
{
|
||||
icon: Navigation,
|
||||
title: 'Получение технических условий',
|
||||
description: 'Получение технических условий на подключение к инженерным сетям и дальнейшее согласование в соответствующих организациях'
|
||||
title: isEnglish ? 'Obtaining technical specifications' : 'Получение технических условий',
|
||||
description: isEnglish
|
||||
? 'Obtaining technical conditions for connection to engineering networks and further coordination with the relevant utility providers.'
|
||||
: 'Получение технических условий на подключение к инженерным сетям и дальнейшее согласование в соответствующих организациях'
|
||||
}
|
||||
];
|
||||
|
||||
const cadastralWorks = [
|
||||
{
|
||||
title: 'Согласование границ земельных участков',
|
||||
description: 'Проведение работ по установлению и согласованию границ земельных участков с заинтересованными лицами и смежными землепользователями'
|
||||
title: isEnglish
|
||||
? 'Boundary agreement for land plots'
|
||||
: 'Согласование границ земельных участков',
|
||||
description: isEnglish
|
||||
? 'Carrying out works to establish and agree land plot boundaries with interested parties and adjoining land users.'
|
||||
: 'Проведение работ по установлению и согласованию границ земельных участков с заинтересованными лицами и смежными землепользователями'
|
||||
},
|
||||
{
|
||||
title: 'Определение координат и границ межевых знаков',
|
||||
description: 'Геодезические измерения и закрепление межевых знаков на местности с использованием современного оборудования'
|
||||
title: isEnglish
|
||||
? 'Determining coordinates and boundaries of boundary markers'
|
||||
: 'Определение координат и границ межевых знаков',
|
||||
description: isEnglish
|
||||
? 'Geodetic measurements and setting boundary markers in the field using modern surveying equipment.'
|
||||
: 'Геодезические измерения и закрепление межевых знаков на местности с использованием современного оборудования'
|
||||
},
|
||||
{
|
||||
title: 'Определение площади земельного участка',
|
||||
description: 'Точный расчет площади земельного участка по полученным координатам межевых знаков с применением современных методик'
|
||||
title: isEnglish
|
||||
? 'Determining the land plot area'
|
||||
: 'Определение площади земельного участка',
|
||||
description: isEnglish
|
||||
? 'Accurate calculation of the land plot area based on boundary marker coordinates using modern methods.'
|
||||
: 'Точный расчет площади земельного участка по полученным координатам межевых знаков с применением современных методик'
|
||||
},
|
||||
{
|
||||
title: 'Формирование пакета документов',
|
||||
description: 'Подготовка полного пакета документов и последующая сдача землеустроительного дела (межевой план) в соответствующие государственные органы'
|
||||
title: isEnglish
|
||||
? 'Document package preparation'
|
||||
: 'Формирование пакета документов',
|
||||
description: isEnglish
|
||||
? 'Preparation of the full set of documents and subsequent submission of the land management file (cadastral plan) to the relevant state authorities.'
|
||||
: 'Подготовка полного пакета документов и последующая сдача землеустроительного дела (межевой план) в соответствующие государственные органы'
|
||||
}
|
||||
];
|
||||
|
||||
return (
|
||||
<div className="bg-white pb-20">
|
||||
<PageHeader
|
||||
title="Землеустроительные и кадастровые работы"
|
||||
description="Комплекс услуг по межеванию, кадастровому учету и землеустройству"
|
||||
title={isEnglish ? 'Land management and cadastral works' : 'Землеустроительные и кадастровые работы'}
|
||||
description={
|
||||
isEnglish
|
||||
? 'A comprehensive range of services in land surveying, cadastral registration and land management.'
|
||||
: 'Комплекс услуг по межеванию, кадастровому учету и землеустройству'
|
||||
}
|
||||
image="/media/images/headers/header-zemlestroit-kadastr-jobs.png"
|
||||
/>
|
||||
|
||||
@@ -62,10 +102,12 @@ const LandSurveyPage: 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 ? 'Main types of works' : 'Основные виды работ'}
|
||||
</h2>
|
||||
<p className="text-center text-gray-600 mb-12 max-w-3xl mx-auto">
|
||||
Профессиональное выполнение землеустроительных и кадастровых работ любой сложности
|
||||
{isEnglish
|
||||
? 'Professional execution of land management and cadastral works of any complexity.'
|
||||
: 'Профессиональное выполнение землеустроительных и кадастровых работ любой сложности'}
|
||||
</p>
|
||||
|
||||
<div className="space-y-6">
|
||||
@@ -97,10 +139,14 @@ const LandSurveyPage: React.FC = () => {
|
||||
<div className="text-center mb-12">
|
||||
<div className="inline-flex items-center gap-3 bg-brand-orange text-white px-8 py-4 rounded-full mb-4">
|
||||
<MapPin size={32} />
|
||||
<span className="text-xl font-bold">КАДАСТРОВЫЕ РАБОТЫ</span>
|
||||
<span className="text-xl font-bold">
|
||||
{isEnglish ? 'CADASTRAL WORKS' : 'КАДАСТРОВЫЕ РАБОТЫ'}
|
||||
</span>
|
||||
</div>
|
||||
<p className="text-gray-600 max-w-3xl mx-auto">
|
||||
Комплексное выполнение работ по межеванию земельных участков и подготовке документации для государственного кадастрового учета
|
||||
{isEnglish
|
||||
? 'Comprehensive execution of boundary survey works and preparation of documentation for state cadastral registration.'
|
||||
: 'Комплексное выполнение работ по межеванию земельных участков и подготовке документации для государственного кадастрового учета'}
|
||||
</p>
|
||||
</div>
|
||||
|
||||
@@ -129,7 +175,7 @@ const LandSurveyPage: React.FC = () => {
|
||||
{/* Этапы работы */}
|
||||
<div className="max-w-6xl mx-auto mb-20">
|
||||
<h2 className="text-3xl font-bold text-gray-900 mb-12 text-center">
|
||||
Этапы выполнения работ
|
||||
{isEnglish ? 'Work stages' : 'Этапы выполнения работ'}
|
||||
</h2>
|
||||
|
||||
<div className="relative">
|
||||
@@ -141,8 +187,14 @@ const LandSurveyPage: React.FC = () => {
|
||||
1
|
||||
</div>
|
||||
<div className="flex-1 bg-white rounded-xl p-6 shadow-md">
|
||||
<h3 className="text-lg font-bold text-gray-900 mb-2">Получение заявки и выезд на объект</h3>
|
||||
<p className="text-gray-600 text-sm">Первичное обследование территории и определение объема работ</p>
|
||||
<h3 className="text-lg font-bold text-gray-900 mb-2">
|
||||
{isEnglish ? 'Receiving the request and site visit' : 'Получение заявки и выезд на объект'}
|
||||
</h3>
|
||||
<p className="text-gray-600 text-sm">
|
||||
{isEnglish
|
||||
? 'Initial site survey and defining the scope of work.'
|
||||
: 'Первичное обследование территории и определение объема работ'}
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -151,8 +203,14 @@ const LandSurveyPage: React.FC = () => {
|
||||
2
|
||||
</div>
|
||||
<div className="flex-1 bg-white rounded-xl p-6 shadow-md">
|
||||
<h3 className="text-lg font-bold text-gray-900 mb-2">Геодезические измерения</h3>
|
||||
<p className="text-gray-600 text-sm">Проведение измерений и закрепление границ межевыми знаками</p>
|
||||
<h3 className="text-lg font-bold text-gray-900 mb-2">
|
||||
{isEnglish ? 'Geodetic measurements' : 'Геодезические измерения'}
|
||||
</h3>
|
||||
<p className="text-gray-600 text-sm">
|
||||
{isEnglish
|
||||
? 'Carrying out field measurements and setting boundaries with boundary markers.'
|
||||
: 'Проведение измерений и закрепление границ межевыми знаками'}
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -161,8 +219,14 @@ const LandSurveyPage: React.FC = () => {
|
||||
3
|
||||
</div>
|
||||
<div className="flex-1 bg-white rounded-xl p-6 shadow-md">
|
||||
<h3 className="text-lg font-bold text-gray-900 mb-2">Согласование границ</h3>
|
||||
<p className="text-gray-600 text-sm">Согласование установленных границ со смежными землепользователями</p>
|
||||
<h3 className="text-lg font-bold text-gray-900 mb-2">
|
||||
{isEnglish ? 'Boundary agreement' : 'Согласование границ'}
|
||||
</h3>
|
||||
<p className="text-gray-600 text-sm">
|
||||
{isEnglish
|
||||
? 'Agreeing established boundaries with adjoining land users.'
|
||||
: 'Согласование установленных границ со смежными землепользователями'}
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -171,8 +235,14 @@ const LandSurveyPage: React.FC = () => {
|
||||
4
|
||||
</div>
|
||||
<div className="flex-1 bg-white rounded-xl p-6 shadow-md">
|
||||
<h3 className="text-lg font-bold text-gray-900 mb-2">Подготовка документации</h3>
|
||||
<p className="text-gray-600 text-sm">Формирование межевого плана и полного пакета документов</p>
|
||||
<h3 className="text-lg font-bold text-gray-900 mb-2">
|
||||
{isEnglish ? 'Documentation preparation' : 'Подготовка документации'}
|
||||
</h3>
|
||||
<p className="text-gray-600 text-sm">
|
||||
{isEnglish
|
||||
? 'Preparation of the cadastral (boundary) plan and the complete document package.'
|
||||
: 'Формирование межевого плана и полного пакета документов'}
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -181,8 +251,14 @@ const LandSurveyPage: React.FC = () => {
|
||||
5
|
||||
</div>
|
||||
<div className="flex-1 bg-white rounded-xl p-6 shadow-md">
|
||||
<h3 className="text-lg font-bold text-gray-900 mb-2">Сдача в государственные органы</h3>
|
||||
<p className="text-gray-600 text-sm">Передача документов в Росреестр для постановки на кадастровый учет</p>
|
||||
<h3 className="text-lg font-bold text-gray-900 mb-2">
|
||||
{isEnglish ? 'Submission to state authorities' : 'Сдача в государственные органы'}
|
||||
</h3>
|
||||
<p className="text-gray-600 text-sm">
|
||||
{isEnglish
|
||||
? 'Submitting documents to Rosreestr for state cadastral registration.'
|
||||
: 'Передача документов в Росреестр для постановки на кадастровый учет'}
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -193,7 +269,7 @@ const LandSurveyPage: React.FC = () => {
|
||||
<div className="max-w-6xl mx-auto">
|
||||
<div className="bg-gradient-to-br from-gray-900 to-gray-800 text-white rounded-2xl p-8 md:p-12 mb-12">
|
||||
<h2 className="text-3xl font-bold mb-8 text-center">
|
||||
Наши преимущества
|
||||
{isEnglish ? 'Our advantages' : 'Наши преимущества'}
|
||||
</h2>
|
||||
|
||||
<div className="grid md:grid-cols-3 gap-8">
|
||||
@@ -201,9 +277,13 @@ const LandSurveyPage: React.FC = () => {
|
||||
<div className="inline-flex w-16 h-16 bg-brand-orange rounded-xl items-center justify-center mb-4">
|
||||
<CheckCircle2 size={32} />
|
||||
</div>
|
||||
<h3 className="font-bold text-lg mb-3">Полное сопровождение</h3>
|
||||
<h3 className="font-bold text-lg mb-3">
|
||||
{isEnglish ? 'End‑to‑end support' : 'Полное сопровождение'}
|
||||
</h3>
|
||||
<p className="text-gray-300 text-sm leading-relaxed">
|
||||
От измерений на местности до получения свидетельства о регистрации
|
||||
{isEnglish
|
||||
? 'From field measurements to obtaining the registration certificate.'
|
||||
: 'От измерений на местности до получения свидетельства о регистрации'}
|
||||
</p>
|
||||
</div>
|
||||
|
||||
@@ -211,9 +291,13 @@ const LandSurveyPage: React.FC = () => {
|
||||
<div className="inline-flex w-16 h-16 bg-brand-orange rounded-xl items-center justify-center mb-4">
|
||||
<Navigation size={32} />
|
||||
</div>
|
||||
<h3 className="font-bold text-lg mb-3">Точность измерений</h3>
|
||||
<h3 className="font-bold text-lg mb-3">
|
||||
{isEnglish ? 'Measurement accuracy' : 'Точность измерений'}
|
||||
</h3>
|
||||
<p className="text-gray-300 text-sm leading-relaxed">
|
||||
Использование современного геодезического оборудования высокой точности
|
||||
{isEnglish
|
||||
? 'Use of modern high‑precision geodetic equipment.'
|
||||
: 'Использование современного геодезического оборудования высокой точности'}
|
||||
</p>
|
||||
</div>
|
||||
|
||||
@@ -221,9 +305,13 @@ const LandSurveyPage: React.FC = () => {
|
||||
<div className="inline-flex w-16 h-16 bg-brand-orange rounded-xl items-center justify-center mb-4">
|
||||
<FileText size={32} />
|
||||
</div>
|
||||
<h3 className="font-bold text-lg mb-3">Юридическая чистота</h3>
|
||||
<h3 className="font-bold text-lg mb-3">
|
||||
{isEnglish ? 'Legal compliance' : 'Юридическая чистота'}
|
||||
</h3>
|
||||
<p className="text-gray-300 text-sm leading-relaxed">
|
||||
Грамотное оформление всех документов в соответствии с законодательством
|
||||
{isEnglish
|
||||
? 'Proper preparation of all documents in strict accordance with current legislation.'
|
||||
: 'Грамотное оформление всех документов в соответствии с законодательством'}
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
@@ -233,13 +321,15 @@ const LandSurveyPage: React.FC = () => {
|
||||
<div className="text-center">
|
||||
<div className="bg-gray-50 rounded-2xl p-8">
|
||||
<p className="text-gray-700 mb-6 text-lg">
|
||||
Нужны землеустроительные или кадастровые работы?
|
||||
{isEnglish
|
||||
? 'Do you need land management or cadastral services?'
|
||||
: 'Нужны землеустроительные или кадастровые работы?'}
|
||||
</p>
|
||||
<a
|
||||
href="#/contacts"
|
||||
href={`#${isEnglish ? '/en/contacts' : '/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 ? 'Order a service' : 'Заказать услугу'}
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user