Initial commit
This commit is contained in:
38
mlbTVOS/Views/Components/TeamLogoView.swift
Normal file
38
mlbTVOS/Views/Components/TeamLogoView.swift
Normal file
@@ -0,0 +1,38 @@
|
||||
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)
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user