import 'package:flutter/material.dart';
import 'package:go_router/go_router.dart';
import '../../../core/theme/halo_tokens.dart';
import '../../../core/theme/widgets/widgets.dart';

/// Phase 4 Stage 8 — Bestie Choice Sheet.
///
/// Triggered from the home `Mulai Curhat` CTA when the user has at least one
/// prior session. Two cards: continue with a known bestie (→ history list)
/// vs. find a new bestie (→ soft-prompt + blast).
class BestieChoiceSheet extends StatelessWidget {
  const BestieChoiceSheet({super.key});

  static Future<void> show(BuildContext context) {
    return HaloBottomSheet.show<void>(
      context,
      child: const BestieChoiceSheet(),
    );
  }

  @override
  Widget build(BuildContext context) {
    return Column(
      mainAxisSize: MainAxisSize.min,
      crossAxisAlignment: CrossAxisAlignment.stretch,
      children: [
        const Text(
          'mau curhat sama siapa?',
          textAlign: TextAlign.center,
          style: TextStyle(
            fontFamily: HaloTokens.fontDisplay,
            fontSize: 22,
            fontWeight: FontWeight.w700,
            color: HaloTokens.ink,
          ),
        ),
        const SizedBox(height: HaloSpacing.s8),
        const Text(
          'pilih lanjut sama bestie yang udah kenal, atau coba bestie baru.',
          textAlign: TextAlign.center,
          style: TextStyle(
            fontFamily: HaloTokens.fontBody,
            fontSize: 14,
            color: HaloTokens.inkSoft,
          ),
        ),
        const SizedBox(height: HaloSpacing.s24),
        _ChoiceCard(
          title: 'bestie yang udah kenal',
          subtitle: 'lanjut cerita ke bestie yang pernah dengerin kamu.',
          icon: Icons.favorite_outline,
          onTap: () {
            Navigator.of(context).pop();
            context.push('/bestie/history');
          },
        ),
        const SizedBox(height: HaloSpacing.s12),
        _ChoiceCard(
          title: 'bestie baru',
          subtitle: 'cari bestie baru yang siap dengerin sekarang.',
          icon: Icons.auto_awesome_outlined,
          onTap: () {
            Navigator.of(context).pop();
            context.push('/payment/entry');
          },
        ),
      ],
    );
  }
}

class _ChoiceCard extends StatelessWidget {
  final String title;
  final String subtitle;
  final IconData icon;
  final VoidCallback onTap;

  const _ChoiceCard({
    required this.title,
    required this.subtitle,
    required this.icon,
    required this.onTap,
  });

  @override
  Widget build(BuildContext context) {
    return Material(
      color: HaloTokens.brandSofter,
      borderRadius: HaloRadius.lg,
      child: InkWell(
        onTap: onTap,
        borderRadius: HaloRadius.lg,
        child: Padding(
          padding: const EdgeInsets.all(HaloSpacing.s16),
          child: Row(
            children: [
              Container(
                width: 48,
                height: 48,
                decoration: const BoxDecoration(
                  color: HaloTokens.brandSoft,
                  shape: BoxShape.circle,
                ),
                alignment: Alignment.center,
                child: Icon(icon, color: HaloTokens.brandDark, size: 24),
              ),
              const SizedBox(width: HaloSpacing.s12),
              Expanded(
                child: Column(
                  crossAxisAlignment: CrossAxisAlignment.start,
                  children: [
                    Text(
                      title,
                      style: const TextStyle(
                        fontFamily: HaloTokens.fontDisplay,
                        fontSize: 16,
                        fontWeight: FontWeight.w700,
                        color: HaloTokens.ink,
                      ),
                    ),
                    const SizedBox(height: 2),
                    Text(
                      subtitle,
                      style: const TextStyle(
                        fontFamily: HaloTokens.fontBody,
                        fontSize: 13,
                        height: 18 / 13,
                        color: HaloTokens.inkSoft,
                      ),
                    ),
                  ],
                ),
              ),
              const Icon(Icons.chevron_right, color: HaloTokens.brandDark),
            ],
          ),
        ),
      ),
    );
  }
}
