import React, { useState } from "react";
import { Button } from "@/components/ui/button";
import { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle } from "@/components/ui/card";
import { Input } from "@/components/ui/input";
import { Badge } from "@/components/ui/badge";
import { Separator } from "@/components/ui/separator";
import { Trash2, Plus, Minus, Flag, RotateCcw } from "lucide-react";
// ------- Helpers -------
function uid(prefix = "id") {
return `${prefix}-${Math.random().toString(36).slice(2, 9)}`;
}
// ------- Main App -------
export default function GameTrackerApp() {
const [teams, setTeams] = useState({
home: { name: "Home Team", score: 0, penalties: [], turnovers: [] },
away: { name: "Away Team", score: 0, penalties: [], turnovers: [] },
});
const [penaltyText, setPenaltyText] = useState("");
const [turnoverText, setTurnoverText] = useState("");
function updateScore(side, delta) {
setTeams(t => ({
...t,
[side]: { ...t[side], score: Math.max(0, t[side].score + delta) },
}));
}
function addPenalty(side) {
if (!penaltyText) return;
setTeams(t => ({
...t,
[side]: { ...t[side], penalties: [...t[side].penalties, { id: uid("pen"), text: penaltyText }] },
}));
setPenaltyText("");
}
function addTurnover(side) {
if (!turnoverText) return;
setTeams(t => ({
...t,
[side]: { ...t[side], turnovers: [...t[side].turnovers, { id: uid("to"), text: turnoverText }] },
}));
setTurnoverText("");
}
function resetGame() {
setTeams({
home: { name: "Home Team", score: 0, penalties: [], turnovers: [] },
away: { name: "Away Team", score: 0, penalties: [], turnovers: [] },
});
}
return (
);
}
Game Tracker
{(["home", "away"]).map(side => (
{teams[side].name}
{side === "home" ? "Your team" : "Opponent"}
{/* Score */}
{/* Turnovers */}
))}
Score: {teams[side].score}
{/* Penalties */}
Penalties
setPenaltyText(e.target.value)} />
-
{teams[side].penalties.map(p => (
- {p.text} ))}
Turnovers
setTurnoverText(e.target.value)} />
-
{teams[side].turnovers.map(to => (
- {to.text} ))}