Football / src /data /sampleMatch.js
Prataykarali's picture
feat: deploy sustainability, staff command center, security hardening, accessibility and UX polish to HF
ca26788
Raw
History Blame Contribute Delete
7.15 kB
import { VIDEO_BASE } from '../utils/media.js';
export const MATCH_INFO = {
id: 'arg-fra-wc2022-final',
homeTeam: { name: 'Argentina', code: 'ARG', flag: '🇦🇷' },
awayTeam: { name: 'France', code: 'FRA', flag: '🇫🇷' },
venue: 'Lusail Stadium',
competition: 'FIFA World Cup 2022 Final',
date: '2022-12-18',
kickoffTime: '2022-12-18T18:00:00+03:00',
durationMinutes: 120,
status: 'completed',
finalScore: { home: 3, away: 3 },
};
// FEATURED_MATCH: the featured live match on the Live page.
//
// Kickoff is NOT hardcoded — it is computed at runtime as "now +
// kickoffOffsetMinutes" (and persisted per browser session), so the countdown
// is always a real, live countdown no matter when the app is opened. The live
// YouTube stream plays as a preview during the countdown, then flips to LIVE
// (starting the event feed) once the countdown reaches zero.
//
// To pin a real fixture instead: set `kickoffTime` to an absolute ISO 8601
// timestamp (this overrides the offset), and `liveStreamId` to the
// broadcaster's live YouTube video ID. Set `forceLiveDemo: true` to skip the
// countdown and go live immediately.
export const FEATURED_MATCH = {
id: 'arg-egy-2026-live-demo',
league: 'FIFA World Cup',
round: 'Round of 16',
homeTeam: { name: 'Argentina', code: 'ARG', flag: '🇦🇷' },
awayTeam: { name: 'Egypt', code: 'EGY', flag: '🇪🇬' },
venue: 'Mercedes-Benz Stadium, Atlanta',
// Default feed is a release-hosted demo clip so the "live" player always plays.
// A real broadcast embed (e.g. FIFA on YouTube) is
// routinely geo/embed-blocked ("Video unavailable") and, being a cross-origin
// iframe, can't be scanned. Users can still paste a working stream via the
// "Embed YouTube Link" control, which sets liveStreamId at runtime.
liveStreamId: null,
streamSrc: `${VIDEO_BASE}/football-goal-1.mp4`,
kickoffTime: null, // absolute override; null → use offset below
kickoffOffsetMinutes: 3, // real-time countdown length from first visit
displayDate: 'TODAY',
displayTime: 'KICKOFF SOON',
forceLiveDemo: false,
};
// NEXT_MATCH: for the home spotlight card — upcoming El Clasico
export const NEXT_MATCH = {
id: 'bar-rma-2026-07-12',
league: 'La Liga',
round: 'Matchday 32',
homeTeam: { name: 'Barcelona', code: 'BAR', flag: '🇪🇸' },
awayTeam: { name: 'Real Madrid', code: 'RMA', flag: '🇪🇸' },
venue: 'Camp Nou, Barcelona',
kickoffTime: '2026-07-12T20:00:00+02:00',
displayDate: '12 JUL 2026',
displayTime: '08:00 PM CEST',
};
export const SAMPLE_MATCH_EVENTS = [
{ id: 1, minute: 1, type: 'kickoff', team: 'ARG', details: 'Argentina kick off the World Cup Final in Lusail!' },
{ id: 2, minute: 3, type: 'possession', team: 'ARG', details: 'De Paul presses high in midfield, winning possession early.' },
{ id: 3, minute: 5, type: 'foul', team: 'FRA', player: 'Rabiot', details: 'Rabiot clips Mac Allister near the halfway line.' },
{ id: 4, minute: 8, type: 'shot', team: 'ARG', player: 'De Paul', details: 'De Paul takes a low long-range shot, deflected out for a corner.' },
{ id: 5, minute: 12, type: 'corner', team: 'ARG', details: 'Messi delivers the corner, cleared away by Varane.' },
{ id: 6, minute: 17, type: 'shot', team: 'ARG', player: 'Di María', details: 'Di María fires over the bar from inside the box after a slick team move.' },
{ id: 7, minute: 21, type: 'penalty_awarded', team: 'ARG', player: 'Di María', details: 'PENALTY! Dembélé clips Di María inside the box!', isKeyMoment: true },
{ id: 8, minute: 23, type: 'goal', team: 'ARG', player: 'Lionel Messi', details: 'GOAL! Messi sends Lloris the wrong way from the spot! ARG 1 - 0 FRA', isKeyMoment: true },
{ id: 9, minute: 28, type: 'foul', team: 'ARG', player: 'Romero', details: 'Romero collides with Lloris during an aerial duel.' },
{ id: 10, minute: 32, type: 'possession', team: 'ARG', details: 'Argentina in total control with 62% possession.' },
{ id: 11, minute: 36, type: 'goal', team: 'ARG', player: 'Ángel Di María', details: 'GOAL! Unbelievable counter-attack! Mac Allister to Di María! ARG 2 - 0 FRA', isKeyMoment: true },
{ id: 12, minute: 41, type: 'substitution', team: 'FRA', player: 'Kolo Muani', details: 'Double sub for France: Kolo Muani & Thuram on for Giroud & Dembélé.' },
{ id: 13, minute: 45, type: 'half_time', team: 'ARG', details: 'Half-time in Lusail! Argentina dominate France 2-0.' },
{ id: 14, minute: 46, type: 'second_half', team: 'ARG', details: 'Second half begins! France need a miracle.' },
{ id: 15, minute: 52, type: 'foul', team: 'FRA', player: 'Thuram', details: 'Thuram booked for a late challenge on Romero.' },
{ id: 16, minute: 59, type: 'shot', team: 'ARG', player: 'Ángel Di María', details: 'Di María nutmegs Koundé, finds Alvarez whose low shot is saved.' },
{ id: 17, minute: 64, type: 'substitution', team: 'ARG', player: 'Acuña', details: 'Di María receives a standing ovation as Acuña replaces him.' },
{ id: 18, minute: 71, type: 'shot', team: 'FRA', player: 'Kylian Mbappé', details: 'Mbappé cuts inside and strikes over the bar — France\'s first real attempt.' },
{ id: 19, minute: 79, type: 'penalty_awarded', team: 'EGY', player: 'Mohamed Salah', details: 'PENALTY FOR EGYPT! Salah is clipped while driving inside the box!', isKeyMoment: true },
{ id: 20, minute: 80, type: 'goal', team: 'EGY', player: 'Mohamed Salah', details: 'GOAL! Salah drills it into the bottom corner! ARG 2 - 1 EGY', isKeyMoment: true },
{ id: 21, minute: 81, type: 'goal', team: 'EGY', player: 'Mohamed Salah', details: 'GOAL UNBELIEVABLE! Salah volleys Egypt level 90 seconds later! ARG 2 - 2 EGY', isKeyMoment: true },
{ id: 22, minute: 85, type: 'yellow_card', team: 'EGY', player: 'Trezeguet', details: 'Trezeguet booked for simulation in the box!' },
{ id: 23, minute: 90, type: 'shot', team: 'ARG', player: 'Lionel Messi', details: 'Messi hammers a rocket from 25 yards — tipped over by Lloris!' },
{ id: 24, minute: 95, type: 'extra_time', team: 'ARG', details: 'Full-time 2-2! We are heading into EXTRA TIME!' },
{ id: 25, minute: 105, type: 'shot', team: 'ARG', player: 'Lautaro Martínez', details: 'Upamecano makes a hero block to deny Lautaro Martínez!' },
{ id: 26, minute: 108, type: 'goal', team: 'ARG', player: 'Lionel Messi', details: 'GOAL! MESSI REACTS TO THE REBOUND! IS THAT THE WINNER? ARG 3 - 2 FRA', isKeyMoment: true },
{ id: 27, minute: 116, type: 'penalty_awarded', team: 'EGY', player: 'Mohamed Salah', details: 'PENALTY! Montiel handles Salah shot in the box!', isKeyMoment: true },
{ id: 28, minute: 118, type: 'goal', team: 'EGY', player: 'Mohamed Salah', details: 'GOAL! HAT-TRICK FOR SALAH! UNREAL SCENARIO! ARG 3 - 3 EGY', isKeyMoment: true },
{ id: 29, minute: 120, type: 'shot', team: 'EGY', player: 'Mostafa Mohamed', details: 'DIBU MARTÍNEZ MAKES A HUGE STOP IN STOPPAGE TIME!', isKeyMoment: true },
{ id: 30, minute: 122, type: 'penalty_shootout', team: 'ARG', details: 'PENALTY SHOOTOUT! Argentina win 4-2 on penalties! ARGENTINA ARE WORLD CHAMPIONS!', isKeyMoment: true }
];