import { Text, Group, Stack, Paper, Indicator, Box, Tooltip, ActionIcon } from "@mantine/core"; import { FootballHelmetIcon } from "@phosphor-icons/react"; import { useNavigate } from "@tanstack/react-router"; import { Match } from "../types"; import TeamAvatar from "@/components/team-avatar"; import EmojiBar from "@/features/reactions/components/emoji-bar"; import { Suspense } from "react"; import { useSheet } from "@/hooks/use-sheet"; import Sheet from "@/components/sheet/sheet"; import TeamHeadToHeadSheet from "./team-head-to-head-sheet"; interface MatchCardProps { match: Match; hideH2H?: boolean; } const MatchCard = ({ match, hideH2H = false }: MatchCardProps) => { const navigate = useNavigate(); const h2hSheet = useSheet(); const isHomeWin = match.home_cups > match.away_cups; const isAwayWin = match.away_cups > match.home_cups; const isStarted = match.status === "started"; const hasPrivate = match.home?.private || match.away?.private; const handleHomeTeamClick = (e: React.MouseEvent) => { e.stopPropagation(); if (match.home?.id) { navigate({ to: `/teams/${match.home.id}` }); } }; const handleAwayTeamClick = (e: React.MouseEvent) => { e.stopPropagation(); if (match.away?.id) { navigate({ to: `/teams/${match.away.id}` }); } }; const handleH2HClick = (e: React.MouseEvent) => { e.stopPropagation(); h2hSheet.open(); }; return ( <> {isStarted && ( )} {match.tournament.name} {!match.tournament.regional && ( <> - Round {match.round + 1} {match.is_losers_bracket && " (Losers)"} )} {match.home && match.away && !hideH2H && !hasPrivate && ( )} {match.home?.name!} {match.home?.players.map((p) => ( {p.first_name} {p.last_name} ))} {match.home_cups} {match.away?.name} {match.away?.players.map((p) => ( {p.first_name} {p.last_name} ))} {match.away_cups} {match.home && match.away && !hideH2H && h2hSheet.isOpen && ( )} ); }; export default MatchCard;