@@ -13,38 +13,58 @@ const UpcomingEvents = ({ data }) => {
1313 return (
1414 < UpcomingEventsWrapper >
1515 < div className = "blog-slider swiper" >
16- < div style = { {
17- display : "block"
18- } } className = "blog-slider__wrp swiper-wrapper"
19- >
20-
16+ < div style = { { display : "block" } } className = "blog-slider__wrp swiper-wrapper" >
2117 < Swiper
2218 spaceBetween = { 50 }
2319 slidesPerView = { 1 }
2420 modules = { [ Mousewheel , Pagination ] }
2521 pagination = { { clickable : true } }
2622 >
2723 { data . nodes . map ( item => {
24+ const joinUrl = item . frontmatter . eurl || item . frontmatter . joinLink || item . frontmatter . registration || "" ;
25+ const isValidUrl = joinUrl && / ^ h t t p s ? : \/ \/ / i. test ( joinUrl ) ;
2826 return (
2927 < SwiperSlide key = { item . id } >
3028 < div className = "blog-slider_item swiper-slide" >
3129 < div className = "blog-slider_img" >
3230 < Link to = { `/community/events/${ slugify ( item . frontmatter . title ) } ` } >
33- < Image { ...item . frontmatter . thumbnail } alt = { item . frontmatter . title } />
31+ < Image { ...item . frontmatter . thumbnail } alt = { item . frontmatter . title } />
3432 </ Link >
3533 </ div >
3634 < div className = "blog-slider_content" >
3735 < h3 className = "blog-slider_title" > { item . frontmatter . title } </ h3 >
3836 < p className = "blog-slider_date" > { item . frontmatter . date } </ p >
3937 < p className = "blog-slider_description" > { item . frontmatter . abstract } </ p >
40- < Button $secondary className = "blog-slider_button" $url = { item . frontmatter . eurl } title = "Join Now" $external = { true } />
38+ { isValidUrl ? (
39+ < Button
40+ $secondary
41+ className = "blog-slider_button"
42+ $url = { joinUrl }
43+ title = "Join Now"
44+ $external = { true }
45+ aria-label = { `Join ${ item . frontmatter . title } event` }
46+ />
47+ ) : (
48+ < Button
49+ $secondary
50+ className = "blog-slider_button"
51+ title = "Join Now"
52+ aria-label = { `Join ${ item . frontmatter . title } event (link unavailable)` }
53+ disabled
54+ style = { { opacity : 0.5 , cursor : "not-allowed" } }
55+ onClick = { ( ) => {
56+
57+ console . error ( `No valid join link for event: ${ item . frontmatter . title } ` ) ;
58+ } }
59+ > Join Now
60+ </ Button >
61+ ) }
4162 </ div >
4263 </ div >
4364 </ SwiperSlide >
4465 ) ;
4566 } ) }
4667 </ Swiper >
47-
4868 </ div >
4969 </ div >
5070 </ UpcomingEventsWrapper >
0 commit comments