import 'package:enaklo_pos/core/components/spaces.dart';
import 'package:enaklo_pos/core/extensions/build_context_ext.dart';
import 'package:enaklo_pos/presentation/home/bloc/current_outlet/current_outlet_bloc.dart';
import 'package:enaklo_pos/presentation/home/dialog/outlet_dialog.dart';
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';

import '../../../core/components/search_input.dart';
import '../../../core/constants/colors.dart';

class HomeTitle extends StatelessWidget {
  final TextEditingController controller;
  final Function(String value)? onChanged;

  const HomeTitle({
    super.key,
    required this.controller,
    this.onChanged,
  });

  @override
  Widget build(BuildContext context) {
    return Container(
      height: context.deviceHeight * 0.1,
      padding: const EdgeInsets.symmetric(horizontal: 16.0, vertical: 12.0),
      decoration: BoxDecoration(
        color: AppColors.white,
      ),
      child: Row(
        mainAxisAlignment: MainAxisAlignment.spaceBetween,
        children: [
          GestureDetector(
            onTap: () => showDialog(
              context: context,
              builder: (context) => OutletDialog(),
            ),
            child: BlocBuilder<CurrentOutletBloc, CurrentOutletState>(
              builder: (context, state) {
                return Row(
                  children: [
                    state.maybeWhen(
                      orElse: () => const Text(
                        'DEFAULT OUTLET',
                        style: TextStyle(
                          color: AppColors.primary,
                          fontSize: 18,
                          fontWeight: FontWeight.w600,
                        ),
                      ),
                      loading: () => Center(
                        child: SizedBox(
                          height: 16,
                          width: 16,
                          child: CircularProgressIndicator(
                            color: AppColors.primary,
                          ),
                        ),
                      ),
                      loaded: (outlet) => Text(
                        outlet.name ?? 'DEFAULT OUTLET',
                        style: TextStyle(
                          color: AppColors.primary,
                          fontSize: 18,
                          fontWeight: FontWeight.w600,
                        ),
                      ),
                    ),
                    SpaceWidth(2),
                    Icon(Icons.keyboard_arrow_down, color: AppColors.primary),
                  ],
                );
              },
            ),
          ),
          SizedBox(
            width: context.deviceWidth * 0.2,
            child: SearchInput(
              controller: controller,
              onChanged: onChanged,
              hintText: 'Search..',
            ),
          ),
        ],
      ),
    );
  }
}
