Antaram's picture
Upload 26 files
35a92dd verified
import React, { useEffect, useState } from 'react';
interface WorkSectionProps {
onClose: () => void;
}
export const WorkSection: React.FC<WorkSectionProps> = ({ onClose }) => {
const [isLoaded, setIsLoaded] = useState(false);
useEffect(() => {
// Trigger animation on mount
const t = setTimeout(() => setIsLoaded(true), 100);
return () => clearTimeout(t);
}, []);
const projects = [
{
id: "01",
title: "Neural Lattice",
description: "A self-optimizing infrastructure layer for distributed inference. Reduces latency by 40% via predictive node hopping.",
tech: "Python, Rust, CUDA",
year: "2024"
},
{
id: "02",
title: "Echo Protocol",
description: "Generative audio synthesis pipeline capable of real-time voice modulation with sub-20ms latency.",
tech: "C++, WebAssembly",
year: "2023"
},
{
id: "03",
title: "Vantablack UI",
description: "An experimental interface design system focusing on light manipulation and depth-based hierarchy.",
tech: "WebGL, React Three Fiber",
year: "2025"
}
];
return (
<div className={`fixed inset-0 z-50 flex flex-col bg-black/80 backdrop-blur-md overflow-hidden transition-opacity duration-700 ${isLoaded ? 'opacity-100' : 'opacity-0'}`}>
{/* Top Bar / Navigation */}
<div className="w-full max-w-[1400px] mx-auto px-6 py-6 md:px-12 flex justify-between items-center z-10">
<div className="flex items-center gap-4">
<span className="text-red-500 font-mono text-xs animate-pulse"></span>
<span className="text-white/80 font-mono text-xs uppercase tracking-widest">Work Index_v2.0</span>
</div>
<button
onClick={onClose}
className="group flex items-center gap-3 text-white/50 hover:text-white transition-colors"
>
<span className="text-[10px] uppercase tracking-widest group-hover:tracking-[0.2em] transition-all duration-300">Close Terminal</span>
<svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="1.5">
<line x1="18" y1="6" x2="6" y2="18"></line>
<line x1="6" y1="6" x2="18" y2="18"></line>
</svg>
</button>
</div>
{/* Main Content Area - Scrollable */}
<div className="flex-1 w-full overflow-y-auto overflow-x-hidden scroll-smooth custom-scrollbar">
<div className="w-full max-w-[1400px] mx-auto px-6 md:px-12 pt-12 pb-32">
{/* Header */}
<div className={`mb-24 transition-all duration-1000 delay-100 ease-out ${isLoaded ? 'opacity-100 translate-y-0' : 'opacity-0 translate-y-12'}`}>
<h1 className="text-6xl md:text-8xl lg:text-9xl font-light text-white tracking-tight leading-none">
Selected <br />
<span className="text-white/20 font-serif italic">Works.</span>
</h1>
</div>
{/* Project List */}
<div className="border-t border-white/10">
{projects.map((project, index) => (
<div
key={project.id}
className={`group border-b border-white/10 py-12 md:py-16 grid grid-cols-1 md:grid-cols-12 gap-8 items-start transition-all duration-700 ease-out hover:bg-white/5 px-4 -mx-4`}
style={{ transitionDelay: `${200 + index * 100}ms` }}
>
<div className="md:col-span-2">
<span className="font-mono text-xs text-red-500/80">/{project.id}</span>
</div>
<div className="md:col-span-4">
<h2 className="text-3xl md:text-4xl font-light text-white group-hover:text-red-500 transition-colors duration-300">
{project.title}
</h2>
</div>
<div className="md:col-span-4">
<p className="text-white/60 text-lg font-light leading-relaxed">
{project.description}
</p>
<div className="mt-4 flex gap-2">
{project.tech.split(',').map(t => (
<span key={t} className="px-2 py-1 border border-white/10 rounded-full text-[10px] uppercase tracking-wider text-white/40">
{t}
</span>
))}
</div>
</div>
<div className="md:col-span-2 text-right md:text-right">
<span className="font-mono text-xs text-white/30">{project.year}</span>
</div>
</div>
))}
</div>
{/* Footer / Humor */}
<div className={`mt-32 flex flex-col md:flex-row justify-between items-end gap-8 transition-all duration-1000 delay-500 ${isLoaded ? 'opacity-100' : 'opacity-0'}`}>
<div className="max-w-md">
<div className="flex items-center gap-2 mb-4">
<span className="w-1.5 h-1.5 bg-red-500 rounded-full"></span>
<span className="text-[10px] font-mono uppercase text-white/40 tracking-widest">Internal Memo</span>
</div>
<p className="text-white/60 text-sm font-mono leading-relaxed border-l-2 border-white/10 pl-4">
"We train models, but we don't skip leg day. Our code is heavy, but our spirits are light. Unless the server crashes. Then it's panic."
</p>
</div>
<div className="text-right">
<p className="text-[10px] font-mono text-white/20 uppercase tracking-widest">End of Stream</p>
</div>
</div>
</div>
</div>
</div>
);
};