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,8 +1,12 @@
|
||||
import React from 'react';
|
||||
import { Microscope, Activity, ArrowRight, CheckCircle2, Shield } from 'lucide-react';
|
||||
import { Link } from 'react-router-dom';
|
||||
import { Link, useLocation } from 'react-router-dom';
|
||||
|
||||
const Laboratories: React.FC = () => {
|
||||
const location = useLocation();
|
||||
const isEnglish = location.pathname.startsWith('/en');
|
||||
const prefix = isEnglish ? '/en' : '';
|
||||
|
||||
return (
|
||||
<section className="py-20 bg-gradient-to-b from-white to-gray-50">
|
||||
<div className="container mx-auto px-6">
|
||||
@@ -11,11 +15,12 @@ const Laboratories: React.FC = () => {
|
||||
<Microscope className="text-brand-orange" size={32} />
|
||||
</div>
|
||||
<h2 className="text-4xl md:text-5xl font-bold text-gray-900 mb-4">
|
||||
Наши лаборатории
|
||||
{isEnglish ? 'Our laboratories' : 'Наши лаборатории'}
|
||||
</h2>
|
||||
<p className="text-gray-600 text-lg max-w-2xl mx-auto">
|
||||
Современное оборудование и квалифицированные специалисты для проведения
|
||||
комплексных исследований
|
||||
{isEnglish
|
||||
? 'State-of-the-art equipment and qualified specialists for comprehensive testing and research.'
|
||||
: 'Современное оборудование и квалифицированные специалисты для проведения комплексных исследований'}
|
||||
</p>
|
||||
</div>
|
||||
|
||||
@@ -26,7 +31,7 @@ const Laboratories: React.FC = () => {
|
||||
<div className="relative h-64 overflow-hidden">
|
||||
<img
|
||||
src="/media/images/services/soil-survey.png"
|
||||
alt="Грунтовая лаборатория"
|
||||
alt={isEnglish ? 'Soil testing laboratory' : 'Грунтовая лаборатория'}
|
||||
className="w-full h-full object-cover group-hover:scale-110 transition-transform duration-500"
|
||||
loading="lazy"
|
||||
/>
|
||||
@@ -42,10 +47,12 @@ const Laboratories: React.FC = () => {
|
||||
{/* Заголовок на изображении */}
|
||||
<div className="absolute bottom-6 left-6 right-6">
|
||||
<h3 className="text-2xl font-bold text-white mb-2">
|
||||
Грунтовая лаборатория
|
||||
{isEnglish ? 'Soil testing laboratory' : 'Грунтовая лаборатория'}
|
||||
</h3>
|
||||
<p className="text-white/90 text-sm">
|
||||
Исследования физических, механических и химических свойств
|
||||
{isEnglish
|
||||
? 'Testing of physical, mechanical and chemical soil properties.'
|
||||
: 'Исследования физических, механических и химических свойств'}
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
@@ -56,34 +63,46 @@ const Laboratories: React.FC = () => {
|
||||
<div className="flex items-start gap-3">
|
||||
<CheckCircle2 className="text-brand-orange flex-shrink-0 mt-1" size={20} />
|
||||
<div>
|
||||
<p className="text-gray-700 font-medium">Физические свойства грунтов</p>
|
||||
<p className="text-sm text-gray-500">Влажность, плотность, гранулометрический состав</p>
|
||||
<p className="text-gray-700 font-medium">
|
||||
{isEnglish ? 'Physical properties of soils' : 'Физические свойства грунтов'}
|
||||
</p>
|
||||
<p className="text-sm text-gray-500">
|
||||
{isEnglish ? 'Moisture content, density, grain-size distribution.' : 'Влажность, плотность, гранулометрический состав'}
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div className="flex items-start gap-3">
|
||||
<CheckCircle2 className="text-brand-orange flex-shrink-0 mt-1" size={20} />
|
||||
<div>
|
||||
<p className="text-gray-700 font-medium">Механические характеристики</p>
|
||||
<p className="text-sm text-gray-500">Прочность, деформируемость, сжимаемость</p>
|
||||
<p className="text-gray-700 font-medium">
|
||||
{isEnglish ? 'Mechanical characteristics' : 'Механические характеристики'}
|
||||
</p>
|
||||
<p className="text-sm text-gray-500">
|
||||
{isEnglish ? 'Strength, deformability, compressibility.' : 'Прочность, деформируемость, сжимаемость'}
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div className="flex items-start gap-3">
|
||||
<CheckCircle2 className="text-brand-orange flex-shrink-0 mt-1" size={20} />
|
||||
<div>
|
||||
<p className="text-gray-700 font-medium">Химический анализ</p>
|
||||
<p className="text-sm text-gray-500">Агрессивность грунтов, анализ воды</p>
|
||||
<p className="text-gray-700 font-medium">
|
||||
{isEnglish ? 'Chemical analysis' : 'Химический анализ'}
|
||||
</p>
|
||||
<p className="text-sm text-gray-500">
|
||||
{isEnglish ? 'Soil aggressiveness, water analysis.' : 'Агрессивность грунтов, анализ воды'}
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{/* Кнопка */}
|
||||
<Link
|
||||
to="/laboratories/soil"
|
||||
to={`${prefix}/laboratories/soil`}
|
||||
className="flex items-center justify-center gap-2 w-full py-4 bg-gradient-to-r from-brand-orange to-orange-600 text-white font-bold rounded-xl hover:from-orange-600 hover:to-brand-orange transition-all duration-300 group/btn"
|
||||
>
|
||||
Подробнее о лаборатории
|
||||
{isEnglish ? 'More about the laboratory' : 'Подробнее о лаборатории'}
|
||||
<ArrowRight className="group-hover/btn:translate-x-1 transition-transform" size={20} />
|
||||
</Link>
|
||||
</div>
|
||||
@@ -95,7 +114,7 @@ const Laboratories: React.FC = () => {
|
||||
<div className="relative h-64 overflow-hidden">
|
||||
<img
|
||||
src="/media/images/services/engineering-surveys.png"
|
||||
alt="Радиационная лаборатория"
|
||||
alt={isEnglish ? 'Radiation laboratory' : 'Радиационная лаборатория'}
|
||||
className="w-full h-full object-cover group-hover:scale-110 transition-transform duration-500"
|
||||
loading="lazy"
|
||||
/>
|
||||
@@ -111,10 +130,12 @@ const Laboratories: React.FC = () => {
|
||||
{/* Заголовок на изображении */}
|
||||
<div className="absolute bottom-6 left-6 right-6">
|
||||
<h3 className="text-2xl font-bold text-white mb-2">
|
||||
Радиационная лаборатория
|
||||
{isEnglish ? 'Radiation laboratory' : 'Радиационная лаборатория'}
|
||||
</h3>
|
||||
<p className="text-white/90 text-sm">
|
||||
Профессиональные исследования радиационной безопасности
|
||||
{isEnglish
|
||||
? 'Professional radiation safety and exposure assessments.'
|
||||
: 'Профессиональные исследования радиационной безопасности'}
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
@@ -125,23 +146,33 @@ const Laboratories: React.FC = () => {
|
||||
<div className="flex items-start gap-3">
|
||||
<Shield className="text-brand-orange flex-shrink-0 mt-1" size={20} />
|
||||
<div>
|
||||
<p className="text-gray-700 font-medium">Радиационный контроль</p>
|
||||
<p className="text-sm text-gray-500">Измерение уровня радона и гамма-излучения</p>
|
||||
<p className="text-gray-700 font-medium">
|
||||
{isEnglish ? 'Radiation monitoring' : 'Радиационный контроль'}
|
||||
</p>
|
||||
<p className="text-sm text-gray-500">
|
||||
{isEnglish ? 'Measurement of radon and gamma radiation levels.' : 'Измерение уровня радона и гамма-излучения'}
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div className="flex items-start gap-3">
|
||||
<Shield className="text-brand-orange flex-shrink-0 mt-1" size={20} />
|
||||
<div>
|
||||
<p className="text-gray-700 font-medium">Аккредитованная лаборатория</p>
|
||||
<p className="text-sm text-gray-500">Техническая компетентность и независимость</p>
|
||||
<p className="text-gray-700 font-medium">
|
||||
{isEnglish ? 'Accredited laboratory' : 'Аккредитованная лаборатория'}
|
||||
</p>
|
||||
<p className="text-sm text-gray-500">
|
||||
{isEnglish ? 'Technical competence and independence.' : 'Техническая компетентность и независимость'}
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div className="flex items-start gap-3">
|
||||
<Shield className="text-brand-orange flex-shrink-0 mt-1" size={20} />
|
||||
<div>
|
||||
<p className="text-gray-700 font-medium">Современное оборудование</p>
|
||||
<p className="text-gray-700 font-medium">
|
||||
{isEnglish ? 'Modern equipment' : 'Современное оборудование'}
|
||||
</p>
|
||||
<p className="text-sm text-gray-500">КАМЕРА-01, ДКГ-02У, ДРБП-03</p>
|
||||
</div>
|
||||
</div>
|
||||
@@ -149,10 +180,10 @@ const Laboratories: React.FC = () => {
|
||||
|
||||
{/* Кнопка */}
|
||||
<Link
|
||||
to="/laboratories/radiation"
|
||||
to={`${prefix}/laboratories/radiation`}
|
||||
className="flex items-center justify-center gap-2 w-full py-4 bg-gradient-to-r from-brand-orange to-orange-600 text-white font-bold rounded-xl hover:from-orange-600 hover:to-brand-orange transition-all duration-300 group/btn"
|
||||
>
|
||||
Подробнее о лаборатории
|
||||
{isEnglish ? 'More about the laboratory' : 'Подробнее о лаборатории'}
|
||||
<ArrowRight className="group-hover/btn:translate-x-1 transition-transform" size={20} />
|
||||
</Link>
|
||||
</div>
|
||||
@@ -163,16 +194,20 @@ const Laboratories: React.FC = () => {
|
||||
<div className="mt-16 max-w-4xl mx-auto">
|
||||
<div className="bg-gradient-to-br from-gray-900 to-gray-800 text-white rounded-2xl p-8 md:p-12 text-center">
|
||||
<h3 className="text-2xl md:text-3xl font-bold mb-4">
|
||||
Нужна консультация по лабораторным исследованиям?
|
||||
{isEnglish
|
||||
? 'Need a consultation on laboratory testing?'
|
||||
: 'Нужна консультация по лабораторным исследованиям?'}
|
||||
</h3>
|
||||
<p className="text-gray-300 mb-6 max-w-2xl mx-auto">
|
||||
Наши специалисты помогут подобрать оптимальный комплекс исследований для вашего проекта
|
||||
{isEnglish
|
||||
? 'Our specialists will help you select the optimal set of tests for your project.'
|
||||
: 'Наши специалисты помогут подобрать оптимальный комплекс исследований для вашего проекта'}
|
||||
</p>
|
||||
<Link
|
||||
to="/contacts"
|
||||
to={`${prefix}/contacts`}
|
||||
className="inline-flex items-center gap-2 px-8 py-4 bg-brand-orange text-white font-bold rounded-xl hover:bg-orange-600 transition-colors"
|
||||
>
|
||||
Связаться с нами
|
||||
{isEnglish ? 'Contact us' : 'Связаться с нами'}
|
||||
<ArrowRight size={20} />
|
||||
</Link>
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user