//
//  ScenicPromotionMaterialPreviewView.swift
//  suixinkan
//
//  Created by Codex on 2026/7/2.
//

import SwiftUI

/// 设置页素材预览视图。
struct ScenicPromotionMaterialPreviewView: View {
    let material: ScenicPromotionManagedMaterial

    var body: some View {
        ScrollView {
            VStack(alignment: .leading, spacing: 16) {
                ZStack {
                    Image(material.assetName)
                        .resizable()
                        .scaledToFill()
                        .frame(height: 280)
                        .frame(maxWidth: .infinity)
                        .clipped()

                    if material.kind == .video {
                        Image(systemName: "play.fill")
                            .font(.system(size: 34, weight: .bold))
                            .foregroundStyle(.white)
                            .frame(width: 76, height: 76)
                            .background(.black.opacity(0.36), in: Circle())
                            .overlay(Circle().stroke(.white, lineWidth: 3))
                    }
                }
                .clipShape(RoundedRectangle(cornerRadius: 18))

                VStack(alignment: .leading, spacing: 10) {
                    Text(material.title)
                        .font(.system(size: 22, weight: .bold))
                        .foregroundStyle(AppDesign.textPrimary)
                    Text(material.subtitle)
                        .font(.system(size: 14, weight: .medium))
                        .foregroundStyle(AppDesign.textSecondary)

                    Divider()

                    ScenicPromotionMaterialPreviewInfoRow(title: "素材类型", value: material.kind.shortTitle)
                    ScenicPromotionMaterialPreviewInfoRow(title: "上传时间", value: material.createdAt)
                    if let duration = material.duration {
                        ScenicPromotionMaterialPreviewInfoRow(title: "视频时长", value: duration)
                    }
                }
                .padding(16)
                .background(.white, in: RoundedRectangle(cornerRadius: 16))
            }
            .padding(16)
        }
        .background(AppDesign.background.ignoresSafeArea())
        .navigationTitle(material.kind == .video ? "视频预览" : "图片预览")
        .navigationBarTitleDisplayMode(.inline)
    }
}

/// 素材预览详情中的单行字段。
struct ScenicPromotionMaterialPreviewInfoRow: View {
    let title: String
    let value: String

    var body: some View {
        HStack {
            Text(title)
                .font(.system(size: 14, weight: .medium))
                .foregroundStyle(AppDesign.textSecondary)
            Spacer()
            Text(value)
                .font(.system(size: 14, weight: .bold))
                .foregroundStyle(AppDesign.textPrimary)
        }
    }
}

#if DEBUG
#Preview("视频预览") {
    NavigationStack {
        ScenicPromotionMaterialPreviewView(
            material: ScenicPromotionPreviewSupport.sampleManagedMaterial
        )
    }
}
#endif
