@@ -90,6 +90,9 @@ export function StoryOfAdventureDetail() {
9090 return ;
9191 }
9292
93+ // Scroll to top when story loads
94+ window . scrollTo ( { top : 0 , behavior : 'instant' } ) ;
95+
9396 // Update meta tags immediately for better crawler support
9497 const baseUrl = window . location . origin ;
9598 const storyImage = selectedStory . content . images && selectedStory . content . images . length > 0
@@ -132,7 +135,7 @@ export function StoryOfAdventureDetail() {
132135 updateMeta ( 'twitter:description' , selectedStory . excerpt , false ) ;
133136 updateMeta ( 'twitter:image' , imageUrl , false ) ;
134137 updateMeta ( 'description' , selectedStory . excerpt , false ) ;
135- } , [ selectedStory , navigate ] ) ;
138+ } , [ selectedStory , navigate , storyId ] ) ;
136139
137140 // Also use the hook for React-based updates
138141 useMetaTags ( {
@@ -334,8 +337,91 @@ export function StoryOfAdventureDetail() {
334337 < Comments storyId = { storyId || '' } />
335338 </ motion . article >
336339
340+ { /* Other Stories Section */ }
341+ { stories . filter ( story => story . id !== storyId ) . length > 0 && (
342+ < section className = "py-16 lg:py-24 mt-16 border-t" >
343+ < div className = "max-w-7xl mx-auto px-6 lg:px-12" >
344+ < motion . div
345+ initial = { { opacity : 0 , y : 30 } }
346+ whileInView = { { opacity : 1 , y : 0 } }
347+ viewport = { { once : true } }
348+ transition = { { duration : 0.8 } }
349+ className = "mb-12"
350+ >
351+ < h2 className = "text-3xl lg:text-4xl tracking-tight mb-4" >
352+ Other Stories of Adventure
353+ </ h2 >
354+ < p className = "text-lg text-muted-foreground" >
355+ Explore more adventures and stories
356+ </ p >
357+ </ motion . div >
358+ < div className = "grid md:grid-cols-2 lg:grid-cols-3 gap-8" >
359+ { stories
360+ . filter ( story => story . id !== storyId )
361+ . slice ( 0 , 3 )
362+ . map ( ( story , index ) => {
363+ const storyImages = story . content . images || [ ] ;
364+ const firstImage = storyImages . length > 0
365+ ? ( typeof storyImages [ 0 ] === 'string' ? storyImages [ 0 ] : storyImages [ 0 ] . url )
366+ : null ;
367+ const thumbnail = firstImage || story . thumbnail ;
368+
369+ return (
370+ < Link
371+ key = { story . id }
372+ to = { `/storiesofadventure/${ story . id } ` }
373+ className = "group"
374+ >
375+ < motion . div
376+ initial = { { opacity : 0 , y : 30 } }
377+ whileInView = { { opacity : 1 , y : 0 } }
378+ viewport = { { once : true } }
379+ transition = { { duration : 0.6 , delay : index * 0.1 } }
380+ className = "cursor-pointer"
381+ >
382+ < div className = "surface-elevated rounded-2xl overflow-hidden transition-all duration-300 hover:shadow-xl hover:scale-[1.02]" >
383+ { /* Thumbnail */ }
384+ < div className = "relative aspect-video bg-gradient-to-br from-gray-100 to-gray-200" >
385+ < div className = "absolute inset-0 overflow-hidden" >
386+ < img
387+ src = { getImageUrl ( thumbnail ) }
388+ alt = { `${ story . title } - Story thumbnail` }
389+ className = "relative z-0 w-full h-full object-cover group-hover:scale-110 transition-transform duration-500"
390+ />
391+ < div className = "absolute inset-0 z-10 bg-gradient-to-t from-black/40 via-black/10 to-transparent pointer-events-none" />
392+ </ div >
393+ < div className = "absolute top-4 right-4 z-[100]" style = { { zIndex : 100 } } >
394+ < div className = "flex items-center gap-2 px-3 py-2 bg-black/40 backdrop-blur-sm rounded-lg" >
395+ < Calendar size = { 16 } className = "text-white" />
396+ < span className = "text-sm font-normal text-white" > { story . date } </ span >
397+ </ div >
398+ </ div >
399+ </ div >
400+
401+ { /* Content */ }
402+ < div className = "p-6 space-y-3" >
403+ < h3 className = "text-xl font-semibold tracking-tight group-hover:text-blue-600 transition-colors" >
404+ { story . title }
405+ </ h3 >
406+ < p className = "text-muted-foreground line-clamp-3" >
407+ { story . excerpt }
408+ </ p >
409+ < div className = "flex items-center gap-2 text-sm text-muted-foreground pt-2" >
410+ < span className = "group-hover:text-blue-600 transition-colors" > { labels . readMore } </ span >
411+ </ div >
412+ </ div >
413+ </ div >
414+ </ motion . div >
415+ </ Link >
416+ ) ;
417+ } ) }
418+ </ div >
419+ </ div >
420+ </ section >
421+ ) }
422+
337423 { /* Connect CTA Section */ }
338- < section className = "py-16 lg:py-24 bg-gradient-to-b from-white to-blue-50/20 mt-16 " >
424+ < section className = "py-16 lg:py-24 bg-gradient-to-b from-white to-blue-50/20" >
339425 < div className = "max-w-4xl mx-auto px-6 lg:px-12 text-center" >
340426 < motion . div
341427 initial = { { opacity : 0 , y : 30 } }
0 commit comments