import { fighterInitials, type Player, type ScoreboardState } from '@sbt/shared'; /** * The rendered scorebug. Pure function of state — used in the editor preview, the * control panel preview, and the OBS overlay so they always look identical. */ export function ScoreBug({ state }: { state: ScoreboardState }) { const [left, right] = state.swapped ? [state.players[1], state.players[0]] : [state.players[0], state.players[1]]; const style = { '--accent': state.theme.accent, '--bg': state.theme.bg, } as React.CSSProperties; return (
{state.eventLogoUrl && }
{left.score} {right.score}
{state.centerCallout &&
{state.centerCallout}
} {state.bestOf > 0 &&
Best of {state.bestOf}
}
); } function PlayerSide({ player, side }: { player: Player; side: 'left' | 'right' }) { return (
{fighterInitials(player.character)}
{player.name || 'Player'} {player.subtitle && {player.subtitle}}
{Array.from({ length: player.stocks }).map((_, i) => ( ))}
); }