//
//  ReturnButton.swift
//  wake
//
//  Created by Junhui on 2025/8/19.
//

import SwiftUI

/// 返回按钮组件，用于左上角导航返回
struct ReturnButton: View {
    let action: () -> Void
    var iconName: String = "chevron.left"
    var iconSize: TypographyStyle = .title
    var iconColor: Color = .primary
    
    var body: some View {
        Button(action: action) {
            Image(systemName: iconName)
                .font(Typography.font(for: iconSize))
                .fontWeight(.medium)
                .foregroundColor(iconColor)
        }
        .buttonStyle(PlainButtonStyle())
    }
}

/// 带文字的返回按钮组件
struct ReturnButtonWithText: View {
    let action: () -> Void
    let text: String
    var iconName: String = "chevron.left"
    var spacing: CGFloat = 4
    var textStyle: TypographyStyle = .body
    var iconColor: Color = .primary
    var textColor: Color = .primary
    
    var body: some View {
        Button(action: action) {
            HStack(spacing: spacing) {
                Image(systemName: iconName)
                    .font(Typography.font(for: textStyle, family: .quicksandRegular))
                    .fontWeight(.medium)
                    .foregroundColor(iconColor)
                
                Text(text)
                    .font(Typography.font(for: textStyle, family: .quicksandRegular))
                    .foregroundColor(textColor)
            }
        }
        .buttonStyle(PlainButtonStyle())
    }
}

/// 圆形背景的返回按钮组件
struct CircularReturnButton: View {
    let action: () -> Void
    var iconName: String = "chevron.left"
    var size: CGFloat = 40
    var backgroundColor: Color = Color(.systemBackground)
    var iconColor: Color = .primary
    var shadowRadius: CGFloat = 4
    
    var body: some View {
        Button(action: action) {
            Image(systemName: iconName)
                .font(Typography.font(for: .body, family: .quicksandRegular))
                .foregroundColor(iconColor)
                .frame(width: size, height: size)
                .background(backgroundColor)
                .clipShape(Circle())
                .shadow(color: Color.black.opacity(0.1), radius: shadowRadius, x: 0, y: 2)
        }
        .buttonStyle(PlainButtonStyle())
    }
}

#Preview("基础返回按钮") {
    VStack(spacing: 20) {
        HStack {
            ReturnButton {
                print("返回")
            }
            Spacer()
        }
        .padding()
        
        Spacer()
    }
    .background(Color(.systemGroupedBackground))
}

#Preview("带文字返回按钮") {
    VStack(spacing: 20) {
        HStack {
            ReturnButtonWithText(action: {
                print("返回")
            }, text: "Back")
            Spacer()
        }
        .padding()
        
        Spacer()
    }
    .background(Color(.systemGroupedBackground))
}

#Preview("圆形返回按钮") {
    VStack(spacing: 20) {
        HStack {
            CircularReturnButton {
                print("返回")
            }
            Spacer()
        }
        .padding()
        
        Spacer()
    }
    .background(Color(.systemGroupedBackground))
}
