import 'package:flutter/material.dart';
import '../../app/theme/app_colors.dart';
import '../../app/theme/app_typography.dart';
import '../../app/theme/app_spacing.dart';

/// 信用等级徽章组件
///
/// AAA/AA/A/BBB/BB 颜色标识
/// 使用场景：券详情、发行方信息、发行方列表
class CreditBadge extends StatelessWidget {
  final String rating;
  final CreditBadgeSize size;

  const CreditBadge({
    super.key,
    required this.rating,
    this.size = CreditBadgeSize.medium,
  });

  @override
  Widget build(BuildContext context) {
    return Container(
      padding: EdgeInsets.symmetric(
        horizontal: size == CreditBadgeSize.large ? 10 : 6,
        vertical: size == CreditBadgeSize.large ? 4 : 2,
      ),
      decoration: BoxDecoration(
        color: _color.withValues(alpha: 0.1),
        borderRadius: AppSpacing.borderRadiusFull,
        border: Border.all(
          color: _color.withValues(alpha: 0.3),
          width: 1,
        ),
      ),
      child: Row(
        mainAxisSize: MainAxisSize.min,
        children: [
          Icon(
            Icons.verified_rounded,
            size: size == CreditBadgeSize.large ? 14 : 10,
            color: _color,
          ),
          SizedBox(width: size == CreditBadgeSize.large ? 4 : 2),
          Text(
            rating,
            style: _textStyle,
          ),
        ],
      ),
    );
  }

  Color get _color {
    switch (rating.toUpperCase()) {
      case 'AAA':
        return AppColors.creditAAA;
      case 'AA':
        return AppColors.creditAA;
      case 'A':
        return AppColors.creditA;
      case 'BBB':
        return AppColors.creditBBB;
      case 'BB':
      default:
        return AppColors.creditBB;
    }
  }

  TextStyle get _textStyle {
    final baseStyle = size == CreditBadgeSize.large
        ? AppTypography.labelSmall
        : AppTypography.caption;
    return baseStyle.copyWith(
      color: _color,
      fontWeight: FontWeight.w700,
      fontSize: size == CreditBadgeSize.large ? 13 : 10,
    );
  }
}

enum CreditBadgeSize { small, medium, large }
