From a548d41d185e913f409f41c3726cd3374deb87b8 Mon Sep 17 00:00:00 2001 From: Mika Kuns Date: Tue, 14 Apr 2026 10:20:22 +0200 Subject: [PATCH] feat(ui): add CheckboxBorderConverter for task status circles Co-Authored-By: Claude Sonnet 4.6 --- .../Converters/CheckboxBorderConverter.cs | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 src/ClaudeDo.Ui/Converters/CheckboxBorderConverter.cs 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(); +}