CollectionPlayer #1
Merged
louis.dufour
merged 2 commits from CollectionPlayer
into dev
12 months ago
@ -0,0 +1,20 @@
|
|||||||
|
struct PlayerListView: View {
|
||||||
|
@ObservedObject var viewModel: PlayerViewModel
|
||||||
|
|
||||||
|
var body: some View {
|
||||||
|
NavigationStack {
|
||||||
|
List(viewModel.players, id: \.id) { player in
|
||||||
|
PlayerProfileView(player: player)
|
||||||
|
.padding(.vertical, 5)
|
||||||
|
}
|
||||||
|
.navigationTitle("Top Players")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
struct PlayerListView_Previews: PreviewProvider {
|
||||||
|
static var previews: some View {
|
||||||
|
PlayerListView(viewModel: PlayerViewModel())
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,16 @@
|
|||||||
|
struct InfoRow: View {
|
||||||
|
var title: String
|
||||||
|
var value: String
|
||||||
|
|
||||||
|
var body: some View {
|
||||||
|
HStack {
|
||||||
|
VStack(alignment: .leading, spacing: 10) {
|
||||||
|
Text(title)
|
||||||
|
.fontWeight(.semibold)
|
||||||
|
.foregroundColor(.white)
|
||||||
|
Text(value)
|
||||||
|
}
|
||||||
|
Spacer()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,29 @@
|
|||||||
|
struct PlayerProfileView: View {
|
||||||
|
var player: Player
|
||||||
|
|
||||||
|
var body: some View {
|
||||||
|
HStack(spacing: 15) {
|
||||||
|
Text("\(player.rank)")
|
||||||
|
.font(.largeTitle)
|
||||||
|
.fontWeight(.bold)
|
||||||
|
.foregroundColor(.purple)
|
||||||
|
|
||||||
|
Image(player.image)
|
||||||
|
.resizable()
|
||||||
|
.aspectRatio(contentMode: .fill)
|
||||||
|
.frame(width: 50, height: 50)
|
||||||
|
.clipShape(Circle())
|
||||||
|
|
||||||
|
Text(player.name.uppercased())
|
||||||
|
.font(.title2)
|
||||||
|
.fontWeight(.semibold)
|
||||||
|
|
||||||
|
Spacer()
|
||||||
|
|
||||||
|
Label(player.country, systemImage: "flag.fill")
|
||||||
|
.labelStyle(.titleAndIcon)
|
||||||
|
.foregroundColor(.red)
|
||||||
|
}
|
||||||
|
.padding(.horizontal)
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in new issue