diff --git a/packages/client/src/components/bingo-card.tsx b/packages/client/src/components/bingo-card.tsx index 2ab7197..47c83bc 100644 --- a/packages/client/src/components/bingo-card.tsx +++ b/packages/client/src/components/bingo-card.tsx @@ -27,7 +27,7 @@ export function BingoCard({ card, onTap }: BingoCardProps) { key={square.tropeId} type="button" onClick={() => onTap(square.tropeId)} - className={`flex aspect-square items-center justify-center rounded-md border p-1 text-center text-xs leading-tight transition-colors ${ + className={`flex aspect-square items-center justify-center rounded-md border p-1.5 text-center text-sm leading-snug transition-colors ${ square.tapped ? "border-primary bg-primary/20 font-medium text-primary" : "border-muted hover:bg-muted/50" diff --git a/packages/client/src/components/jury-host.tsx b/packages/client/src/components/jury-host.tsx index 15f3b5a..4e78289 100644 --- a/packages/client/src/components/jury-host.tsx +++ b/packages/client/src/components/jury-host.tsx @@ -1,4 +1,3 @@ -import { useState } from "react" import type { Entry, JuryRound, JuryResult } from "@celebrate-esc/shared" import { Button } from "@/components/ui/button" import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card" @@ -12,26 +11,8 @@ interface JuryHostProps { } export function JuryHost({ entries, currentRound, results, onOpenVote, onCloseVote }: JuryHostProps) { - const [selectedCountry, setSelectedCountry] = useState(null) const votedCountries = new Set(results.map((r) => r.countryCode)) - if (currentRound) { - return ( - - - - Voting: {currentRound.countryFlag} {currentRound.countryName} - - - - - - - ) - } - return ( @@ -54,37 +35,41 @@ export function JuryHost({ entries, currentRound, results, onOpenVote, onCloseVo
{entries.map((entry) => { const voted = votedCountries.has(entry.country.code) - const isSelected = selectedCountry === entry.country.code + const isVoting = currentRound?.countryCode === entry.country.code return ( - + {entry.country.flag} {entry.artist} — {entry.song} + {!voted && !currentRound && ( + + )} + {isVoting && ( + + )} +
) })} - {selectedCountry && ( - - )}
) diff --git a/packages/client/src/components/leaderboard.tsx b/packages/client/src/components/leaderboard.tsx index 859308c..995c7b6 100644 --- a/packages/client/src/components/leaderboard.tsx +++ b/packages/client/src/components/leaderboard.tsx @@ -13,7 +13,7 @@ export function Leaderboard({ entries }: LeaderboardProps) { Leaderboard - +
{entries.map((entry, i) => (
@@ -31,6 +31,13 @@ export function Leaderboard({ entries }: LeaderboardProps) {
))}
+
+

How scoring works

+
    +
  • J = Jury points — rate each act 1-12, earn up to 5 pts per round for matching the group consensus
  • +
  • B = Bingo points — 2 pts per tapped trope + 10 bonus for a full bingo line
  • +
+
) diff --git a/packages/client/src/components/player-list.tsx b/packages/client/src/components/player-list.tsx index 6ba4f0e..1202ad3 100644 --- a/packages/client/src/components/player-list.tsx +++ b/packages/client/src/components/player-list.tsx @@ -17,7 +17,7 @@ export function PlayerList({ players, mySessionId, predictionSubmitted }: Player - + {player.displayName} {player.isHost && ( @@ -25,9 +25,6 @@ export function PlayerList({ players, mySessionId, predictionSubmitted }: Player Host )} - {player.sessionId === mySessionId && ( - (you) - )} {predictionSubmitted?.[player.id] && ( )} diff --git a/packages/client/src/routes/host.$roomCode.tsx b/packages/client/src/routes/host.$roomCode.tsx index 5d0ae4b..ab507b8 100644 --- a/packages/client/src/routes/host.$roomCode.tsx +++ b/packages/client/src/routes/host.$roomCode.tsx @@ -24,6 +24,13 @@ const nextActLabels: Partial> = { scoring: "End Party", } +const prevActLabels: Partial> = { + "pre-show": "Back to Lobby", + "live-event": "Back to Pre-Show", + scoring: "Back to Live Event", + ended: "Back to Scoring", +} + function HostView() { const { roomCode } = Route.useParams() const { send } = useWebSocket(roomCode) @@ -117,9 +124,20 @@ function HostView() { {room.currentAct !== "ended" && ( - +
+ {room.currentAct !== "lobby" && ( + + )} + +
)} {room.currentAct !== "ended" && ( + )} {room.currentAct === "live-event" && gameState && (