65 lines
2.0 KiB
Swift
65 lines
2.0 KiB
Swift
//
|
|
// ContentPlaylistItemView.swift
|
|
// SodaLive
|
|
//
|
|
// Created by klaus on 12/7/24.
|
|
//
|
|
|
|
import SwiftUI
|
|
import Kingfisher
|
|
|
|
struct ContentPlaylistItemView: View {
|
|
|
|
let item: GetPlaylistsItem
|
|
|
|
var body: some View {
|
|
VStack(alignment: .leading, spacing: 8) {
|
|
HStack(spacing: 11) {
|
|
KFImage(URL(string: item.coverImageUrl))
|
|
.cancelOnDisappear(true)
|
|
.downsampling(size: CGSize(width: 66.7, height: 66.7))
|
|
.resizable()
|
|
.scaledToFill()
|
|
.frame(width: 66.7, height: 66.7, alignment: .center)
|
|
.cornerRadius(5.3)
|
|
.clipped()
|
|
|
|
VStack(alignment: .leading, spacing: 7) {
|
|
Text(item.title)
|
|
.font(.custom(Font.bold.rawValue, size: 14.7))
|
|
.foregroundColor(Color.grayd2)
|
|
.lineLimit(1)
|
|
|
|
if !item.desc.trimmingCharacters(in: .whitespacesAndNewlines).isEmpty {
|
|
Text(item.desc)
|
|
.font(.custom(Font.medium.rawValue, size: 12))
|
|
.foregroundColor(Color.gray90)
|
|
.lineLimit(1)
|
|
}
|
|
|
|
Text("총 \(item.contentCount)개")
|
|
.font(.custom(Font.medium.rawValue, size: 12))
|
|
.foregroundColor(Color.gray90)
|
|
.lineLimit(1)
|
|
}
|
|
}
|
|
|
|
Rectangle()
|
|
.frame(height: 1)
|
|
.foregroundColor(Color.gray55)
|
|
}
|
|
}
|
|
}
|
|
|
|
#Preview {
|
|
ContentPlaylistItemView(
|
|
item: GetPlaylistsItem(
|
|
id: 1,
|
|
title: "토스트",
|
|
desc: "테슬라 네",
|
|
contentCount: 2,
|
|
coverImageUrl: "https://test-cf.sodalive.net/profile/default-profile.png"
|
|
)
|
|
)
|
|
}
|