using System.Globalization; using Avalonia.Data.Converters; using Avalonia.Media; using ClaudeDo.Ui.ViewModels.Modals; namespace ClaudeDo.Ui.Converters; public sealed class DiffLineKindToBrushConverter : IValueConverter { private static readonly ISolidColorBrush Added = new SolidColorBrush(Color.Parse("#66BB6A")); private static readonly ISolidColorBrush Removed = new SolidColorBrush(Color.Parse("#EF5350")); private static readonly ISolidColorBrush Hunk = new SolidColorBrush(Color.Parse("#42A5F5")); private static readonly ISolidColorBrush Header = new SolidColorBrush(Color.Parse("#9E9E9E")); private static readonly ISolidColorBrush Default = new SolidColorBrush(Color.Parse("#CFD8DC")); public object Convert(object? value, Type targetType, object? parameter, CultureInfo culture) => value is WorktreeDiffLineKind kind ? kind switch { WorktreeDiffLineKind.Added => Added, WorktreeDiffLineKind.Removed => Removed, WorktreeDiffLineKind.Hunk => Hunk, WorktreeDiffLineKind.Header => Header, _ => Default, } : Default; public object ConvertBack(object? value, Type targetType, object? parameter, CultureInfo culture) => throw new NotSupportedException(); }