'use client' import Link from 'next/link' import { useState, useEffect } from "react" import axios from "axios" import { events as staticEvents } from "@/utility/constant.utils" export default function HomeUpcomingEvent() { const [isTab, setIsTab] = useState(1) const [liveEvents, setLiveEvents] = useState([]) useEffect(() => { const fetchEvents = async () => { try { const API_BASE_URL = process.env.NEXT_PUBLIC_API_BASE_URL || 'http://localhost:3006/api'; const response = await axios.get(`${API_BASE_URL}/upcoming-events`); if (response.data && response.data.success && response.data.data.length > 0) { const normalizedEvents = response.data.data.map((e: any) => ({ ...e, title: e.title || e.eventtitle, date: e.date || e.eventdate, image: e.image || e.eventimageurl, desc: e.description || e.desc || e.eventdescription, btnText: e.btn_text || e.btnText, link: e.link || `/upcoming-event/${e.slug || e.id}`, location: e.location || e.venue, })); setLiveEvents(normalizedEvents); } } catch (error) { console.error("Error fetching homepage upcoming events:", error); } }; fetchEvents(); }, []); // Take only the first 3 events from API or fallback const displayEvents = (liveEvents.length > 0 ? liveEvents : staticEvents).slice(0, 3) as any[]; return ( <>

Events

{displayEvents.map((event, idx) => { const buttonHref = event.url || event.link || "#"; const isExternalButton = /^https?:\/\//.test(buttonHref); return (
{idx > 0 &&
}

{String(idx + 1).padStart(2, "0")}

{/* Alternating layout */} {idx % 2 === 0 ? ( <>
{event.title}
  • {event.time ? event.time + " - " : ""}{event.date} |
  • {event.location}
{event.title}

{event.desc}

{event.btnText || "purchase ticket"}
) : ( <>
  • {event.time ? event.time + " - " : ""}{event.date} |
  • {event.location}
{event.title}

{event.desc}

{event.btnText || "purchase ticket"}
{event.title}
)}
) })}
) }