import { useState, useEffect } from 'react'; import { useParams, Link } from 'react-router-dom'; import { QRCodeSVG } from 'qrcode.react'; import { Copy, Check, Users, Calendar, MapPin, QrCode } from 'lucide-react'; import Layout from '../components/layout/Layout'; import { eventsAPI } from '../services/api'; export default function EventDetailsPage() { const { slug } = useParams(); const [eventDetails, setEventDetails] = useState(null); const [loading, setLoading] = useState(true); const [error, setError] = useState(''); const [copied, setCopied] = useState(false); useEffect(() => { fetchEventDetails(); }, [slug]); const fetchEventDetails = async () => { try { setLoading(true); const response = await eventsAPI.getDetails(slug); setEventDetails(response.data); } catch (err) { console.error('Error loading event details:', err); setError(err.message || 'Failed to load event details'); } finally { setLoading(false); } }; const copyToClipboard = async () => { try { await navigator.clipboard.writeText(eventDetails.checkin.url); setCopied(true); setTimeout(() => setCopied(false), 2000); } catch (err) { console.error('Failed to copy:', err); } }; const formatDate = (dateString) => { return new Date(dateString).toLocaleDateString('en-US', { year: 'numeric', month: 'long', day: 'numeric', }); }; if (loading) { return (

Loading event details...

); } if (error) { return (

{error}

Back to Events
); } if (!eventDetails) { return null; } const { event, checkin, participants, stats } = eventDetails; return (
{/* Header */}
← Back to Events

{event.name}

{event.location}
{formatDate(event.startDate)} - {formatDate(event.endDate)}
{/* QR Code Section */}

Event Check-in QR Code

{/* QR Code Display */}
{/* Check-in URL */}
{/* Valid Dates */}

Valid Period

{formatDate(checkin.validFrom)} - {formatDate(checkin.validUntil)}

{process.env.NODE_ENV === 'development' && (

⚠️ Development mode: Date validation disabled

)}
{/* Participants Section */}

Participants ({stats.totalParticipants})

{participants.length === 0 ? (

No participants yet

Share the QR code to get started!

) : (
{participants.map((participant) => (
{/* Avatar */}
{participant.avatar ? ( {participant.username} ) : ( {participant.username.charAt(0).toUpperCase()} )}
{/* User Info */}

{participant.firstName && participant.lastName ? `${participant.firstName} ${participant.lastName}` : participant.username}

@{participant.username}

{/* Joined Date */}
{new Date(participant.joinedAt).toLocaleDateString()}
))}
)}
{/* Action Buttons */}
Go to Event Chat
{/* Print Styles */}
); }