87efea3cc1
- 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>
29 lines
808 B
TypeScript
29 lines
808 B
TypeScript
import HeroSection from "@/components/sections/HeroSection";
|
|
import WorksSection from "@/components/sections/WorksSection";
|
|
import FeatureSection from "@/components/sections/FeatureSection";
|
|
import TimelineSection from "@/components/sections/AboutSection";
|
|
|
|
import { getAllProjects } from "@/lib/projects/get-projects";
|
|
|
|
type props = {
|
|
params: Promise<{
|
|
locale: string;
|
|
}>;
|
|
};
|
|
|
|
export default async function Home({ params }: props) {
|
|
const { locale } = await params;
|
|
const projects = getAllProjects().filter((item) => item.ready);
|
|
|
|
return (
|
|
<main className="bg-brand-beige text-brand-brown flex flex-col">
|
|
<HeroSection />
|
|
<div className="px-8 md:px-14 lg:px-20">
|
|
<WorksSection projects={projects} locale={locale} />
|
|
<FeatureSection />
|
|
<TimelineSection />
|
|
</div>
|
|
</main>
|
|
);
|
|
}
|