import 'package:flutter/material.dart'; import 'live_info_business_object.dart'; import 'time_formatter.dart'; class TrackCard extends StatelessWidget { const TrackCard({ super.key, required this.label, required this.track, required this.titleColor, }); final String label; final LiveInfoTrackInfo? track; final Color titleColor; @override Widget build(BuildContext context) { final String title = track?.displayTitle ?? 'Unavailable'; final String subtitle = (track?.displaySubtitle ?? '').trim(); final String window = formatTimeWindow(track?.starts, track?.ends); return Container( padding: const EdgeInsets.all(12), decoration: BoxDecoration( color: Colors.black.withValues(alpha: 0.08), borderRadius: BorderRadius.circular(14), border: Border.all(color: Colors.black.withValues(alpha: 0.12)), ), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( label, style: Theme.of(context).textTheme.labelMedium?.copyWith( fontWeight: FontWeight.w700, color: titleColor, ), ), const SizedBox(height: 6), Text( title, maxLines: 2, overflow: TextOverflow.ellipsis, style: Theme.of( context, ).textTheme.titleMedium?.copyWith(fontWeight: FontWeight.w700), ), const SizedBox(height: 3), Text( subtitle.isEmpty ? 'No metadata provided' : subtitle, maxLines: 2, overflow: TextOverflow.ellipsis, style: Theme.of(context).textTheme.bodySmall, ), const Spacer(), Text( window, style: Theme.of( context, ).textTheme.labelMedium?.copyWith(fontWeight: FontWeight.w600), ), ], ), ); } }