2026-10-02 02:09:03 +00:00
|
|
|
|
import FadeIn from '../components/FadeIn';
|
|
|
|
|
|
import Magnet from '../components/Magnet';
|
|
|
|
|
|
import ContactButton from '../components/ContactButton';
|
2026-10-02 03:05:18 +00:00
|
|
|
|
import { images, profile } from '../data/content';
|
2026-10-02 02:09:03 +00:00
|
|
|
|
|
|
|
|
|
|
const links = [
|
|
|
|
|
|
{ label: 'About', href: '#about' },
|
2026-10-02 03:05:18 +00:00
|
|
|
|
{ label: 'Skills', href: '#skills' },
|
2026-10-02 02:09:03 +00:00
|
|
|
|
{ label: 'Projects', href: '#projects' },
|
2026-10-02 03:05:18 +00:00
|
|
|
|
{ label: 'Contact', href: '#contact' },
|
2026-10-02 02:09:03 +00:00
|
|
|
|
];
|
|
|
|
|
|
|
|
|
|
|
|
export default function HeroSection() {
|
|
|
|
|
|
return (
|
2026-10-02 03:05:18 +00:00
|
|
|
|
<section className="relative flex h-screen min-h-[600px] flex-col" style={{ overflowX: 'clip' }}>
|
2026-10-02 02:09:03 +00:00
|
|
|
|
<FadeIn delay={0} y={-20}>
|
2026-10-02 03:05:18 +00:00
|
|
|
|
<nav className="flex justify-between px-6 pt-6 md:px-10 md:pt-8" aria-label="Section navigation">
|
2026-10-02 02:09:03 +00:00
|
|
|
|
{links.map((l) => (
|
|
|
|
|
|
<a
|
|
|
|
|
|
key={l.label}
|
|
|
|
|
|
href={l.href}
|
|
|
|
|
|
className="text-sm font-medium uppercase tracking-wider text-[#D7E2EA] transition-opacity duration-200 hover:opacity-70 md:text-lg lg:text-[1.4rem]"
|
|
|
|
|
|
>
|
|
|
|
|
|
{l.label}
|
|
|
|
|
|
</a>
|
|
|
|
|
|
))}
|
|
|
|
|
|
</nav>
|
|
|
|
|
|
</FadeIn>
|
|
|
|
|
|
|
|
|
|
|
|
<div className="overflow-hidden">
|
|
|
|
|
|
<FadeIn delay={0.15} y={40}>
|
2026-10-02 03:05:18 +00:00
|
|
|
|
<h1 className="hero-heading mt-6 w-full whitespace-nowrap text-center text-[16.5vw] font-black uppercase leading-none tracking-tight sm:mt-4 md:-mt-5">
|
|
|
|
|
|
Hi, i’m {profile.firstName}
|
2026-10-02 02:09:03 +00:00
|
|
|
|
</h1>
|
|
|
|
|
|
</FadeIn>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
2026-10-02 03:05:18 +00:00
|
|
|
|
<div className="absolute left-1/2 top-1/2 z-10 w-[min(280px,52vh)] -translate-x-1/2 -translate-y-1/2 sm:bottom-0 sm:top-auto sm:w-[min(360px,56vh)] sm:translate-y-0 md:w-[min(440px,58vh)] lg:w-[min(520px,58vh)]">
|
2026-10-02 02:09:03 +00:00
|
|
|
|
<FadeIn delay={0.6} y={30}>
|
|
|
|
|
|
<Magnet padding={150} strength={3} activeTransition="transform 0.3s ease-out" inactiveTransition="transform 0.6s ease-in-out" className="!block">
|
2026-10-02 03:05:18 +00:00
|
|
|
|
<img
|
|
|
|
|
|
src={images.portrait}
|
|
|
|
|
|
alt="Keith Rana at his work desk"
|
|
|
|
|
|
className="aspect-square w-full border border-[#D7E2EA]/30 object-cover object-top"
|
|
|
|
|
|
style={{ borderRadius: '999px 999px 32px 32px' }}
|
|
|
|
|
|
/>
|
2026-10-02 02:09:03 +00:00
|
|
|
|
</Magnet>
|
|
|
|
|
|
</FadeIn>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
2026-10-02 03:05:18 +00:00
|
|
|
|
<div className="mt-auto flex items-end justify-between gap-4 px-6 pb-7 sm:pb-8 md:px-10 md:pb-10">
|
2026-10-02 02:09:03 +00:00
|
|
|
|
<FadeIn delay={0.35} y={20}>
|
|
|
|
|
|
<p
|
|
|
|
|
|
className="max-w-[160px] font-light uppercase leading-snug tracking-wide text-[#D7E2EA] sm:max-w-[220px] md:max-w-[260px]"
|
2026-10-02 03:05:18 +00:00
|
|
|
|
style={{ fontSize: 'clamp(0.7rem, 1.4vw, 1.5rem)' }}
|
2026-10-02 02:09:03 +00:00
|
|
|
|
>
|
2026-10-02 03:05:18 +00:00
|
|
|
|
{profile.tagline}
|
2026-10-02 02:09:03 +00:00
|
|
|
|
</p>
|
|
|
|
|
|
</FadeIn>
|
|
|
|
|
|
<FadeIn delay={0.5} y={20} className="relative z-20">
|
|
|
|
|
|
<ContactButton />
|
|
|
|
|
|
</FadeIn>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
</section>
|
|
|
|
|
|
);
|
|
|
|
|
|
}
|