3 instantiations of TrayPanelPalette
Aspire.Tray.Tests (3)
src\Aspire.Tray\Common\TrayPanelPalette.cs (3)
110public static TrayPanelPalette Light { get; } = new( 139public static TrayPanelPalette Dark { get; } = new( 190PanelColor grayText) => new(
138 references to TrayPanelPalette
Aspire.Tray.Tests (138)
src\Aspire.Tray\Common\TrayPanel.cs (17)
51private TrayPanelPalette _palette; 73public TrayPanel(TrayViewState state, TrayPanelPalette palette) 81public TrayPanelPalette Palette 722var palette = _palette; 927private void AddHeader(List<PanelCommand> commands, TrayViewState state, TrayPanelPalette palette) 942private void AddNotice(List<PanelCommand> commands, string notice, bool singleLine, double height, TrayPanelPalette palette) 958private void AddEmptyState(List<PanelCommand> commands, DiscoveryState discovery, double top, TrayPanelPalette palette) 985TrayViewState state, TrayPanelPalette palette) 1023double top, bool live, bool showPid, TrayPanelPalette palette) 1141double top, double height, TrayPanelPalette palette) 1213double top, TrayPanelPalette palette) 1266private void AddSettingsHeader(List<PanelCommand> commands, List<PanelHitTarget> targets, TrayPanelPalette palette) 1279double top, TrayPanelPalette palette) 1305private void AddAbout(List<PanelCommand> commands, PanelSettings settings, double top, TrayPanelPalette palette) 1324private void AddFooter(List<PanelCommand> commands, List<PanelHitTarget> targets, PanelRect footer, TrayPanelPalette palette) 1352private void AddInteractionFill(List<PanelCommand> commands, PanelTargetKey key, PanelRect bounds, TrayPanelPalette palette, bool includeFocus) 1435internal static (string Text, PanelColor Dot) GetHeaderStatus(TrayViewState state, TrayPanelPalette palette)
src\Aspire.Tray\Common\TrayPanelGlyphs.cs (2)
52public static void AddStatus(List<PanelCommand> commands, PanelStatusGlyph glyph, PanelRect bounds, TrayPanelPalette palette) 204public static void AddToggle(List<PanelCommand> commands, bool on, bool enabled, PanelRect bounds, TrayPanelPalette palette)
src\Aspire.Tray\Common\TrayPanelPalette.cs (4)
110public static TrayPanelPalette Light { get; } = new( 139public static TrayPanelPalette Dark { get; } = new( 172public TrayPanelPalette WithIncreasedContrast() => this with 189public static TrayPanelPalette FromSystemColors(PanelColor window, PanelColor windowText, PanelColor highlight,
TrayPanelTests.cs (115)
33private static TrayPanel CreatePanel(string name, TrayPanelPalette palette, double maxHeight = TrayPanel.DefaultMaxHeight) 70var panel = CreatePanel(name, TrayPanelPalette.Light, maxHeight: 600); 93var scene = CreatePanel(name, TrayPanelPalette.Dark).Scene; 111var scene = CreatePanel(name, TrayPanelPalette.Light).Scene; 123var commands = CreatePanel(name, TrayPanelPalette.Light).Scene.Commands; 131var scene = new TrayPanel(TrayPanelSamples.Typical(), TrayPanelPalette.Light).Scene; 143var panel = new TrayPanel(TrayPanelSamples.Typical(), TrayPanelPalette.Light); 157var panel = new TrayPanel(TrayPanelSamples.Empty(), TrayPanelPalette.Light); 168var panel = new TrayPanel(state, TrayPanelPalette.Light); 186var panel = new TrayPanel(state, TrayPanelPalette.Light) { OpenInApplications = s_applications }; 214var panel = new TrayPanel(state, TrayPanelPalette.Light) { OpenInApplications = s_applications, FileManagerName = "File Explorer" }; 245var panel = new TrayPanel(state, TrayPanelPalette.Light); 265var panel = new TrayPanel(state, TrayPanelPalette.Light); 285var panel = new TrayPanel(state, TrayPanelPalette.Light) { OpenInApplications = s_applications }; 315var panel = new TrayPanel(state, TrayPanelPalette.Light) { OpenInApplications = s_applications }; 342var panel = new TrayPanel(state, TrayPanelPalette.Light); 352var panel = new TrayPanel(state, TrayPanelPalette.Light); 365var panel = new TrayPanel(state, TrayPanelPalette.Light) { MaxHeight = 400 }; 379var panel = new TrayPanel(state, TrayPanelPalette.Light); 384Assert.Contains(panel.Scene.Commands.OfType<StrokePathCommand>(), stroke => stroke.Color == TrayPanelPalette.Light.Focus); 391var panel = new TrayPanel(state, TrayPanelPalette.Light); 407var panel = new TrayPanel(state, TrayPanelPalette.Light); 418var panel = new TrayPanel(state, TrayPanelPalette.Light); 432var panel = new TrayPanel(state, TrayPanelPalette.Light); 449var panel = new TrayPanel(state, TrayPanelPalette.Light); 466var panel = new TrayPanel(TrayPanelSamples.Many(), TrayPanelPalette.Light) { MaxHeight = 480 }; 489var panel = new TrayPanel(state, TrayPanelPalette.Light) { MaxHeight = 400 }; 502var panel = new TrayPanel(state, TrayPanelPalette.Light) { MaxHeight = 400 }; 515Assert.Contains(panel.Scene.Commands.OfType<StrokePathCommand>(), stroke => stroke.Color == TrayPanelPalette.Light.Focus); 523var panel = new TrayPanel(state, TrayPanelPalette.Light); 543var panel = new TrayPanel(TrayPanelSamples.Typical(), TrayPanelPalette.Light); 553var panel = new TrayPanel(state, TrayPanelPalette.Light); 566var panel = new TrayPanel(state, TrayPanelPalette.Light); 578var panel = new TrayPanel(TrayPanelSamples.Typical(), TrayPanelPalette.Light); 592var panel = new TrayPanel(TrayPanelSamples.Typical(), TrayPanelPalette.Light); 605var panel = new TrayPanel(TrayPanelSamples.Typical(), TrayPanelPalette.Light); 618var panel = new TrayPanel(state, TrayPanelPalette.Light); 630var panel = new TrayPanel(TrayPanelSamples.Typical(), TrayPanelPalette.Light); 650var panel = new TrayPanel(state, TrayPanelPalette.Light); 667var panel = new TrayPanel(TrayPanelSamples.Typical(), TrayPanelPalette.Light); 694var panel = new TrayPanel(TrayPanelSamples.Typical(), TrayPanelPalette.Light); 707var panel = new TrayPanel(TrayPanelSamples.Typical(), TrayPanelPalette.Light); 714text => text.Text == "Could not read launch at sign-in: denied" && text.Color == TrayPanelPalette.Light.Danger); 720var panel = new TrayPanel(TrayPanelSamples.Many(), TrayPanelPalette.Light) { MaxHeight = 400 }; 742var panel = new TrayPanel(state, TrayPanelPalette.Light); 763TrayPanelGlyphs.AddToggle(commands, on, enabled: true, box, TrayPanelPalette.Light); 772var panel = new TrayPanel(TrayPanelSamples.Typical(), TrayPanelPalette.Light); 785var panel = new TrayPanel(TrayPanelSamples.Many(), TrayPanelPalette.Light) { MaxHeight = 400 }; 802var (text, _) = TrayPanel.GetHeaderStatus(new((DiscoveryState)discovery, [], ""), TrayPanelPalette.Light); 810Assert.Equal("3 running · 1 needs attention", TrayPanel.GetHeaderStatus(TrayPanelSamples.Typical(), TrayPanelPalette.Light).Text); 811Assert.Equal("No AppHosts running", TrayPanel.GetHeaderStatus(TrayPanelSamples.Empty(), TrayPanelPalette.Light).Text); 813TrayPanel.GetHeaderStatus(TrayPanelSamples.Errors(), TrayPanelPalette.Light).Text); 828var scene = new TrayPanel(TrayPanelSamples.Errors(), TrayPanelPalette.Light).Scene; 859foreach (var palette in new[] { TrayPanelPalette.Light, TrayPanelPalette.Dark, 860TrayPanelPalette.FromSystemColors(new(0, 0, 0), new(255, 255, 255), new(26, 235, 255), new(63, 242, 63)) }) 894var scene = new TrayPanel(state, TrayPanelPalette.Light).Scene; 899Assert.Equal(TrayPanel.GetHeaderStatus(state, TrayPanelPalette.Light).Text, status.Name); 907var withNotice = new TrayPanel(TrayPanelSamples.Errors(), TrayPanelPalette.Light); 908var without = new TrayPanel(TrayPanelSamples.Errors() with { Notice = null }, TrayPanelPalette.Light); 969TrayPanelGlyphs.AddStatus(commands, glyph, box, TrayPanelPalette.Light); 998TrayPanelGlyphs.AddIcon(commands, icon, box, TrayPanelPalette.Light.TextPrimary); 1007Assert.Equal(new PanelColor(0xF9, 0xF9, 0xFB), TrayPanelPalette.Light.Background); 1008Assert.Equal(new PanelColor(0x6A, 0x4B, 0xD6), TrayPanelPalette.Light.Accent); 1009Assert.Equal(new PanelColor(0, 0, 0, 20), TrayPanelPalette.Light.Separator); 1010Assert.Equal(new PanelColor(0x25, 0x25, 0x29), TrayPanelPalette.Dark.Background); 1011Assert.Equal(new PanelColor(255, 255, 255, 18), TrayPanelPalette.Dark.Hover); 1021var palette = name == "dark" ? TrayPanelPalette.Dark : TrayPanelPalette.Light; 1032Assert.True(TrayPanelPalette.ContrastRatio(label.Color, fill.Color) >= 4.5, $"{name}: {TrayPanelPalette.ContrastRatio(label.Color, fill.Color):F2}:1"); 1033Assert.True(TrayPanelPalette.ContrastRatio(palette.OnColor, PanelColor.FromRgba(0, 0, 0, 0.22).Over(palette.DangerFill)) >= 4.5); 1044var palette = name == "dark" ? TrayPanelPalette.Dark : TrayPanelPalette.Light; 1049Assert.All(backgrounds, background => Assert.True(TrayPanelPalette.ContrastRatio(text, background) >= 4.5, 1050$"{name}: {text.ToHex()} on {background.ToHex()} is {TrayPanelPalette.ContrastRatio(text, background):F2}:1")); 1052Assert.True(TrayPanelPalette.ContrastRatio(palette.OnColor, palette.DangerFill) >= 4.5); 1066private static TrayPanelPalette ContrastPalette(string name) => name switch 1068"light" => TrayPanelPalette.Light, 1069"dark" => TrayPanelPalette.Dark, 1070"light-contrast" => TrayPanelPalette.Light.WithIncreasedContrast(), 1071"dark-contrast" => TrayPanelPalette.Dark.WithIncreasedContrast(), 1072"hc-black" => TrayPanelPalette.FromSystemColors(new(0, 0, 0), new(255, 255, 255), new(26, 235, 255), new(63, 242, 63)), 1073"hc-white" => TrayPanelPalette.FromSystemColors(new(255, 255, 255), new(0, 0, 0), new(55, 0, 110), new(96, 0, 0)), 1074"hc-aquatic" => TrayPanelPalette.FromSystemColors(new(32, 32, 32), new(255, 255, 255), new(142, 227, 240), new(167, 167, 167)), 1075"hc-desert" => TrayPanelPalette.FromSystemColors(new(255, 250, 239), new(61, 61, 61), new(144, 57, 4), new(103, 103, 103)), 1076_ => TrayPanelPalette.FromSystemColors(new(0, 0, 0), new(255, 255, 255), new(26, 235, 255), new(40, 40, 40)) 1085var palette = ContrastPalette(name); 1094var ratio = TrayPanelPalette.ContrastRatio(mark, disc); 1095Assert.True(ratio >= TrayPanelPalette.MinimumMarkContrast, $"{name} {glyph}: {mark.ToHex()} on {disc.ToHex()} is {ratio:F2}:1"); 1116Assert.Equal([white, dark, white, white], Marks(TrayPanelPalette.Light)); 1117Assert.Equal([dark, dark, white, white], Marks(TrayPanelPalette.Dark)); 1119Assert.Equal(white, TrayPanelPalette.Light.OnColor); 1120Assert.Equal(white, TrayPanelPalette.Dark.OnColor); 1122static PanelColor[] Marks(TrayPanelPalette palette) 1129var palette = TrayPanelPalette.FromSystemColors(new(0, 0, 0), new(255, 255, 255), new(26, 235, 255), new(63, 242, 63)); 1142var svg = TrayPanelSvgRenderer.Render(CreatePanel(name, TrayPanelPalette.Dark).Scene); 1162foreach (var palette in new[] { TrayPanelPalette.Light, TrayPanelPalette.Dark }) 1192var scene = CreatePanel(name, TrayPanelPalette.Light).Scene; 1205var scene = new TrayPanel(state, TrayPanelPalette.Light).Scene; 1206var (status, _) = TrayPanel.GetHeaderStatus(state, TrayPanelPalette.Light); 1222var panel = new TrayPanel(TrayPanelSamples.Typical(), TrayPanelPalette.Light); 1240var panel = new TrayPanel(TrayPanelSamples.Typical(), TrayPanelPalette.Light); 1256var panel = new TrayPanel(state, TrayPanelPalette.Light); 1268var panel = new TrayPanel(TrayPanelSamples.Many(), TrayPanelPalette.Light) { MaxHeight = 400 }; 1287var panel = new TrayPanel(TrayPanelSamples.Typical(), TrayPanelPalette.Light); 1304var panel = new TrayPanel(state, TrayPanelPalette.Light); 1329var panel = new TrayPanel(TrayPanelSamples.Typical(), TrayPanelPalette.Light) { QuitVerb = verb }; 1341var scene = new TrayPanel(TrayPanelSamples.Typical(), TrayPanelPalette.Light).Scene;