1- import { Github , Linkedin , Mail , Download , ArrowRight , MapPin , Package , ArrowUpRight } from "lucide-react" ;
1+ import { Github , Linkedin , Mail , Download , ChevronDown , ArrowRight , MapPin , Package } from "lucide-react" ;
22import { useEffect , useRef } from "react" ;
33
44const Hero = ( ) => {
@@ -25,176 +25,139 @@ const Hero = () => {
2525 < section
2626 ref = { sectionRef }
2727 id = "hero"
28- className = "relative min-h-screen flex flex-col justify-center px-6 pt-20 pb-16 overflow-hidden"
28+ className = "relative min-h-screen flex flex-col justify-center px-6 pt-24 pb-20 overflow-hidden"
2929 >
30- { /* Mesh + grid */ }
30+ { /* Animated mesh background */ }
3131 < div className = "mesh-gradient absolute inset-0 -z-10" />
32+ { /* Dot grid */ }
3233 < div className = "dot-grid absolute inset-0 -z-10" />
3334
3435 < div className = "max-w-6xl mx-auto w-full" >
35- { /* ── SPLIT LAYOUT ── */ }
36- < div className = "grid lg:grid-cols-[1fr_auto] gap-12 lg:gap-20 items-center" >
3736
38- { /* LEFT COLUMN */ }
39- < div >
40- { /* Status badge */ }
41- < div className = "reveal stagger-1 flex flex-wrap items-center gap-3 mb-10" >
42- < div className = "inline-flex items-center gap-2.5 px-4 py-2 rounded-full border border-primary/25 bg-primary/8" >
43- < span className = "w-2 h-2 rounded-full bg-emerald-400 animate-pulse" />
44- < span className = "text-xs font-mono font-medium text-emerald-400/90 tracking-wide" > Open to work</ span >
45- </ div >
46- < div className = "inline-flex items-center gap-1.5 text-xs text-muted-foreground/55 font-mono" >
47- < MapPin className = "w-3 h-3" />
48- Bengaluru, India
49- </ div >
37+ { /* Top row — status badge + social links */ }
38+ < div className = "reveal stagger-1 flex flex-col sm:flex-row items-start sm:items-center justify-between gap-4 mb-16" >
39+ < div className = "flex items-center gap-3 flex-wrap" >
40+ < div className = "inline-flex items-center gap-2.5 px-4 py-2 rounded-full border border-primary/20 bg-primary/5" >
41+ < span className = "w-2 h-2 rounded-full bg-primary animate-pulse" />
42+ < span className = "text-xs font-medium text-primary/90 tracking-wide font-mono" > Available for opportunities</ span >
5043 </ div >
51-
52- { /* BIG NAME */ }
53- < h1 className = "reveal stagger-2 font-heading font-extrabold leading-[0.88] tracking-tight mb-6" >
54- < span className = "block text-[clamp(3.5rem,9vw,7rem)] text-foreground" >
55- Saurabh
56- </ span >
57- < span className = "block text-[clamp(3.5rem,9vw,7rem)] text-gradient" >
58- Tiwari
59- </ span >
60- </ h1 >
61-
62- { /* Title tag */ }
63- < div className = "reveal stagger-3 mb-8" >
64- < span className = "inline-flex items-center gap-2 px-4 py-2 rounded-xl border border-border bg-surface/60 font-mono text-sm text-muted-foreground" >
65- < span className = "text-primary" > ~/</ span >
66- AI Engineer · Agentic Systems · RAG · LLM Integration
67- </ span >
44+ < div className = "inline-flex items-center gap-1.5 text-xs text-muted-foreground/60" >
45+ < MapPin className = "w-3 h-3" />
46+ Bengaluru, India · Remote-friendly
6847 </ div >
69-
70- { /* Bio */ }
71- < p className = "reveal stagger-4 max-w-xl text-muted-foreground text-sm sm:text-[15px] leading-relaxed mb-10" >
72- Building production-grade AI — independently shipped{ " " }
73- < span className = "text-foreground font-semibold" > 6 apps</ span > since graduation.
74- From a{ " " }
75- < a href = "https://www.npmjs.com/package/semantic-recall" target = "_blank" rel = "noopener noreferrer"
76- className = "text-primary/80 hover:text-primary underline underline-offset-2 transition-colors" >
77- published npm package
78- </ a > { " " }
79- to a{ " " }
80- < span className = "text-foreground font-semibold" > 15-tool agentic PWA</ span > { " " }
81- with live Swiggy MCP commerce.
82- </ p >
83-
84- { /* CTAs */ }
85- < div className = "reveal stagger-5 flex flex-wrap items-center gap-3 mb-12" >
86- < a
87- href = "#projects"
88- className = "group inline-flex items-center gap-3 px-7 py-3.5 rounded-xl bg-primary text-primary-foreground font-heading font-bold text-sm tracking-wide hover:shadow-xl hover:shadow-primary/25 transition-all duration-300 hover:-translate-y-0.5"
89- >
90- View my work
91- < ArrowRight className = "w-4 h-4 group-hover:translate-x-1 transition-transform" />
92- </ a >
93- < a
94- href = "https://drive.google.com/file/d/1XVWXvlxU5R8PVge5lEtQM27rHmyn9sS7/view?usp=drive_link"
95- target = "_blank" rel = "noopener noreferrer"
96- className = "inline-flex items-center gap-2 px-6 py-3.5 rounded-xl border border-border text-sm font-heading font-semibold text-muted-foreground hover:text-foreground hover:border-foreground/20 transition-all duration-300"
97- >
98- < Download className = "w-4 h-4" />
99- Resume
100- </ a >
48+ </ div >
49+ < div className = "flex items-center gap-2" >
50+ { [
51+ { icon : Github , href : "https://github.com/Skt329" , label : "GitHub" } ,
52+ { icon : Linkedin , href : "https://linkedin.com/in/saurabht0" , label : "LinkedIn" } ,
53+ { icon : Mail , href : "mailto:st108113@gmail.com" , label : "Email" } ,
54+ ] . map ( ( { icon : Icon , href, label } ) => (
10155 < a
102- href = "https://www.npmjs.com/package/semantic-recall"
103- target = "_blank" rel = "noopener noreferrer"
104- className = "inline-flex items-center gap-2 px-6 py-3.5 rounded-xl border border-primary/20 text-sm font-heading font-semibold text-primary/70 hover:text-primary hover:border-primary/40 hover:bg-primary/5 transition-all duration-300"
56+ key = { label }
57+ href = { href }
58+ target = { label !== "Email" ? "_blank" : undefined }
59+ rel = "noopener noreferrer"
60+ aria-label = { label }
61+ className = "w-10 h-10 flex items-center justify-center rounded-xl border border-border text-muted-foreground hover:text-primary hover:border-primary/30 hover:bg-primary/5 transition-all duration-300"
10562 >
106- < Package className = "w-4 h-4" />
107- npm
63+ < Icon className = "w-4 h-4" />
10864 </ a >
109- </ div >
110-
111- { /* Socials row */ }
112- < div className = "reveal stagger-6 flex items-center gap-3" >
113- { [
114- { icon : Github , href : "https://github.com/Skt329" , label : "GitHub" } ,
115- { icon : Linkedin , href : "https://linkedin.com/in/saurabht0" , label : "LinkedIn" } ,
116- { icon : Mail , href : "mailto:st108113@gmail.com" , label : "Email" } ,
117- ] . map ( ( { icon : Icon , href, label } ) => (
118- < a
119- key = { label }
120- href = { href }
121- target = { label !== "Email" ? "_blank" : undefined }
122- rel = "noopener noreferrer"
123- aria-label = { label }
124- className = "w-10 h-10 flex items-center justify-center rounded-xl border border-border text-muted-foreground hover:text-primary hover:border-primary/30 hover:bg-primary/5 transition-all duration-300"
125- >
126- < Icon className = "w-4 h-4" />
127- </ a >
128- ) ) }
129- < span className = "ml-2 text-xs text-muted-foreground/40 font-mono" > st108113@gmail.com</ span >
130- </ div >
65+ ) ) }
13166 </ div >
67+ </ div >
13268
133- { /* RIGHT COLUMN — Photo card */ }
134- < div className = "reveal-right stagger-2 hidden lg:flex flex-col items-center gap-5" >
135-
136- { /* Avatar */ }
137- < div className = "relative" >
138- { /* Glow ring */ }
139- < div className = "absolute -inset-1 rounded-3xl bg-gradient-to-br from-primary/40 via-secondary/20 to-accent/20 blur-xl opacity-60" />
140- < div className = "relative w-64 xl:w-72 aspect-square rounded-3xl overflow-hidden border border-primary/20" >
141- < img
142- src = "/avatar.jpg"
143- alt = "Saurabh Tiwari — AI Engineer"
144- className = "w-full h-full object-cover object-top"
145- loading = "eager"
146- fetchPriority = "high"
147- />
148- </ div >
149- { /* Floating badge — top right */ }
150- < div className = "absolute -top-3 -right-3 px-3 py-1.5 rounded-full bg-emerald-500/10 border border-emerald-500/30 text-emerald-400 text-[11px] font-mono font-medium" >
151- Available
152- </ div >
153- </ div >
154-
155- { /* Stat cards below photo */ }
156- < div className = "grid grid-cols-2 gap-2 w-full" >
157- { [
158- { value : "6+" , label : "Apps shipped" } ,
159- { value : "15+" , label : "AI tools" } ,
160- { value : "1" , label : "npm package" } ,
161- { value : "2024" , label : "MCA grad" } ,
162- ] . map ( ( stat ) => (
163- < div key = { stat . label } className = "skill-card rounded-xl p-3 text-center" >
164- < div className = "stat-number text-xl" > { stat . value } </ div >
165- < div className = "text-[10px] text-muted-foreground mt-0.5" > { stat . label } </ div >
166- </ div >
167- ) ) }
168- </ div >
169-
170- { /* Quick link to LinkedIn */ }
69+ { /* Main headline */ }
70+ < div className = "max-w-4xl" >
71+ < p className = "reveal stagger-1 text-sm font-mono font-medium text-primary/70 tracking-[0.25em] uppercase mb-5" >
72+ Saurabh Tiwari · AI Engineer
73+ </ p >
74+
75+ < h1 className = "font-heading font-extrabold tracking-tight text-foreground leading-[0.9] mb-8" >
76+ < span className = "reveal stagger-2 block text-5xl sm:text-6xl md:text-7xl lg:text-[5.2rem] xl:text-[6rem]" >
77+ Building AI that
78+ </ span >
79+ < span className = "reveal stagger-3 block text-5xl sm:text-6xl md:text-7xl lg:text-[5.2rem] xl:text-[6rem]" >
80+ < span className = "text-gradient" > actually ships.</ span >
81+ </ span >
82+ </ h1 >
83+
84+ < p className = "reveal stagger-4 max-w-2xl text-muted-foreground text-sm sm:text-base leading-relaxed mb-3" >
85+ AI Engineer building production-grade agentic systems, RAG pipelines, and MCP integrations.
86+ Independently shipped{ " " }
87+ < span className = "text-foreground font-medium" > 6 production apps</ span > since MCA graduation —
88+ including a published{ " " }
89+ < a href = "https://www.npmjs.com/package/semantic-recall" target = "_blank" rel = "noopener noreferrer" className = "text-primary/80 hover:text-primary underline underline-offset-2 transition-colors" >
90+ npm package (semantic-recall)
91+ </ a > { " " }
92+ and an agentic PWA with{ " " }
93+ < span className = "text-foreground font-medium" > 15+ orchestrated tools.</ span >
94+ </ p >
95+
96+ < p className = "reveal stagger-4 text-xs text-muted-foreground/45 mb-12 font-mono" >
97+ Stack:{ " " }
98+ < span className = "text-muted-foreground/70" > Next.js</ span > ·{ " " }
99+ < span className = "text-muted-foreground/70" > Python</ span > ·{ " " }
100+ < span className = "text-muted-foreground/70" > FastAPI</ span > ·{ " " }
101+ < span className = "text-muted-foreground/70" > Vercel AI SDK</ span > ·{ " " }
102+ < span className = "text-muted-foreground/70" > pgvector</ span > ·{ " " }
103+ < span className = "text-muted-foreground/70" > ChromaDB</ span > ·{ " " }
104+ < span className = "text-muted-foreground/70" > Tauri/Rust</ span >
105+ </ p >
106+
107+ { /* CTAs */ }
108+ < div className = "reveal stagger-5 flex flex-wrap items-center gap-3" >
171109 < a
172- href = "https://linkedin.com/in/saurabht0"
173- target = "_blank" rel = "noopener noreferrer"
174- className = "flex items-center gap-2 text-xs text-muted-foreground/50 hover:text-muted-foreground transition-colors font-mono"
110+ href = "#projects"
111+ className = "group inline-flex items-center gap-3 px-7 py-3.5 rounded-xl bg-primary text-primary-foreground font-heading font-semibold text-sm tracking-wide hover:shadow-xl hover:shadow-primary/20 transition-all duration-300 hover:-translate-y-0.5"
175112 >
176- < Linkedin className = "w-3 h-3" />
177- linkedin.com/in/saurabht0
178- < ArrowUpRight className = "w-3 h-3" />
113+ View my work
114+ < ArrowRight className = "w-4 h-4 group-hover:translate-x-1 transition-transform" />
115+ </ a >
116+ < a
117+ href = "https://drive.google.com/file/d/1XVWXvlxU5R8PVge5lEtQM27rHmyn9sS7/view?usp=drive_link"
118+ target = "_blank"
119+ rel = "noopener noreferrer"
120+ className = "group inline-flex items-center gap-2 px-6 py-3.5 rounded-xl border border-border text-sm font-heading font-semibold text-muted-foreground hover:text-foreground hover:border-foreground/20 transition-all duration-300"
121+ >
122+ < Download className = "w-4 h-4" />
123+ Resume
124+ </ a >
125+ < a
126+ href = "https://www.npmjs.com/package/semantic-recall"
127+ target = "_blank"
128+ rel = "noopener noreferrer"
129+ className = "group inline-flex items-center gap-2 px-6 py-3.5 rounded-xl border border-primary/20 text-sm font-heading font-semibold text-primary/70 hover:text-primary hover:border-primary/40 hover:bg-primary/5 transition-all duration-300"
130+ >
131+ < Package className = "w-4 h-4" />
132+ npm package
179133 </ a >
180134 </ div >
181-
182135 </ div >
183136
184- { /* Mobile photo (shows below text on mobile) */ }
185- < div className = "lg:hidden mt-12 flex justify-center reveal stagger-6" >
186- < div className = "relative w-48 aspect-square rounded-3xl overflow-hidden border border-primary/20" >
187- < div className = "absolute -inset-1 rounded-3xl bg-gradient-to-br from-primary/30 via-secondary/15 to-accent/15 blur-lg opacity-60" />
188- < img
189- src = "/avatar.jpg"
190- alt = "Saurabh Tiwari"
191- className = "relative w-full h-full object-cover object-top"
192- loading = "eager"
193- />
194- </ div >
137+ { /* Quick stat strip */ }
138+ < div className = "reveal stagger-6 mt-20 pt-10 border-t border-border grid grid-cols-2 sm:grid-cols-4 gap-8 max-w-2xl" >
139+ { [
140+ { value : "6+" , label : "Production apps" } ,
141+ { value : "15+" , label : "AI tools orchestrated" } ,
142+ { value : "1" , label : "Published npm package" } ,
143+ { value : "2024" , label : "MCA Graduate" } ,
144+ ] . map ( ( stat ) => (
145+ < div key = { stat . label } className = "text-left" >
146+ < div className = "stat-number text-2xl sm:text-3xl mb-0.5" > { stat . value } </ div >
147+ < div className = "text-xs text-muted-foreground" > { stat . label } </ div >
148+ </ div >
149+ ) ) }
195150 </ div >
196-
197151 </ div >
152+
153+ { /* Scroll indicator */ }
154+ < a
155+ href = "#projects"
156+ className = "absolute bottom-8 left-1/2 -translate-x-1/2 text-muted-foreground/30 hover:text-muted-foreground/60 transition-colors"
157+ aria-label = "Scroll to projects"
158+ >
159+ < ChevronDown className = "w-5 h-5 animate-scroll-bounce" />
160+ </ a >
198161 </ section >
199162 ) ;
200163} ;
0 commit comments