import 'package:common/localization/l10n_utils.dart';
import 'package:concierge/presentation/app/cart_cubit.dart';
import 'package:concierge/presentation/theme/app_colors.dart';
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:gap/gap.dart';

class DeliveryMethodPicker extends StatelessWidget {
  const DeliveryMethodPicker({super.key});

  @override
  Widget build(BuildContext context) {
    final cartCubit = context.watch<CartCubit>();
    final deliveryPrice = cartCubit.state.selectedArea?.deliveryPrice;
    return Row(
      children: [
        Expanded(
          child: buildButton(
            context,
            isSelected: cartCubit.state.isDelivery,
            onClick: () {
              cartCubit.updateDelivery(true);
            },
            text: "${context.strings.delivery} | $deliveryPrice kr.",
          ),
        ),
        const Gap(8),
        Expanded(
          child: buildButton(
            context,
            isSelected: !cartCubit.state.isDelivery,
            onClick: () {
              cartCubit.updateDelivery(false);
            },
            text: context.strings.pickup,
          ),
        ),
      ],
    );
  }

  Widget buildButton(
    BuildContext context, {
    required bool isSelected,
    required VoidCallback onClick,
    required String text,
  }) {
    final Color bgColor;
    final BorderSide? border;
    final Color textColor;
    if (isSelected) {
      bgColor = AppColors.sandColor;
      textColor = Colors.white;
      border = null;
    } else {
      bgColor = Colors.white;
      textColor = Colors.black;
      border = BorderSide(color: Colors.grey.shade300, width: 1);
    }
    return TextButton(
      style: ButtonStyle(
        backgroundColor: WidgetStatePropertyAll(bgColor),
        side: WidgetStatePropertyAll(border),
      ),
      onPressed: onClick,
      child: Text(
        text,
        style: TextStyle(color: textColor),
      ),
    );
  }
}