sodalive-ios/SodaLive/Sources/Content/Detail/ContentDetailInfoLimitedEdi...

121 lines
5.3 KiB
Swift

//
// ContentDetailInfoLimitedEditionView.swift
// SodaLive
//
// Created by klaus on 3/27/24.
//
import SwiftUI
import Kingfisher
struct ContentDetailInfoLimitedEditionView: View {
let totalContentCount: Int
let remainingContentCount: Int
let orderSequence: Int?
let buyerList: [ContentBuyer]
var body: some View {
VStack(alignment: .leading, spacing: 13.3) {
HStack(spacing: 0) {
Text("한정판")
.font(.custom(Font.medium.rawValue, size: 13.3))
.foregroundColor(Color.button)
Spacer()
if let orderSequence = orderSequence {
Text("\(orderSequence)")
.font(.custom(Font.bold.rawValue, size: 13.3))
.foregroundColor(Color.button)
.padding(.leading, 5.3)
Text("/")
.font(.custom(Font.bold.rawValue, size: 13.3))
.foregroundColor(Color.grayd2)
.padding(.leading, 2.3)
Text("\(totalContentCount)")
.font(.custom(Font.medium.rawValue, size: 13.3))
.foregroundColor(Color.grayd2)
.padding(.leading, 2.3)
} else if (remainingContentCount <= 0) {
Text("Sold Out")
.font(.custom(Font.medium.rawValue, size: 12))
.foregroundColor(Color.grayd2)
.padding(.horizontal, 5.3)
.padding(.vertical, 3.3)
.overlay(
RoundedRectangle(cornerRadius: 2.6)
.stroke(lineWidth: 1)
.foregroundColor(Color.grayd2)
)
} else {
Text("잔여수량")
.font(.custom(Font.medium.rawValue, size: 13.3))
.foregroundColor(Color.grayd2)
Text("\(remainingContentCount)")
.font(.custom(Font.bold.rawValue, size: 13.3))
.foregroundColor(Color.button)
.padding(.leading, 5.3)
}
}
.padding(.vertical, 8)
.padding(.horizontal, 10.3)
.background(Color(hex: "14262d"))
.cornerRadius(5.3)
.padding(.top, 13.3)
if !buyerList.isEmpty {
Text("구매자")
.font(.custom(Font.bold.rawValue, size: 18.3))
.foregroundColor(Color.grayee)
ScrollView(.horizontal, showsIndicators: false) {
HStack(alignment: .top, spacing: 13.3) {
ForEach(0..<buyerList.count, id: \.self) {
let buyer = buyerList[$0]
VStack(spacing: 6.7) {
KFImage(URL(string: buyer.profileImageUrl))
.cancelOnDisappear(true)
.resizable()
.scaledToFill()
.frame(width: 46.7, height: 46.7, alignment: .top)
.clipShape(Circle())
Text(buyer.nickname)
.font(.custom(Font.medium.rawValue, size: 12))
.foregroundColor(Color.graybb)
.lineLimit(1)
}
}
}
}
}
}
}
}
#Preview {
ContentDetailInfoLimitedEditionView(
totalContentCount: 10,
remainingContentCount: 0,
orderSequence: nil,
buyerList: [
ContentBuyer(nickname: "user1", profileImageUrl: "https://test-cf.sodalive.net/profile/default-profile.png"),
ContentBuyer(nickname: "user2", profileImageUrl: "https://test-cf.sodalive.net/profile/default-profile.png"),
ContentBuyer(nickname: "user3", profileImageUrl: "https://test-cf.sodalive.net/profile/default-profile.png"),
ContentBuyer(nickname: "user4", profileImageUrl: "https://test-cf.sodalive.net/profile/default-profile.png"),
ContentBuyer(nickname: "user5", profileImageUrl: "https://test-cf.sodalive.net/profile/default-profile.png"),
ContentBuyer(nickname: "user6", profileImageUrl: "https://test-cf.sodalive.net/profile/default-profile.png"),
ContentBuyer(nickname: "user7", profileImageUrl: "https://test-cf.sodalive.net/profile/default-profile.png"),
ContentBuyer(nickname: "user8", profileImageUrl: "https://test-cf.sodalive.net/profile/default-profile.png"),
ContentBuyer(nickname: "user9", profileImageUrl: "https://test-cf.sodalive.net/profile/default-profile.png"),
ContentBuyer(nickname: "user10", profileImageUrl: "https://test-cf.sodalive.net/profile/default-profile.png"),
]
)
}