// // GameRow.swift // IceGlass-iOS // // Copyright 2026 Rouslan Zenetl. All Rights Reserved. // import SwiftUI struct GameRow: View { let game: Scoreboard.Game var body: some View { Button(action: open) { HStack(spacing: 12) { if game.gameType == 2 { Text("#\(game.seasonGameNumber)") .font(.caption2.monospacedDigit()) .foregroundStyle(.tertiary) .frame(width: 44, alignment: .leading) } Text("\(game.awayTeam.abbrev) @ \(game.homeTeam.abbrev)") .font(.body) .fontWeight(.medium) .foregroundStyle(.primary) Spacer() rightContent } .padding(.horizontal, 14) .padding(.vertical, 10) .contentShape(Rectangle()) } .buttonStyle(.plain) } @ViewBuilder private var rightContent: some View { let state = game.parsedGameState VStack(alignment: .trailing, spacing: 2) { if state.isFuture { Text(game.startTimeET.trimmingCharacters(in: .whitespaces)) .font(.subheadline.monospacedDigit()) .foregroundStyle(.secondary) } else { Text(scoreText) .font(.body.monospacedDigit()) .fontWeight(.semibold) .foregroundStyle(.primary) Text(statusLine) .font(.caption2) .foregroundStyle(state.isLive ? .red : .secondary) } } } private var scoreText: String { let a = game.awayTeam.score ?? 0 let h = game.homeTeam.score ?? 0 return "\(a) – \(h)" } private var statusLine: String { let state = game.parsedGameState let tag = state.shortTag let time = game.startTimeET.trimmingCharacters(in: .whitespaces) if tag.isEmpty { return time } if state.isLive { return tag } return tag } private func open() { guard let url = URL(string: game.gameCenterUrl) else { return } UIApplication.shared.open(url) } }