/* soccerarena.ai — fixture detail page body. */ function FormChip({ r }) { const c = r === 'W' ? SA.lime : r === 'L' ? SA.orange : SA.dim; return ( {r} ); } function Panel({ title, children, sub }) { return (

{title}

{sub && {sub}}
{children}
); } function FixturePage({ mt, idx }) { const d = mt.detail; const isTBD = mt.tbd === true; const isMobile = useIsMobile(); const total = mt.split.home + mt.split.draw + mt.split.away; const pickLabel = (p) => p === 'home' ? `${mt.home.name} win` : p === 'away' ? `${mt.away.name} win` : 'Draw'; const pickColor = (p) => p === 'home' ? SA.lime : p === 'away' ? SA.white : SA.dim; const splitItem = (n, label, color) => (
{n} {label}
); const predCols = isMobile ? '1fr 1fr 76px' : '1.4fr 1.1fr 70px 96px'; return (
{/* hero */}
{/* stage + venue bar */}
{d.stage.toUpperCase()} {d.venue}
{isMobile ? ( /* Mobile hero: stacked layout */
{/* home team */}
{mt.home.flag}
{mt.home.name} {d.form.home.length > 0 && (
{d.form.home.map((r, i) => )}
)}
{/* center score/kickoff */}
CONSENSUS SCORE
{d.consensusScore}
KO {mt.kickoff} {!isTBD && <>·}
{/* away team */}
{mt.away.flag}
{mt.away.name} {d.form.away.length > 0 && (
{d.form.away.map((r, i) => )}
)}
) : ( /* Desktop hero: 3-column grid */
{/* home */}
{mt.home.flag}
{mt.home.name} {d.form.home.length > 0 && (
{d.form.home.map((r, i) => )}
)}
{/* center */}
CONSENSUS SCORE
{d.consensusScore}
KO {mt.kickoff} {!isTBD && <>· }
{/* away */}
{mt.away.name} {d.form.away.length > 0 && (
{d.form.away.map((r, i) => )}
)}
{mt.away.flag}
)} {/* split bar */}
{splitItem(mt.split.home, `${mt.home.code} WIN`, SA.lime)}
{splitItem(mt.split.draw, 'DRAW', SA.dim)}
{splitItem(mt.split.away, `${mt.away.code} WIN`, SA.white)}
{/* body */}
{/* model predictions */} {isTBD ? (

AI predictions will be published once both teams are confirmed.

) : d.preds.length === 0 ? (

Model predictions will be published before kickoff.

) : (
MODELCALL{!isMobile && SCORE}CONFIDENCE
{d.preds.map((p, i) => (
{pickLabel(p.pick)}
{!isMobile && {p.score}}
{Math.round(p.conf * 100)}%
))}
)}
{/* facts */}

{isTBD ? `This ${d.stage} match will be played on ${mt.kickoff}. The participating teams will be confirmed after the group stage concludes.` : d.note}

{(() => { const groupLetter = mt.group ? mt.group.replace('Group ', '').toLowerCase() : null; const rows = [ ['STAGE', d.stage], ['GROUP', groupLetter ? {mt.group} : null], ['VENUE', d.venue], ['KICK-OFF', isTBD ? mt.kickoff : <>{mt.kickoff} · in ], ['FAVOURITE', isTBD ? 'TBD' : d.favourite === 'home' ? mt.home.name : d.favourite === 'away' ? mt.away.name : d.favourite === 'draw' ? 'Draw' : 'No clear favourite'], ].filter(([, v]) => v != null); return (
{rows.map(([k, v], i) => (
{k} {v}
))}
); })()}
); } Object.assign(window, { FixturePage, FormChip, Panel });