39 lines
1.0 KiB
Swift
39 lines
1.0 KiB
Swift
import SwiftUI
|
|
|
|
struct TeamLogoView: View {
|
|
let team: TeamInfo
|
|
var size: CGFloat = 64
|
|
|
|
var body: some View {
|
|
AsyncImage(url: team.logoURL) { phase in
|
|
switch phase {
|
|
case .success(let image):
|
|
image
|
|
.resizable()
|
|
.aspectRatio(contentMode: .fit)
|
|
case .failure:
|
|
fallbackLogo
|
|
default:
|
|
fallbackLogo
|
|
.redacted(reason: .placeholder)
|
|
}
|
|
}
|
|
.frame(width: size, height: size)
|
|
.overlay(
|
|
Circle()
|
|
.strokeBorder(.white.opacity(0.1), lineWidth: 1)
|
|
)
|
|
}
|
|
|
|
@ViewBuilder
|
|
private var fallbackLogo: some View {
|
|
ZStack {
|
|
Circle()
|
|
.fill(TeamAssets.color(for: team.code).gradient)
|
|
Text(team.code.prefix(3))
|
|
.font(.system(size: size * 0.3, weight: .heavy, design: .rounded))
|
|
.foregroundStyle(.white)
|
|
}
|
|
}
|
|
}
|