xworkmate-app/lib/widgets/status_badge.dart

51 lines
1.3 KiB
Dart

import 'package:flutter/material.dart';
import '../models/app_models.dart';
import '../theme/app_palette.dart';
class StatusBadge extends StatelessWidget {
const StatusBadge({super.key, required this.status, this.compact = false});
final StatusInfo status;
final bool compact;
@override
Widget build(BuildContext context) {
final palette = context.palette;
final tone = switch (status.tone) {
StatusTone.neutral => (palette.surfaceTertiary, palette.textSecondary),
StatusTone.accent => (palette.accentMuted, palette.accent),
StatusTone.success => (
palette.success.withValues(alpha: 0.14),
palette.success,
),
StatusTone.warning => (
palette.warning.withValues(alpha: 0.14),
palette.warning,
),
StatusTone.danger => (
palette.danger.withValues(alpha: 0.14),
palette.danger,
),
};
return Container(
padding: EdgeInsets.symmetric(
horizontal: compact ? 8 : 10,
vertical: compact ? 4 : 6,
),
decoration: BoxDecoration(
color: tone.$1,
borderRadius: BorderRadius.circular(10),
),
child: Text(
status.label,
style: Theme.of(context).textTheme.labelMedium?.copyWith(
color: tone.$2,
fontWeight: FontWeight.w500,
),
),
);
}
}