using Avalonia.Media; using ClaudeDo.Ui.Localization; using ClaudeDo.Ui.ViewModels; using CommunityToolkit.Mvvm.ComponentModel; namespace ClaudeDo.Ui; public sealed record AccentPreset(string Name, string Accent, string Dim, string Soft, string Glow); public static class AccentPresets { // Hue 88 — moss/sage green (original) public static readonly AccentPreset Moss = new("moss", "#FF7C9166", "#FF64785A", "#FF3E4B39", "#387C9166"); // Hue ~40 — warm earthy brown/terra public static readonly AccentPreset Peat = new("peat", "#FF9A7B5C", "#FF7F6449", "#FF4D3C2C", "#389A7B5C"); // Hue ~180 — cool teal/sea-green public static readonly AccentPreset Sea = new("sea", "#FF5B8F8C", "#FF4A7573", "#FF263D3C", "#385B8F8C"); public static readonly IReadOnlyList All = [Moss, Peat, Sea]; public static AccentPreset Default => Moss; public static AccentPreset Find(string? name) => All.FirstOrDefault(p => p.Name == name) ?? Default; } public sealed partial class AccentPresetSwatchViewModel : ViewModelBase { public AccentPreset Preset { get; } [ObservableProperty] private bool _isSelected; public Color DisplayColor { get; } public string DisplayName => Loc.T($"settings.general.accentPreset{char.ToUpperInvariant(Preset.Name[0])}{Preset.Name.Substring(1)}"); public AccentPresetSwatchViewModel(AccentPreset preset, bool selected) { Preset = preset; _isSelected = selected; DisplayColor = Color.Parse(preset.Accent); } }