Files
iceglass/IceGlass-iOS/Views/SeriesRow.swift
T
rzen e06abd491f Use fully monospaced score field and tone series score down to secondary
Switch the score Text from .monospacedDigit() to .monospaced() so the
dash in the "- : -" pre-game placeholder takes the same character cell
as a digit — home logos now line up across upcoming and finished games.

Series scores keep the dash (it reads as series progress, not a goal
total) but match game scores in secondary color so they sit visually
behind the tricodes.
2026-04-25 15:30:17 -04:00

96 lines
2.7 KiB
Swift
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
//
// SeriesRow.swift
// IceGlass-iOS
//
// Copyright 2026 Rouslan Zenetl. All Rights Reserved.
//
import SwiftUI
struct SeriesRow: View {
let item: MainService.RoundSeriesItem
private static let logoSize: CGFloat = 40
var body: some View {
Button(action: open) {
HStack(alignment: .center, spacing: 10) {
matchupBlock
Spacer(minLength: 8)
rightContent
}
.padding(.horizontal, 14)
.padding(.vertical, 8)
.contentShape(Rectangle())
}
.buttonStyle(.plain)
}
private var matchupBlock: some View {
let bottom = item.series.bottomSeedTeam?.abbrev ?? "TBD"
let top = item.series.topSeedTeam?.abbrev ?? "TBD"
return HStack(spacing: 6) {
TeamLogo(abbrev: bottom, size: Self.logoSize)
Text(bottom)
.font(.title3.monospaced())
.fontWeight(.semibold)
.foregroundStyle(.primary)
.lineLimit(1)
.fixedSize()
Text(seriesScore)
.font(.title3.monospaced())
.fontWeight(.bold)
.foregroundStyle(.secondary)
.lineLimit(1)
.fixedSize()
.padding(.horizontal, 2)
Text(top)
.font(.title3.monospaced())
.fontWeight(.semibold)
.foregroundStyle(.primary)
.lineLimit(1)
.fixedSize()
TeamLogo(abbrev: top, size: Self.logoSize)
}
}
private var rightContent: some View {
VStack(alignment: .trailing, spacing: 2) {
Text(statusText)
.font(.subheadline)
.fontWeight(.medium)
.foregroundStyle(.secondary)
if let trailing = trailingText {
Text(trailing)
.font(.caption2)
.foregroundStyle(.tertiary)
}
}
}
private var seriesScore: String {
"\(item.series.bottomSeedWins)\(item.series.topSeedWins)"
}
private var statusText: String {
if let winner = item.series.winner {
return "\(winner) wins"
}
if let n = item.series.nextGameNumber {
return "Game \(n)"
}
return ""
}
private var trailingText: String? {
guard item.series.winner == nil else { return "Final" }
return item.nextGame?.nextGameLabel
}
private func open() {
guard let urlString = item.series.fullSeriesUrl,
let url = URL(string: urlString) else { return }
UIApplication.shared.open(url)
}
}