diff --git a/src/ClaudeDo.Ui/Converters/CheckboxBorderConverter.cs b/src/ClaudeDo.Ui/Converters/CheckboxBorderConverter.cs new file mode 100644 index 0000000..9e9e20f --- /dev/null +++ b/src/ClaudeDo.Ui/Converters/CheckboxBorderConverter.cs @@ -0,0 +1,30 @@ +using System; +using System.Globalization; +using Avalonia.Data.Converters; +using Avalonia.Media; + +namespace ClaudeDo.Ui.Converters; + +public sealed class CheckboxBorderConverter : IValueConverter +{ + public static readonly CheckboxBorderConverter Instance = new(); + + private static readonly ISolidColorBrush Gray = new SolidColorBrush(Color.Parse("#475569")); + private static readonly ISolidColorBrush Orange = new SolidColorBrush(Color.Parse("#e67e22")); + private static readonly ISolidColorBrush Green = new SolidColorBrush(Color.Parse("#3d9474")); + private static readonly ISolidColorBrush Red = new SolidColorBrush(Color.Parse("#ef4444")); + + public object? Convert(object? value, Type targetType, object? parameter, CultureInfo culture) + { + return value?.ToString()?.ToLowerInvariant() switch + { + "running" => Orange, + "done" => Green, + "failed" => Red, + _ => Gray, // manual, queued + }; + } + + public object? ConvertBack(object? value, Type targetType, object? parameter, CultureInfo culture) + => throw new NotSupportedException(); +}