import 'package:flutter/material.dart'; import 'package:spotiflac_android/l10n/l10n.dart'; /// Error card shown by detail screens: a dedicated rate-limit presentation /// when the message looks like an HTTP 429, otherwise a generic error row. class ErrorCard extends StatelessWidget { const ErrorCard({super.key, required this.error, required this.colorScheme}); final String error; final ColorScheme colorScheme; @override Widget build(BuildContext context) { final isRateLimit = error.contains('429') || error.toLowerCase().contains('rate limit') || error.toLowerCase().contains('too many requests'); if (isRateLimit) { return Card( elevation: 0, color: colorScheme.errorContainer, shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(20)), child: Padding( padding: const EdgeInsets.all(16), child: Row( children: [ Icon(Icons.timer_off, color: colorScheme.onErrorContainer), const SizedBox(width: 12), Expanded( child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( context.l10n.errorRateLimited, style: TextStyle( color: colorScheme.onErrorContainer, fontWeight: FontWeight.bold, ), ), const SizedBox(height: 4), Text( context.l10n.errorRateLimitedMessage, style: TextStyle( color: colorScheme.onErrorContainer, fontSize: 12, ), ), ], ), ), ], ), ), ); } return Card( elevation: 0, color: colorScheme.errorContainer.withValues(alpha: 0.5), shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(20)), child: Padding( padding: const EdgeInsets.all(16), child: Row( children: [ Icon(Icons.error_outline, color: colorScheme.error), const SizedBox(width: 12), Expanded( child: Text(error, style: TextStyle(color: colorScheme.error)), ), ], ), ), ); } }