import DynamicSwiftSDK
import SwiftUI
struct SocialLoginView: View {
    let client: DynamicClient
    @Binding var message: String
    var body: some View {
        VStack(spacing: 12) {
            // Google button (prominent)
            Button {
                Task {
                    await handleSocialAuth(provider: .google)
                }
            } label: {
                HStack {
                    Image("google-logo")
                        .resizable()
                        .frame(width: 20, height: 20)
                    Text("Continue with Google")
                        .fontWeight(.medium)
                }
                .frame(maxWidth: .infinity)
                .padding()
                .background(Color.white)
                .foregroundColor(.primary)
                .cornerRadius(8)
                .overlay(
                    RoundedRectangle(cornerRadius: 8).stroke(
                        Color.secondary.opacity(0.3), lineWidth: 1))
            }
            // Other social providers in a grid
            LazyVGrid(
                columns: Array(repeating: GridItem(.flexible(), spacing: 12), count: 3),
                spacing: 12
            ) {
                ForEach([
                    ProviderType.github, ProviderType.twitter, ProviderType.apple,
                    ProviderType.discord, ProviderType.facebook, ProviderType.farcaster,
                ], id: \.self) { provider in
                    Button {
                        Task {
                            await handleSocialAuth(provider: provider)
                        }
                    } label: {
                        Image(providerImageName(provider))
                            .resizable()
                            .frame(width: 24, height: 24)
                            .frame(width: 48, height: 48)
                            .background(Color.gray.opacity(0.1))
                            .cornerRadius(8)
                    }
                }
            }
        }
    }
    private func providerImageName(_ provider: ProviderType) -> String {
        switch provider {
        case .google: return "google-logo"
        case .github: return "github-logo"
        case .twitter: return "x-logo"
        case .apple: return "apple-logo"
        case .discord: return "discord-logo"
        case .facebook: return "facebook-logo"
        case .farcaster: return "farcaster-logo"
        default: return "questionmark.circle"
        }
    }
    private func handleSocialAuth(provider: ProviderType) async {
        message = "Preparing authentication..."
        do {
            let user = try await socialLogin(
                client: client,
                with: provider,
                deepLinkUrl: "myapp://"
            )
            message = "✅ Successfully logged in: \(user.email ?? "Unknown")"
        } catch {
            message = "❌ Social auth failed: \(error.localizedDescription)"
        }
    }
}