//
//  SecondaryButton.swift
//  lichunWebsocket
//
//  Secondary button with cozy outline style
//

import SwiftUI

struct SecondaryButton: View {
    let title: String
    let action: () -> Void
    var color: Color = AppColors.primary
    var isDisabled: Bool = false

    @State private var isGlowing = false

    var body: some View {
        Button(action: {
            if !isDisabled {
                hapticFeedback(style: .light)

                // Trigger glow animation
                withAnimation(.easeOut(duration: 0.4)) {
                    isGlowing = true
                }
                DispatchQueue.main.asyncAfter(deadline: .now() + 0.4) {
                    isGlowing = false
                }

                action()
            }
        }) {
            Text(title)
                .font(.appHeadline)
                .foregroundColor(isDisabled ? AppColors.disabledText : color)
                .minimumScaleFactor(0.7)
                .lineLimit(1)
                .frame(maxWidth: .infinity)
                .frame(height: AppSpacing.buttonHeight - 4)
                .background(color.opacity(isGlowing ? 0.15 : 0.08))
                .overlay(
                    RoundedRectangle(cornerRadius: AppSpacing.pillCornerRadius - 2)
                        .strokeBorder(
                            isDisabled ? AppColors.disabledText.opacity(0.3) : color.opacity(isGlowing ? 0.7 : 0.4),
                            lineWidth: isGlowing ? 3 : 2
                        )
                )
                .cornerRadius(AppSpacing.pillCornerRadius - 2)
                .shadow(
                    color: isDisabled ? .clear : color.opacity(isGlowing ? 0.4 : 0),
                    radius: isGlowing ? 8 : 0,
                    x: 0,
                    y: 2
                )
        }
        .buttonStyle(SquishButtonStyle())
        .disabled(isDisabled)
    }
}

// MARK: - Preview
#if DEBUG
struct SecondaryButton_Previews: PreviewProvider {
    static var previews: some View {
        VStack(spacing: AppSpacing.md) {
            SecondaryButton(title: "Cancel", action: {})
            SecondaryButton(title: "Learn More", action: {}, color: AppColors.accent)
            SecondaryButton(title: "Disabled", action: {}, isDisabled: true)
        }
        .padding()
        .background(AppColors.background)
    }
}
#endif
