import React, { useEffect, useState } from 'react'; import { useNavigate } from 'react-router-dom'; import { Box, Button, Card, CardContent, Typography, Grid, CardActions, IconButton, } from '@mui/material'; import AdminPanelSettingsIcon from '@mui/icons-material/AdminPanelSettings'; import axios from 'axios'; interface Event { id: number; title: string; description: string; date: string; location: string; slug: string; } const EventList: React.FC = () => { const [events, setEvents] = useState([]); const navigate = useNavigate(); useEffect(() => { fetchEvents(); }, []); const fetchEvents = async () => { try { const response = await axios.get('/api/events'); setEvents(response.data); } catch (error) { console.error('Error fetching events:', error); } }; const handleEventClick = (event: Event) => { navigate(`/events/${event.slug}/rsvp`); }; const handleAdminClick = (event: Event) => { navigate(`/events/${event.slug}/admin`); }; return ( Events {events.map((event) => ( handleEventClick(event)} sx={{ cursor: 'pointer', '&:hover': { boxShadow: 6, } }} > {event.title} {new Date(event.date).toLocaleDateString()} at {event.location} {event.description} { e.stopPropagation(); handleAdminClick(event); }} color="primary" aria-label="admin" > ))} ); }; export default EventList;