Files
portfolio/components/Presentation.jsx
T
2026-01-22 18:22:27 +01:00

162 lines
5.3 KiB
React

"use client";
import React from "react";
import Image from "next/image";
import { LinkedinIcon, GithubIcon } from "lucide-react";
import styles from "./styles/Presentation.module.css";
const Presentation = () => {
return (
<section
id="home"
className="flex flex-col md:flex-row items-center justify-center min-h-screen py-16 px-4 md:px-8 bg-gray-50 overflow-hidden"
>
{/* Right Image Column (appears first on small screens due to flex-col order) */}
<div
className={`${styles.animatedImage} relative flex-shrink-0 overflow-hidden shadow-xl mt-16 md:mt-0 md:ml-12 order-1 md:order-2`}
style={{
backgroundImage: "url(/assets/img/header_pdp.jpg)",
}}
></div>
{/* Left Content Column (appears second on small screens, first on medium screens) */}
<div className="flex flex-col items-center md:items-start text-center md:text-left md:w-1/2 p-4 md:p-8 space-y-6 order-2 md:order-1">
{/* Title */}
<div className="max-w-xl">
<h1
className={`${styles.title} text-4xl sm:text-5xl lg:text-6xl font-extrabold text-gray-900 leading-tight`}
>
AI - Robotic Engineer & Data Scientist
<br /> Student{" "}
<span role="img" aria-label="mobile phone">
</span>
</h1>
</div>
{/* Description */}
<div className={`${styles.description} max-w-md text-lg text-gray-700`}>
<p>
Hello, I'm Valentin Massonniere, an enthusiastic{" "}
<br className="hidden sm:inline" />
AI - Robotic Engineer & Data Scientist at IceBergData Lab from
France{" "}
<span role="img" aria-label="pin location">
🇫🇷
</span>
</p>
</div>
{/* Social Links */}
<div className="flex space-x-6 text-gray-600">
<a
href="https://www.linkedin.com/in/valentin-massonniere/"
target="_blank"
rel="noopener noreferrer"
aria-label="LinkedIn profile"
className="hover:text-blue-600 transition-colors duration-300"
>
<LinkedinIcon className="h-8 w-8" />
</a>
<a
href="https://github.com/TheValll"
target="_blank"
rel="noopener noreferrer"
aria-label="GitHub profile"
className="hover:text-blue-600 transition-colors duration-300"
>
<GithubIcon className="h-8 w-8" />
</a>
</div>
{/* Tech Stack */}
<div className="flex flex-col md:flex-row items-center md:items-center space-y-2 md:space-y-0 md:space-x-4 pt-4 w-full">
<h3 className="text-xl font-semibold text-gray-800 mb-2 md:mb-0 whitespace-nowrap">
Tech Stack |
</h3>
<div className="grid grid-cols-2 gap-4 md:flex md:flex-row md:gap-4">
<Image
src="/assets/icon/CPP.svg"
alt="Logo C++"
width={40}
height={40}
className={`object-contain ${styles.techIcon}`}
/>
<Image
src="/assets/icon/Python.svg"
alt="Logo Python"
width={40}
height={40}
className={`object-contain ${styles.techIcon}`}
/>
<Image
src="/assets/icon/ROS-Dark.svg"
alt="Logo GCP"
width={40}
height={40}
className={`object-contain ${styles.techIcon}`}
/>
<Image
src="/assets/icon/Arduino.svg"
alt="Logo GCP"
width={40}
height={40}
className={`object-contain ${styles.techIcon}`}
/>
<Image
src="/assets/icon/Docker.svg"
alt="Logo Docker"
width={40}
height={40}
className={`object-contain ${styles.techIcon}`}
/>
<Image
src="/assets/icon/RaspberryPi.svg"
alt="Logo RaspberryPi"
width={40}
height={40}
className={`object-contain ${styles.techIcon}`}
/>
</div>
</div>
</div>
{/* Scroll Down Indicator */}
<a
href="#aboutScroll"
aria-label="Scroll down"
className="absolute bottom-8 animate-bounce hidden md:flex items-center justify-center"
onClick={(e) => {
e.preventDefault();
const element = document.querySelector("#aboutScroll");
if (element) {
window.scrollTo({
top: element.offsetTop - 150,
behavior: "smooth",
});
}
}}
>
<div className="w-8 h-8 border-2 border-gray-600 rounded-full flex items-center justify-center">
<svg
className="w-4 h-4 text-gray-600"
fill="none"
stroke="currentColor"
viewBox="0 0 24 24"
xmlns="http://www.w3.org/2000/svg"
>
<path
strokeLinecap="round"
strokeLinejoin="round"
strokeWidth="2"
d="M19 14l-7 7m0 0l-7-7m7 7V3"
></path>
</svg>
</div>
</a>
</section>
);
};
export default Presentation;