66} from "react-icons/fa6" ;
77import { profile , stats } from "@/data/portfolio" ;
88
9- /* icon map for the stats strip */
109function statIcon ( key ) {
1110 const map = {
1211 rocket : FaRocket ,
@@ -111,7 +110,7 @@ export default function Hero() {
111110 { profile . resumeUrl && (
112111 < a href = { profile . resumeUrl } target = "_blank" rel = "noopener noreferrer" download = "Krishna_Andhe_CV.pdf" data-hover
113112 className = "px-6 py-3 rounded-full border border-accent text-accent font-semibold flex items-center gap-2 hover:bg-accent hover:text-bg transition" >
114- < FiDownload size = { 18 } /> Résumé
113+ < FiDownload size = { 18 } className = "animate-bob" /> Résumé
115114 </ a >
116115 ) }
117116 </ motion . div >
@@ -133,45 +132,45 @@ export default function Hero() {
133132 </ motion . div >
134133 </ div >
135134
136- { /* ---------- STATS STRIP (full width, bordered, dividers) ---------- */ }
135+ { /* ---------- STATS STRIP ----------
136+ MOBILE : 2-column grid (wraps, no horizontal scroll)
137+ TABLET : 3-column grid
138+ DESKTOP : single row with vertical dividers */ }
137139 < motion . div
138140 initial = { { opacity : 0 , y : 24 } }
139141 animate = { { opacity : 1 , y : 0 } }
140142 transition = { { duration : 0.6 , delay : 0.6 } }
141- className = "mt-14 glass rounded-2xl px-2 sm:px-4 py-5 sm:py-6"
143+ className = "mt-14 glass rounded-2xl px-3 sm:px-4 py-5 sm:py-6"
142144 >
143- < div className = "overflow-x-auto no-scrollbar" >
144- < ul className = "flex items-center min-w-max sm:min-w-0" >
145- { stats . map ( ( s , i ) => {
146- const Icon = statIcon ( s . icon ) ;
147- return (
148- < li
149- key = { s . label }
150- className = { `flex-1 flex items-center gap-3 sm:gap-4 px-4 sm:px-6 ${
151- i < stats . length - 1 ? "border-r border-line/70" : ""
152- } `}
145+ < ul className = "grid grid-cols-2 sm:grid-cols-3 lg:flex lg:items-center gap-y-5 gap-x-2" >
146+ { stats . map ( ( s , i ) => {
147+ const Icon = statIcon ( s . icon ) ;
148+ return (
149+ < li
150+ key = { s . label }
151+ className = { `flex items-center gap-3 px-2 sm:px-3 lg:px-6 lg:flex-1
152+ ${ i < stats . length - 1 ? "lg:border-r lg:border-line/70" : "" } ` }
153+ >
154+ < motion . span
155+ initial = { { scale : 0.6 , opacity : 0 } }
156+ animate = { { scale : 1 , opacity : 1 } }
157+ transition = { { delay : 0.7 + i * 0.08 , type : "spring" , stiffness : 220 , damping : 14 } }
158+ className = "shrink-0 text-accent"
153159 >
154- < motion . span
155- initial = { { scale : 0.6 , opacity : 0 } }
156- animate = { { scale : 1 , opacity : 1 } }
157- transition = { { delay : 0.7 + i * 0.08 , type : "spring" , stiffness : 220 , damping : 14 } }
158- className = "shrink-0 text-accent"
159- >
160- < Icon size = { 26 } />
161- </ motion . span >
162- < span className = "min-w-0" >
163- < span className = "block text-2xl sm:text-3xl font-extrabold leading-none" >
164- { s . value }
165- </ span >
166- < span className = "block text-[11px] sm:text-xs text-muted mt-1 whitespace-nowrap" >
167- { s . label }
168- </ span >
160+ < Icon size = { 24 } />
161+ </ motion . span >
162+ < span className = "min-w-0" >
163+ < span className = "block text-2xl sm:text-3xl font-extrabold leading-none" >
164+ { s . value }
169165 </ span >
170- </ li >
171- ) ;
172- } ) }
173- </ ul >
174- </ div >
166+ < span className = "block text-[11px] sm:text-xs text-muted mt-1 leading-snug" >
167+ { s . label }
168+ </ span >
169+ </ span >
170+ </ li >
171+ ) ;
172+ } ) }
173+ </ ul >
175174 </ motion . div >
176175 </ div >
177176 </ section >
0 commit comments