//
//  BrandingPreviewView.swift
//  Blackjack
//
//  Development view for previewing and exporting app icons and launch screens.
//  Access this during development to generate icon assets.
//

import SwiftUI
import CasinoKit

/// Preview view for app branding assets.
/// Use this during development to preview and export icons.
struct BrandingPreviewView: View {
    var body: some View {
        TabView {
            // App Icon Preview
            ScrollView {
                VStack(spacing: Design.Spacing.xxxLarge) {
                    Text("App Icon")
                        .font(.largeTitle.bold())
                    
                    AppIconView(config: .blackjack, size: 300)
                        .clipShape(.rect(cornerRadius: 300 * 0.22))
                        .shadow(radius: Design.Shadow.radiusXLarge)
                    
                    Text("All Sizes")
                        .font(.title2.bold())
                    
                    LazyVGrid(columns: [GridItem(.adaptive(minimum: 100))], spacing: Design.Spacing.xLarge) {
                        ForEach([180, 120, 87, 60, 40], id: \.self) { size in
                            VStack {
                                AppIconView(config: .blackjack, size: CGFloat(size))
                                    .clipShape(.rect(cornerRadius: CGFloat(size) * 0.22))
                                Text("\(size)px")
                                    .font(.caption)
                                    .foregroundStyle(.secondary)
                            }
                        }
                    }
                    
                    instructionsSection
                }
                .padding()
            }
            .tabItem {
                Label("Icon", systemImage: "app.fill")
            }
            
            // Launch Screen Preview
            LaunchScreenView(config: .blackjack)
                .tabItem {
                    Label("Launch", systemImage: "rectangle.portrait.fill")
                }
            
            // Other Games Preview
            ScrollView {
                VStack(spacing: Design.Spacing.xxxLarge) {
                    Text("Other Game Icons")
                        .font(.largeTitle.bold())
                    
                    HStack(spacing: Design.Spacing.xLarge) {
                        VStack {
                            AppIconView(config: .baccarat, size: 150)
                                .clipShape(.rect(cornerRadius: 150 * 0.22))
                            Text("Baccarat")
                                .font(.caption)
                        }
                        
                        VStack {
                            AppIconView(config: .poker, size: 150)
                                .clipShape(.rect(cornerRadius: 150 * 0.22))
                            Text("Poker")
                                .font(.caption)
                        }
                        
                        VStack {
                            AppIconView(config: .roulette, size: 150)
                                .clipShape(.rect(cornerRadius: 150 * 0.22))
                            Text("Roulette")
                                .font(.caption)
                        }
                    }
                    
                    Text("These show how the same pattern works for other games")
                        .font(.callout)
                        .foregroundStyle(.secondary)
                }
                .padding()
            }
            .tabItem {
                Label("Others", systemImage: "square.grid.2x2")
            }
        }
    }
    
    private var instructionsSection: some View {
        VStack(alignment: .leading, spacing: Design.Spacing.medium) {
            Text("How to Export Icons")
                .font(.headline)
            
            VStack(alignment: .leading, spacing: Design.Spacing.small) {
                Text("Option 1: Screenshot from Preview")
                    .font(.subheadline.bold())
                Text("• Run the preview in Xcode")
                Text("• Screenshot the 1024px icon")
                Text("• Use an online tool to generate all sizes")
            }
            
            VStack(alignment: .leading, spacing: Design.Spacing.small) {
                Text("Option 2: Use IconRenderer in Code")
                    .font(.subheadline.bold())
                Text("• Call IconRenderer.renderAppIcon(config: .blackjack)")
                Text("• Save the resulting UIImage to files")
                Text("• Add to Assets.xcassets/AppIcon")
            }
        }
        .font(.callout)
        .foregroundStyle(.secondary)
        .frame(maxWidth: .infinity, alignment: .leading)
        .padding()
        .background(Color.gray.opacity(Design.Opacity.subtle))
        .clipShape(.rect(cornerRadius: Design.CornerRadius.medium))
    }
}

#Preview {
    BrandingPreviewView()
}

