Files
geovektor/components/Process.tsx

70 lines
3.0 KiB
TypeScript
Raw Normal View History

2026-02-10 16:22:14 +05:00
import React from 'react';
import { STEPS } from '../constants';
import { useLocation } from 'react-router-dom';
2026-02-10 16:22:14 +05:00
const Process: React.FC = () => {
const location = useLocation();
const isEnglish = location.pathname.startsWith('/en');
const steps = STEPS.map((step) => ({
...step,
description: isEnglish
? (() => {
switch (step.title) {
case 'Звонок':
return 'We get in touch with you, clarify all the details and agree on the price.';
case 'ТЗ':
return 'We prepare a technical assignment for our specialists.';
case 'Договор':
return 'We prepare all required documents and sign the contract.';
case 'Работа':
return 'We carry out on-site work and test collected samples.';
case 'Отчет':
return 'We prepare a technical report and hand over the full documentation package.';
case 'Финал':
return 'We present the report and provide recommendations.';
default:
return step.description;
}
})()
: step.description,
}));
2026-02-10 16:22:14 +05:00
return (
<div className="py-20 bg-brand-light">
<div className="container mx-auto px-6">
<h2 className="text-4xl font-bold text-gray-900 mb-16 text-center">
{isEnglish ? 'How we work' : 'Как мы работаем'}
</h2>
2026-02-10 16:22:14 +05:00
<div className="relative max-w-6xl mx-auto">
{/* Линия связи между шагами (только на больших экранах) */}
<div className="hidden lg:block absolute top-9 left-0 right-0 h-1 bg-gradient-to-r from-brand-orange via-brand-orange/50 to-brand-orange" style={{ zIndex: 0 }} />
<div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-8 relative" style={{ zIndex: 1 }}>
{steps.map((step, idx) => (
2026-02-10 16:22:14 +05:00
<div key={idx} className="relative">
{/* Номер шага */}
<div className="absolute -top-4 -left-4 w-10 h-10 bg-brand-orange text-white rounded-full flex items-center justify-center font-bold text-lg shadow-lg z-10 border-4 border-brand-light">
{idx + 1}
</div>
{/* Карточка шага */}
<div className="bg-white rounded-2xl p-6 shadow-md hover:shadow-xl transition-all duration-300 hover:scale-105 h-full border-2 border-transparent hover:border-brand-orange">
<div className="w-14 h-14 rounded-full bg-brand-orange/20 flex items-center justify-center text-brand-orange mb-4">
<step.icon size={28} />
</div>
<p className="text-gray-700 leading-relaxed">
{step.description}
</p>
</div>
</div>
))}
</div>
</div>
</div>
</div>
);
};
export default Process;