timetracker/lib/features/entries/presentation/widgets/day_header.dart
2026-08-03 21:51:48 +02:00

60 lines
1.7 KiB
Dart

import 'package:flutter/material.dart';
class DayHeader extends StatelessWidget {
const DayHeader({
super.key,
required this.date,
required this.totalDuration,
});
final DateTime date;
final Duration totalDuration;
@override
Widget build(BuildContext context) {
final colorScheme = Theme.of(context).colorScheme;
return Padding(
padding: const EdgeInsets.fromLTRB(16, 16, 16, 4),
child: Row(
children: [
Text(
_label(date),
style: Theme.of(context).textTheme.labelLarge?.copyWith(
color: colorScheme.primary,
fontWeight: FontWeight.bold,
),
),
const Spacer(),
Text(
_fmt(totalDuration),
style: Theme.of(context).textTheme.labelMedium?.copyWith(
color: colorScheme.onSurfaceVariant,
),
),
],
),
);
}
String _label(DateTime d) {
final now = DateTime.now();
final today = DateTime(now.year, now.month, now.day);
final yesterday = today.subtract(const Duration(days: 1));
final target = DateTime(d.year, d.month, d.day);
if (target == today) return 'Today';
if (target == yesterday) return 'Yesterday';
const weekdays = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'];
const months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',
'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
return '${weekdays[d.weekday - 1]}, ${d.day} ${months[d.month - 1]}';
}
String _fmt(Duration d) {
final h = d.inHours;
final m = d.inMinutes % 60;
if (h > 0) return '${h}h ${m}m';
return '${m}m';
}
}