// // 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() }