// // TalkItemView.swift // SodaLive // // Created by klaus on 8/29/25. // import SwiftUI import Kingfisher struct TalkItemView: View { let item: TalkRoom @State private var backgroundColor = Color(hex: "009D68") var body: some View { HStack(spacing: 13) { DownsampledKFImage( url: URL(string: item.imageUrl), size: CGSize(width: 76, height: 76) ).clipShape(Circle()) VStack(alignment: .leading, spacing: 6) { HStack(spacing: 4) { Text(item.title) .font(.custom(Font.preBold.rawValue, size: 18)) .foregroundColor(.white) .lineLimit(1) Text(item.opponentType) .font(.custom(Font.preRegular.rawValue, size: 12)) .foregroundColor(Color(hex: "D9FCF4")) .lineLimit(1) .padding(.horizontal, 5) .padding(.vertical, 1) .background(backgroundColor) .cornerRadius(6) Spacer() Text(item.lastMessageTimeLabel) .font(.custom(Font.preRegular.rawValue, size: 12)) .foregroundColor(Color(hex: "78909C")) .lineLimit(1) } if let message = item.lastMessagePreview { Text(message) .font(.custom(Font.preRegular.rawValue, size: 14)) .foregroundColor(Color(hex: "b0bec5")) .lineLimit(2) .truncationMode(.tail) } } } .onAppear { switch item.opponentType.lowercased() { case "clone": self.backgroundColor = Color(hex: "0020C9") case "creator": self.backgroundColor = Color(hex: "F86660") default: self.backgroundColor = Color(hex: "009D68") } } } } #Preview { TalkItemView( item: TalkRoom( chatRoomId: 1, title: "정인이", imageUrl: "https://picsum.photos/200", opponentType: "Character", lastMessagePreview: "태풍온다잖아 ㅜㅜ\n조심해 어디 나가지 말고 집에만...", lastMessageTimeLabel: "6월 15일" ) ) }