import 'package:flutter/material.dart'; import '../../../../domain/entities/album.dart'; import '../common/cached_network_image_with_fallback.dart'; /// Search result card for an album class SearchAlbumCard extends StatelessWidget { final Album album; final VoidCallback? onTap; const SearchAlbumCard({ required this.album, this.onTap, super.key, }); @override Widget build(BuildContext context) { return GestureDetector( onTap: onTap, child: Container( decoration: BoxDecoration( color: AppColors.surface, borderRadius: BorderRadius.circular(12), border: Border.all( color: AppColors.rose.withOpacity(0.3), ), ), child: Column( children: [ // Album cover or placeholder Expanded( child: ClipRRect( borderRadius: const BorderRadius.vertical( top: Radius.circular(12), ), child: Container( width: double.infinity, decoration: BoxDecoration( gradient: AppColors.fullGradient, ), child: CachedNetworkImageWithFallback( imageUrl: album.imageUrl, fallbackIcon: Icons.album, progressColor: AppColors.rose, ), ), ), ), // Album info Padding( padding: const EdgeInsets.all(8), child: Column( children: [ Text( album.title, style: const TextStyle( color: AppColors.onSurface, fontWeight: FontWeight.w500, fontSize: 14, ), maxLines: 1, overflow: TextOverflow.ellipsis, textAlign: TextAlign.center, ), if (album.artist != null) Text( album.artist!.name, style: const TextStyle( color: AppColors.muted, fontSize: 12, ), maxLines: 1, overflow: TextOverflow.ellipsis, textAlign: TextAlign.center, ), ], ), ), ], ), ), ); } }