content: import 'package:auto_size_text/auto_size_text.dart';
  import 'package:flutter/foundation.dart';
  import 'package:shadcn_flutter/shadcn_flutter.dart';
  import 'package:shadcn_flutter/shadcn_flutter_extension.dart';
  import 'package:spotube/collections/formatters.dart';
  
  class SummaryCard extends StatelessWidget {
    final String title;
    final String unit;
    final String description;
    final VoidCallback? onTap;
  
    final ColorShades color;
  
    SummaryCard({
      super.key,
      required double title,
      required this.unit,
      required this.description,
      required this.color,
      this.onTap,
    }) : title = compactNumberFormatter.format(title);
  
    const SummaryCard.unformatted({
      super.key,
      required this.title,
      required this.unit,
      required this.description,
      required this.color,
      this.onTap,
    });
  
    @override
    Widget build(BuildContext context) {
      final ThemeData(:typography, :brightness) = Theme.of(context);
  
      final descriptionNewLines = description.split("").where((s) => s == "\n");
  
      return Card(
        fillColor: brightness == Brightness.dark ? color.shade100 : color.shade50,
        filled: true,
        borderColor: color,
        padding: EdgeInsets.zero,
        borderRadius: context.theme.borderRadiusLg,
        child: Button.ghost(
          onPressed: onTap,
          child: Padding(
            padding: const EdgeInsets.symmetric(vertical: 8.0, horizontal: 15),
            child: Column(
              mainAxisSize: MainAxisSize.min,
              crossAxisAlignment: CrossAxisAlignment.start,
              mainAxisAlignment: MainAxisAlignment.center,
              children: [
                AutoSizeText.rich(
                  TextSpan(
                    children: [
                      TextSpan(
                        text: title,
                        style: typography.h2.copyWith(
                          color: color.shade900,
                        ),
                      ),
                      TextSpan(
                        text: " $unit",
                        style: typography.semiBold.copyWith(
                          color: color.shade900,
                        ),
                      ),
                    ],
                  ),
                  maxLines: 1,
                ),
                const Gap(5),
                AutoSizeText(
                  description,
                  maxLines: description.contains("\n")
                      ? descriptionNewLines.length + 1
                      : 1,
                  minFontSize: 9,
                  style: typography.small.copyWith(
                    color: color.shade900,
                  ),
                ),
              ],
            ),
          ),
        ),
      );
    }
  }
  