import React, { useMemo, useState } from "react"; import { motion } from "framer-motion"; import { Search, CalendarDays, MapPin, ShieldCheck, Plane, Ticket, Users, Star, ArrowRight, Clock, CheckCircle2 } from "lucide-react"; import { Card, CardContent } from "@/components/ui/card"; import { Button } from "@/components/ui/button"; const mockEvents = [ { id: "xs2-001", competition: "Premier League", homeTeam: "Manchester United", awayTeam: "Manchester City", date: "2026-09-19", time: "15:00", venue: "Old Trafford", city: "Manchester", image: "https://images.unsplash.com/photo-1522778119026-d647f0596c20?q=80&w=1200&auto=format&fit=crop", fromPrice: 395, availability: "Limited", categories: [ { id: "cat-1", name: "Longside Premium", supplierNet: 310, sellPrice: 395, seatsTogether: 2 }, { id: "cat-2", name: "Hospitality Lounge", supplierNet: 575, sellPrice: 695, seatsTogether: 4 }, { id: "cat-3", name: "Executive Package", supplierNet: 925, sellPrice: 1095, seatsTogether: 4 }, ], }, { id: "xs2-002", competition: "Premier League", homeTeam: "Liverpool", awayTeam: "Arsenal", date: "2026-10-03", time: "17:30", venue: "Anfield", city: "Liverpool", image: "https://images.unsplash.com/photo-1574629810360-7efbbe195018?q=80&w=1200&auto=format&fit=crop", fromPrice: 445, availability: "Available", categories: [ { id: "cat-4", name: "Museum & Matchday", supplierNet: 355, sellPrice: 445, seatsTogether: 2 }, { id: "cat-5", name: "Hospitality Premium", supplierNet: 690, sellPrice: 825, seatsTogether: 4 }, ], }, { id: "xs2-003", competition: "Non-League Experience", homeTeam: "Macclesfield FC", awayTeam: "Chester FC", date: "2026-08-29", time: "15:00", venue: "Leasing.com Stadium", city: "Macclesfield", image: "https://images.unsplash.com/photo-1551958219-acbc608c6377?q=80&w=1200&auto=format&fit=crop", fromPrice: 75, availability: "Available", categories: [ { id: "cat-6", name: "Match Ticket", supplierNet: 45, sellPrice: 75, seatsTogether: 6 }, { id: "cat-7", name: "Bar 27 Hospitality", supplierNet: 115, sellPrice: 175, seatsTogether: 6 }, ], }, ]; function formatDate(value) { return new Date(value).toLocaleDateString("nl-NL", { weekday: "short", day: "numeric", month: "short", year: "numeric", }); } export default function TftaTicketApiPrototype() { const [query, setQuery] = useState(""); const [selectedEvent, setSelectedEvent] = useState(mockEvents[0]); const [selectedCategory, setSelectedCategory] = useState(mockEvents[0].categories[0]); const [quantity, setQuantity] = useState(2); const filteredEvents = useMemo(() => { const q = query.toLowerCase(); return mockEvents.filter((event) => `${event.homeTeam} ${event.awayTeam} ${event.city} ${event.competition}`.toLowerCase().includes(q) ); }, [query]); const total = selectedCategory.sellPrice * quantity; const estimatedMargin = (selectedCategory.sellPrice - selectedCategory.supplierNet) * quantity; function selectEvent(event) { setSelectedEvent(event); setSelectedCategory(event.categories[0]); setQuantity(2); } return (
API powered football hospitality

The Football Travel Agency

Een premium ticket- en hospitalitysite waarbij het actuele aanbod via de leverancier-API wordt opgehaald, terwijl TFTA de klantreis, marge, service en beleving beheert.

Live ticket feed
Travel add-ons
Corporate groups
Football stadium

Featured trip

{selectedEvent.homeTeam} vs {selectedEvent.awayTeam}

{formatDate(selectedEvent.date)} · {selectedEvent.time} {selectedEvent.venue}, {selectedEvent.city}

Actueel aanbod

In productie komt dit uit de XS2Event API. Prijs en voorraad worden bij selectie opnieuw live gecontroleerd.

setQuery(e.target.value)} placeholder="Zoek club, stad of competitie" className="w-full rounded-2xl border border-white/10 bg-white/10 py-3 pl-11 pr-4 text-sm outline-none placeholder:text-white/35 focus:border-blue-300" />
{filteredEvents.map((event) => ( ))}
); }