Files
matheoguilbert.fr/components/ui/FeatureColumn.tsx
T
mguilbert 87efea3cc1 redesign(homepage): elegant editorial redesign with scroll animations
- HeroSection: full-viewport split layout with staggered entrance animations,
  editorial typography, tech stack tags, animated scroll indicator
- WorksSection: refined header with section label, scroll-reveal on entry
- ProjectCard: per-card IntersectionObserver reveal, numbered projects,
  enhanced hover states (scale + brightness), improved CTA
- FeatureSection: card grid with border/glass treatment and staggered reveals
- AboutSection: animated timeline progress line, scroll-triggered card entrances
- FeatureColumn: icon container with hover treatment
- globals.css: fadeUp/lineGrow/arrowBounce keyframes, .reveal utility,
  prefers-reduced-motion support, brand-accent color token
- lib/useReveal.ts: IntersectionObserver hook for scroll reveals

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-17 08:39:54 +02:00

34 lines
1.1 KiB
TypeScript

type props = {
imagePath: string;
title: string;
text: string;
delay?: number;
};
export const FeatureColumn = ({ imagePath, title, text, delay = 0 }: props) => {
return (
<div
className="reveal flex flex-col items-center justify-start max-w-[320px] gap-6"
style={{ transitionDelay: `${delay}ms` }}
>
{/* Icon container */}
<div className="w-20 h-20 rounded-2xl bg-brand-brown/6 flex items-center justify-center group-hover:bg-brand-brown/10 transition-colors duration-300">
<img
className="w-10 h-10"
src={imagePath}
alt=""
aria-hidden="true"
/>
</div>
<div className="font-serif text-brand-brown text-center leading-[1.1] text-[clamp(1.5rem,2.5vw,1.75rem)]">
{title}
</div>
<div className="font-sans text-sm text-center text-brand-brown/65 leading-relaxed">
{text}
</div>
</div>
);
};