import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'dart:math' as math;
// Glass 제거: Material 3 Card로 대체
import 'themed_text.dart';
// import '../theme/app_colors.dart';
import '../l10n/app_localizations.dart';
import '../utils/reduce_motion.dart';

/// 구독이 없을 때 표시되는 빈 화면 위젯
///
/// 애니메이션 효과와 함께 사용자에게 구독 추가를 유도합니다.
class EmptyStateWidget extends StatelessWidget {
  final AnimationController fadeController;
  final AnimationController rotateController;
  final AnimationController slideController;
  final VoidCallback onAddPressed;

  const EmptyStateWidget({
    super.key,
    required this.fadeController,
    required this.rotateController,
    required this.slideController,
    required this.onAddPressed,
  });

  @override
  Widget build(BuildContext context) {
    final beginOffset = ReduceMotion.isEnabled(context)
        ? const Offset(0, 0.05)
        : const Offset(0, 0.2);

    final fade = Tween<double>(begin: 0, end: 1).animate(
      CurvedAnimation(parent: fadeController, curve: Curves.easeIn),
    );
    final slide = Tween<Offset>(begin: beginOffset, end: Offset.zero).animate(
      CurvedAnimation(parent: slideController, curve: Curves.easeOutBack),
    );

    return FadeTransition(
      opacity: fade,
      child: Center(
        child: SlideTransition(
          position: slide,
          child: RepaintBoundary(
            child: Card(
              margin: const EdgeInsets.all(16),
              elevation: 3,
              shape: RoundedRectangleBorder(
                borderRadius: BorderRadius.circular(16),
                side: BorderSide(
                  color: Theme.of(context)
                      .colorScheme
                      .outline
                      .withValues(alpha: 0.5),
                ),
              ),
              child: Padding(
                padding: const EdgeInsets.all(32),
                child: Column(
                  mainAxisSize: MainAxisSize.min,
                  children: [
                    AnimatedBuilder(
                      animation: rotateController,
                      builder: (context, child) {
                        final angleScale =
                            ReduceMotion.isEnabled(context) ? 0.2 : 1.0;
                        return Transform.rotate(
                          angle:
                              angleScale * rotateController.value * 2 * math.pi,
                          child: Container(
                            padding: const EdgeInsets.all(24),
                            decoration: BoxDecoration(
                              color: Theme.of(context).colorScheme.primary,
                              borderRadius: BorderRadius.circular(16),
                            ),
                            child: Icon(
                              Icons.subscriptions_outlined,
                              size: 48,
                              color: Theme.of(context).colorScheme.onPrimary,
                            ),
                          ),
                        );
                      },
                    ),
                    const SizedBox(height: 32),
                    ThemedText(
                      AppLocalizations.of(context).noSubscriptions,
                      fontSize: 22,
                      fontWeight: FontWeight.w800,
                      letterSpacing: -0.5,
                    ),
                    const SizedBox(height: 8),
                    ThemedText(
                      AppLocalizations.of(context).addSubscriptionNow,
                      fontSize: 16,
                      opacity: 0.7,
                    ),
                    const SizedBox(height: 32),
                    MouseRegion(
                      onEnter: (_) {},
                      onExit: (_) {},
                      child: ElevatedButton(
                        style: ElevatedButton.styleFrom(
                          foregroundColor:
                              Theme.of(context).colorScheme.onPrimary,
                          backgroundColor:
                              Theme.of(context).colorScheme.primary,
                          padding: const EdgeInsets.symmetric(
                            horizontal: 32,
                            vertical: 16,
                          ),
                          shape: RoundedRectangleBorder(
                            borderRadius: BorderRadius.circular(16),
                          ),
                          elevation: 0,
                        ),
                        onPressed: () {
                          HapticFeedback.mediumImpact();
                          onAddPressed();
                        },
                        child: Text(
                          AppLocalizations.of(context).addSubscription,
                          style: TextStyle(
                            fontSize: 16,
                            fontWeight: FontWeight.w600,
                            letterSpacing: 0.5,
                            color: Theme.of(context).colorScheme.onPrimary,
                          ),
                        ),
                      ),
                    ),
                  ],
                ),
              ),
            ),
          ),
        ),
      ),
    );
  }
}
