Files
my-protfolio/src/components/RiverJourney.tsx

59 lines
1.8 KiB
TypeScript

'use client';
import {
Code2,
GraduationCap,
Palette,
PanelsTopLeft,
Rocket,
} from 'lucide-react';
import { AboutRiverScene } from './scenes/AboutRiverScene';
import { messagesByLocale, type Locale } from '@/i18n/content';
import styles from './RiverJourney.module.css';
const stepIcons = [Palette, PanelsTopLeft, GraduationCap, Code2, Rocket];
export const RiverJourney = ({ locale }: { locale: Locale }) => {
const copy = messagesByLocale[locale].about;
return (
<section id="about" className={styles.journeySection} aria-labelledby="about-title">
<AboutRiverScene />
{/* Intro Header & Description on the Left */}
<div className={styles.introBlock} data-reveal="scale">
<span className={styles.eyebrow}>{copy.eyebrow}</span>
<h2
id="about-title"
className={`${styles.heading} ${locale === 'fa' ? 'font-display' : ''}`}
>
{copy.title}
</h2>
<div className={styles.underlineBar} />
<p className={styles.description}>{copy.description}</p>
</div>
<ol
className={styles.stepsList}
aria-label={copy.journeyLabel}
data-reveal-group
>
{copy.steps.map((step, index) => {
const StepIcon = stepIcons[index];
return (
<li key={step.title} className={styles.stepCard} data-reveal="soft">
<span className={styles.stepIcon} aria-hidden="true">
<StepIcon size={20} strokeWidth={1.9} />
</span>
<div className={styles.stepContent}>
<h3 className={styles.stepTitle}>{step.title}</h3>
<p className={styles.stepDesc}>{step.description}</p>
</div>
</li>
);
})}
</ol>
</section>
);
};