108 lines
3.8 KiB
Swift
108 lines
3.8 KiB
Swift
//
|
|
// OriginalWorkDetailHeaderView.swift
|
|
// SodaLive
|
|
//
|
|
// Created by klaus on 9/16/25.
|
|
//
|
|
|
|
import SwiftUI
|
|
import Kingfisher
|
|
|
|
struct OriginalWorkDetailHeaderView: View {
|
|
|
|
let item: OriginalWorkDetailResponse
|
|
|
|
var body: some View {
|
|
VStack(spacing: 0) {
|
|
if let imageUrl = item.imageUrl {
|
|
KFImage(URL(string: imageUrl))
|
|
.cancelOnDisappear(true)
|
|
.resizable()
|
|
.scaledToFill()
|
|
.frame(width: 168, height: 168 * 432 / 306)
|
|
.clipped()
|
|
.cornerRadius(16)
|
|
}
|
|
|
|
Text(item.title)
|
|
.font(.custom(Font.preBold.rawValue, size: 26))
|
|
.foregroundColor(.white)
|
|
.padding(.top, 40)
|
|
|
|
HStack(spacing: 4) {
|
|
Text(item.contentType)
|
|
.font(.custom(Font.preRegular.rawValue, size: 14))
|
|
.foregroundColor(Color(hex: "B0BEC5"))
|
|
.padding(.horizontal, 7)
|
|
.padding(.vertical, 3)
|
|
.background(Color(hex: "263238"))
|
|
.cornerRadius(4)
|
|
.overlay {
|
|
RoundedRectangle(cornerRadius: 4)
|
|
.strokeBorder(lineWidth: 1)
|
|
.foregroundColor(.white)
|
|
}
|
|
|
|
Text(item.category)
|
|
.font(.custom(Font.preRegular.rawValue, size: 14))
|
|
.foregroundColor(.button)
|
|
.padding(.horizontal, 7)
|
|
.padding(.vertical, 3)
|
|
.background(Color(hex: "263238"))
|
|
.cornerRadius(4)
|
|
.overlay {
|
|
RoundedRectangle(cornerRadius: 4)
|
|
.strokeBorder(lineWidth: 1)
|
|
.foregroundColor(.button)
|
|
}
|
|
|
|
if item.isAdult {
|
|
Text("19+")
|
|
.font(.custom(Font.preRegular.rawValue, size: 14))
|
|
.foregroundColor(Color(hex: "ff5c49"))
|
|
.padding(.horizontal, 7)
|
|
.padding(.vertical, 3)
|
|
.background(Color(hex: "263238"))
|
|
.cornerRadius(4)
|
|
.overlay {
|
|
RoundedRectangle(cornerRadius: 4)
|
|
.strokeBorder(lineWidth: 1)
|
|
.foregroundColor(Color(hex: "ff5c49"))
|
|
}
|
|
}
|
|
}
|
|
.padding(.top, 14)
|
|
|
|
Text(
|
|
item.tags
|
|
.map { $0.hasPrefix("#") ? $0 : "#\($0)" }
|
|
.joined(separator: " ")
|
|
)
|
|
.font(.custom(Font.preRegular.rawValue, size: 14))
|
|
.foregroundColor(Color(hex: "3bb9f1"))
|
|
.frame(maxWidth: .infinity)
|
|
.padding(.top, 14)
|
|
}
|
|
}
|
|
}
|
|
|
|
#Preview {
|
|
OriginalWorkDetailHeaderView(
|
|
item: OriginalWorkDetailResponse(
|
|
imageUrl: "https://picsum.photos/400",
|
|
title: "작품제목",
|
|
contentType: "웹소설",
|
|
category: "로맨스",
|
|
isAdult: true,
|
|
description: "작품설명입니다.보이스온의 오픈월드 캐릭터톡은 청소년 보호를 위해 본인인증한성인만 이용이 가능합니다.캐릭터톡 서비스를 이용하시려면 본인인증을 하고 이용해주세요.",
|
|
originalWork: nil,
|
|
originalLink: "https://apple.com",
|
|
writer: nil,
|
|
studio: nil,
|
|
originalLinks: [],
|
|
tags: [],
|
|
characters: []
|
|
)
|
|
)
|
|
}
|