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

/// 空状态页组件
///
/// 各场景的空状态插画 + 引导操作
/// 使用场景：列表为空、搜索无结果、网络错误
class EmptyState extends StatelessWidget {
  final IconData icon;
  final String title;
  final String? subtitle;
  final String? actionText;
  final VoidCallback? onAction;

  const EmptyState({
    super.key,
    required this.icon,
    required this.title,
    this.subtitle,
    this.actionText,
    this.onAction,
  });

  @override
  Widget build(BuildContext context) {
    return Center(
      child: Padding(
        padding: const EdgeInsets.symmetric(horizontal: 40, vertical: 60),
        child: Column(
          mainAxisSize: MainAxisSize.min,
          children: [
            Container(
              width: 80,
              height: 80,
              decoration: BoxDecoration(
                color: AppColors.primarySurface,
                shape: BoxShape.circle,
              ),
              child: Icon(icon, size: 36, color: AppColors.primary.withValues(alpha: 0.5)),
            ),
            const SizedBox(height: AppSpacing.xxl),
            Text(
              title,
              style: AppTypography.h3.copyWith(color: AppColors.textSecondary),
              textAlign: TextAlign.center,
            ),
            if (subtitle != null) ...[
              const SizedBox(height: AppSpacing.sm),
              Text(
                subtitle!,
                style: AppTypography.bodySmall,
                textAlign: TextAlign.center,
              ),
            ],
            if (actionText != null && onAction != null) ...[
              const SizedBox(height: AppSpacing.xxl),
              ElevatedButton(
                onPressed: onAction,
                child: Text(actionText!),
              ),
            ],
          ],
        ),
      ),
    );
  }

  // 快捷工厂方法
  factory EmptyState.noCoupons({VoidCallback? onBrowse}) => EmptyState(
        icon: Icons.confirmation_number_outlined,
        title: '还没有券',
        subtitle: '去市场看看有什么好券吧',
        actionText: '去逛逛',
        onAction: onBrowse,
      );

  factory EmptyState.noOrders() => const EmptyState(
        icon: Icons.receipt_long_outlined,
        title: '暂无交易记录',
        subtitle: '完成首笔交易后这里会显示记录',
      );

  factory EmptyState.noResults() => const EmptyState(
        icon: Icons.search_off_rounded,
        title: '没有找到结果',
        subtitle: '换个关键词试试',
      );

  factory EmptyState.noMessages() => const EmptyState(
        icon: Icons.notifications_none_rounded,
        title: '暂无消息',
        subtitle: '交易通知和系统公告会显示在这里',
      );

  factory EmptyState.networkError({VoidCallback? onRetry}) => EmptyState(
        icon: Icons.wifi_off_rounded,
        title: '网络连接失败',
        subtitle: '请检查网络设置后重试',
        actionText: '重试',
        onAction: onRetry,
      );
}
