content: import 'package:auto_route/auto_route.dart';
  import 'package:auto_size_text/auto_size_text.dart';
  
  import 'package:hooks_riverpod/hooks_riverpod.dart';
  import 'package:shadcn_flutter/shadcn_flutter.dart';
  
  import 'package:spotube/collections/routes.gr.dart';
  import 'package:spotube/components/image/universal_image.dart';
  import 'package:spotube/extensions/context.dart';
  import 'package:spotube/models/metadata/metadata.dart';
  
  import 'package:spotube/provider/blacklist_provider.dart';
  
  class ArtistCard extends HookConsumerWidget {
    final SpotubeFullArtistObject artist;
    const ArtistCard(this.artist, {super.key});
  
    @override
    Widget build(BuildContext context, ref) {
      final theme = Theme.of(context);
      final backgroundImage = UniversalImage.imageProvider(
        artist.images.asUrlString(
          placeholder: ImagePlaceholder.artist,
        ),
      );
      final isBlackListed = ref.watch(
        blacklistProvider.select(
          (blacklist) => blacklist.asData?.value.any(
            (element) => element.elementId == artist.id,
          ),
        ),
      );
  
      return SizedBox(
        width: 180,
        child: Button.card(
          onPressed: () {
            context.navigateTo(ArtistRoute(artistId: artist.id));
          },
          child: Column(
            children: [
              Avatar(
                initials: artist.name.trim()[0].toUpperCase(),
                provider: backgroundImage,
                size: 130,
              ),
              const Gap(10),
              AutoSizeText(
                artist.name,
                maxLines: 2,
                textAlign: TextAlign.center,
                overflow: TextOverflow.ellipsis,
                style: theme.typography.bold,
              ),
              const Spacer(),
              Row(
                mainAxisAlignment: MainAxisAlignment.end,
                children: [
                  if (isBlackListed == true) ...[
                    DestructiveBadge(
                      child: Text(context.l10n.blacklisted.toUpperCase()),
                    ),
                    const Gap(5),
                  ],
                  SecondaryBadge(
                    child: Text(context.l10n.artist.toUpperCase()),
                  )
                ],
              )
            ],
          ),
        ),
      );
    }
  }
  