import 'package:flutter/material.dart';
import 'package:flutter_svg/flutter_svg.dart';
import 'package:syncrow_web/utils/color_manager.dart';

class SpaceContainerWidget extends StatelessWidget {
  final int index;
  final String icon;
  final String name;
  final VoidCallback? onDoubleTap;
  final VoidCallback? onTap;

  const SpaceContainerWidget({
    super.key,
    required this.index,
    required this.icon,
    required this.name,
    this.onTap,
    this.onDoubleTap,
  });

  @override
  Widget build(BuildContext context) {
    final theme = Theme.of(context);

    return GestureDetector(
      onDoubleTap: onDoubleTap,
      onTap: onTap,
      child: Container(
        width: 150,
        height: 60,
        decoration: _containerDecoration(),
        child: Row(
          children: [
            _buildIconContainer(),
            const SizedBox(width: 10),
            Expanded(
              child: Text(
                name,
                style: theme.textTheme.bodyLarge?.copyWith(
                  fontWeight: FontWeight.bold,
                  color: ColorsManager.blackColor,
                ),
                overflow: TextOverflow.ellipsis, // Handle long names gracefully
              ),
            ),
          ],
        ),
      ),
    );
  }

  /// Builds the icon container with the SVG asset.
  Widget _buildIconContainer() {
    return Container(
      width: 40,
      height: double.infinity,
      decoration: const BoxDecoration(
        color: ColorsManager.spaceColor,
        borderRadius: BorderRadius.only(
          topLeft: Radius.circular(15),
          bottomLeft: Radius.circular(15),
        ),
      ),
      child: Center(
        child: SvgPicture.asset(
          icon,
          color: ColorsManager.whiteColors,
          width: 24,
          height: 24,
        ),
      ),
    );
  }

  BoxDecoration _containerDecoration() {
    return BoxDecoration(
      color: ColorsManager.whiteColors,
      borderRadius: BorderRadius.circular(15),
      boxShadow: [
        BoxShadow(
          color: ColorsManager.lightGrayColor.withOpacity(0.5),
          spreadRadius: 2,
          blurRadius: 5,
          offset: const Offset(0, 3), // Shadow position
        ),
      ],
    );
  }
}
