import React, { useEffect, useState } from 'react'; import { Link } from 'react-router-dom'; import { Plus, Users, QrCode, Trash2 } from 'lucide-react'; import { getTickets, deleteTicket } from '../utils/storage'; import type { Ticket } from '../types'; export const Home: React.FC = () => { const [tickets, setTickets] = useState([]); const [loading, setLoading] = useState(true); const [error, setError] = useState(null); useEffect(() => { const fetchTickets = async () => { try { setLoading(true); const fetchedTickets = await getTickets('default-event'); // For now, single event setTickets(fetchedTickets); } catch (err) { setError('Failed to load tickets.'); console.error(err); } finally { setLoading(false); } }; fetchTickets(); }, []); const handleDelete = async (id: string) => { if (window.confirm('Are you sure you want to delete this ticket?')) { try { await deleteTicket(id); setTickets(tickets.filter(t => t.id !== id)); } catch (err) { alert('Failed to delete ticket.'); console.error(err); } } }; return (

Dashboard

Manage your events and attendees

New Ticket New

Total Attendees

{tickets.length}

Scanned Tickets

{tickets.filter(t => t.status === 'used').length}

Recent Tickets

{loading ? (
Loading tickets...
) : error ? (
{error}
) : tickets.length === 0 ? (
No tickets generated yet.
) : (
{tickets.slice().reverse().map(ticket => ( ))}
Name Email Type Status Actions
{ticket.attendeeName} {ticket.attendeeEmail} {ticket.ticketType} {ticket.status}
)}
); };