Portfolio / src /components /Hero.jsx
Abhisingh-18's picture
Mirror of github.com/Abhisingh18/Portfolio
162b974 verified
Raw
History Blame Contribute Delete
4.11 kB
import { Typewriter } from "react-simple-typewriter";
import { motion } from "framer-motion";
import { Link } from "react-scroll";
import { PROFILE } from "../constants";
const Hero = () => {
return (
<section id="hero" className="relative h-screen flex items-center justify-center overflow-hidden bg-[#030014]">
{/* Background Elements */}
<div className="absolute top-[-20%] left-[-10%] w-[500px] h-[500px] rounded-full bg-purple-600/20 blur-[120px] animate-blob" />
<div className="absolute bottom-[-20%] right-[-10%] w-[500px] h-[500px] rounded-full bg-cyan-600/20 blur-[120px] animate-blob animation-delay-2000" />
<div className="relative z-10 text-center px-6 max-w-4xl mx-auto">
<motion.div
initial={{ opacity: 0, y: 20 }}
animate={{ opacity: 1, y: 0 }}
transition={{ duration: 0.8 }}
>
<span className="inline-block py-1 px-3 rounded-full bg-white/5 border border-white/10 text-sm font-medium text-purple-400 mb-6 backdrop-blur-md">
👋 Welcome to my portfolio
</span>
<h1 className="text-5xl md:text-7xl font-bold font-heading mb-6 tracking-tight">
Hi, I'm <span className="text-gradient">{PROFILE.name}</span>
</h1>
<div className="text-2xl md:text-4xl font-light text-gray-300 mb-8 h-[60px]">
<span className="text-purple-400 font-semibold">
<Typewriter
words={PROFILE.roles}
loop={0}
cursor
cursorStyle="_"
typeSpeed={70}
deleteSpeed={50}
delaySpeed={1000}
/>
</span>
</div>
<p className="text-gray-400 max-w-2xl mx-auto text-lg mb-10 leading-relaxed">
{PROFILE.shortBio}
</p>
<div className="flex flex-col sm:flex-row items-center justify-center gap-4">
<Link
to="contact"
smooth={true}
offset={-80}
className="px-8 py-3 rounded-full bg-gradient-to-r from-purple-600 to-cyan-600 text-white font-semibold shadow-lg shadow-purple-500/25 hover:scale-105 transition-transform cursor-pointer"
>
Hire Me
</Link>
<a
href="/Abhi singh IISc Resume.pdf"
target="_blank"
className="px-8 py-3 rounded-full bg-white/5 border border-white/10 text-white font-medium backdrop-blur-md hover:bg-white/10 transition-colors cursor-pointer"
>
View Resume
</a>
</div>
</motion.div>
</div>
{/* Scroll Down Indicator */}
<motion.div
initial={{ opacity: 0 }}
animate={{ opacity: 1 }}
transition={{ delay: 1, duration: 1 }}
className="absolute bottom-10 left-1/2 -translate-x-1/2"
>
<div className="w-[30px] h-[50px] rounded-full border-2 border-white/20 flex justify-center p-2">
<motion.div
animate={{ y: [0, 12, 0] }}
transition={{ duration: 1.5, repeat: Infinity }}
className="w-1.5 h-1.5 rounded-full bg-white mb-1"
/>
</div>
</motion.div>
</section>
);
};
export default Hero;