import 'package:flutter/material.dart';
import 'package:flutter_svg/flutter_svg.dart';
import 'package:syncrow_web/utils/color_manager.dart';
import 'package:syncrow_web/utils/constants/assets.dart';
import 'package:syncrow_web/utils/extension/build_context_x.dart';
import 'package:syncrow_web/utils/style.dart';

class AqiLocation extends StatelessWidget {
  const AqiLocation({
    required this.city,
    required this.country,
    required this.address,
    super.key,
  });

  final String? city;
  final String? country;
  final String? address;

  String _getFormattedLocation() {
    if (city == null && country == null && address == null) {
      return 'N/A';
    }

    final parts = <String>[];

    if (city != null) parts.add(city!);
    if (address != null) parts.add(address!);
    final locationPart = parts.join(', ');

    if (country != null) {
      return locationPart.isEmpty ? country! : '$locationPart - $country';
    }

    return locationPart;
  }

  @override
  Widget build(BuildContext context) {
    return Container(
      decoration: subSectionContainerDecoration.copyWith(
        boxShadow: const [],
        borderRadius: BorderRadius.circular(10),
      ),
      padding: const EdgeInsetsDirectional.all(10),
      child: Row(
        spacing: 10,
        crossAxisAlignment: CrossAxisAlignment.center,
        mainAxisSize: MainAxisSize.min,
        children: [
          _buildLocationPin(),
          Expanded(
            child: Text(
              _getFormattedLocation(),
              style: context.textTheme.bodySmall?.copyWith(
                color: ColorsManager.textPrimaryColor,
                fontWeight: FontWeight.w400,
                fontSize: 12,
              ),
            ),
          ),
        ],
      ),
    );
  }

  Widget _buildLocationPin() {
    return SvgPicture.asset(
      Assets.locationPin,
      height: 12,
      width: 12,
      alignment: AlignmentDirectional.centerStart,
      colorFilter: const ColorFilter.mode(
        ColorsManager.vividBlue,
        BlendMode.srcIn,
      ),
    );
  }
}
