import { Text, Group, Stack, Paper, Indicator, Box, Tooltip, ActionIcon } from "@mantine/core";
import HeadToHeadIcon from "@/components/head-to-head-icon";
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 { memo, Suspense } from "react";
import { useSheet } from "@/hooks/use-sheet";
import Sheet from "@/components/sheet/sheet";
import TeamHeadToHeadSheet from "./team-head-to-head-sheet";
import AnimatedScore from "./animated-score";
import { Trans, useLingui } from "@lingui/react/macro";
import { track } from "@/lib/telemetry/client";
interface MatchCardProps {
match: Match;
hideH2H?: boolean;
}
const MatchCard = ({ match, hideH2H = false }: MatchCardProps) => {
const navigate = useNavigate();
const h2hSheet = useSheet();
const { t } = useLingui();
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();
track("h2h_viewed", {
source: "match_card",
context: [match.home?.name, match.away?.name].filter(Boolean).join(" v "),
});
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.away?.name}
{match.away?.players.map((p) => (
{p.first_name} {p.last_name}
))}
{match.home && match.away && !hideH2H && h2hSheet.isOpen && (
)}
>
);
};
export default memo(MatchCard);