import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:go_router/go_router.dart';
import '../../../core/theme/halo_tokens.dart';
import '../state/payment_draft_provider.dart';

/// "Pilih cara curhat" — two cards (chat / call). The "premium" call indicator
/// is visual only, no hard-coded multiplier. Tapping a card stores the mode
/// in the draft and pushes `/payment/duration-pick`.
class MethodPickScreen extends ConsumerWidget {
  const MethodPickScreen({super.key});

  void _onPick(BuildContext context, WidgetRef ref, PaymentMode mode) {
    ref.read(paymentDraftNotifierProvider.notifier).setMode(mode);
    context.push('/payment/duration-pick');
  }

  @override
  Widget build(BuildContext context, WidgetRef ref) {
    return Scaffold(
      backgroundColor: HaloTokens.bg,
      appBar: AppBar(
        backgroundColor: HaloTokens.bg,
        elevation: 0,
        leading: IconButton(
          icon: const Icon(Icons.chevron_left, color: HaloTokens.brandDark),
          onPressed: () {
            if (context.canPop()) {
              context.pop();
            } else {
              context.go('/home');
            }
          },
        ),
      ),
      body: SafeArea(
        child: Padding(
          padding: const EdgeInsets.fromLTRB(
            HaloSpacing.s24,
            HaloSpacing.s8,
            HaloSpacing.s24,
            HaloSpacing.s24,
          ),
          child: Column(
            crossAxisAlignment: CrossAxisAlignment.start,
            children: [
              const Text(
                'pilih cara curhat',
                style: TextStyle(
                  fontFamily: HaloTokens.fontDisplay,
                  fontSize: 26,
                  fontWeight: FontWeight.w700,
                  color: HaloTokens.brandDark,
                  letterSpacing: -0.5,
                ),
              ),
              const SizedBox(height: HaloSpacing.s8),
              const Text(
                'mau ngobrol pakai chat atau dengar suaranya langsung?',
                style: TextStyle(
                  fontSize: 14,
                  color: HaloTokens.inkSoft,
                  height: 1.5,
                ),
              ),
              const SizedBox(height: HaloSpacing.s24),
              _ModeCard(
                emoji: '💬',
                title: 'chat',
                subtitle: 'tulis dan baca dengan tenang',
                onTap: () => _onPick(context, ref, PaymentMode.chat),
              ),
              const SizedBox(height: HaloSpacing.s12),
              _ModeCard(
                emoji: '📞',
                title: 'call',
                subtitle: 'dengar suara bestie langsung',
                isPremium: true,
                onTap: () => _onPick(context, ref, PaymentMode.call),
              ),
            ],
          ),
        ),
      ),
    );
  }
}

class _ModeCard extends StatelessWidget {
  final String emoji;
  final String title;
  final String subtitle;
  final VoidCallback onTap;
  final bool isPremium;

  const _ModeCard({
    required this.emoji,
    required this.title,
    required this.subtitle,
    required this.onTap,
    this.isPremium = false,
  });

  @override
  Widget build(BuildContext context) {
    return Material(
      color: HaloTokens.surface,
      borderRadius: HaloRadius.lg,
      child: InkWell(
        borderRadius: HaloRadius.lg,
        onTap: onTap,
        child: Container(
          padding: const EdgeInsets.all(HaloSpacing.s20),
          decoration: BoxDecoration(
            border: Border.all(color: HaloTokens.border),
            borderRadius: HaloRadius.lg,
          ),
          child: Row(
            children: [
              Container(
                width: 56,
                height: 56,
                decoration: const BoxDecoration(
                  color: HaloTokens.brandSofter,
                  borderRadius: HaloRadius.md,
                ),
                alignment: Alignment.center,
                child: Text(emoji, style: const TextStyle(fontSize: 28)),
              ),
              const SizedBox(width: HaloSpacing.s16),
              Expanded(
                child: Column(
                  crossAxisAlignment: CrossAxisAlignment.start,
                  children: [
                    Row(
                      children: [
                        Text(
                          title,
                          style: const TextStyle(
                            fontFamily: HaloTokens.fontDisplay,
                            fontSize: 18,
                            fontWeight: FontWeight.w700,
                            color: HaloTokens.ink,
                          ),
                        ),
                        if (isPremium) ...[
                          const SizedBox(width: HaloSpacing.s8),
                          Container(
                            padding: const EdgeInsets.symmetric(
                              horizontal: HaloSpacing.s8,
                              vertical: 2,
                            ),
                            decoration: const BoxDecoration(
                              color: HaloTokens.accentSoft,
                              borderRadius: HaloRadius.pill,
                            ),
                            child: const Text(
                              'PREMIUM',
                              style: TextStyle(
                                fontSize: 9,
                                fontWeight: FontWeight.w700,
                                color: Color(0xFF8C5418),
                                letterSpacing: 0.6,
                              ),
                            ),
                          ),
                        ],
                      ],
                    ),
                    const SizedBox(height: 2),
                    Text(
                      subtitle,
                      style: const TextStyle(
                        fontSize: 12.5,
                        color: HaloTokens.inkSoft,
                      ),
                    ),
                  ],
                ),
              ),
              const Icon(
                Icons.chevron_right,
                color: HaloTokens.inkMuted,
              ),
            ],
          ),
        ),
      ),
    );
  }
}
