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(
147 references to TrayPanelPalette
Aspire.Tray.Tests (147)
src\Aspire.Tray\Common\TrayPanel.cs (17)
73private TrayPanelPalette _palette; 95public TrayPanel(TrayViewState state, TrayPanelPalette palette) 103public TrayPanelPalette Palette 744var palette = _palette; 1071private void AddHeader(List<PanelCommand> commands, TrayViewState state, TrayPanelPalette palette) 1089private void AddNotice(List<PanelCommand> commands, string notice, bool singleLine, double height, TrayPanelPalette palette) 1106private void AddEmptyState(List<PanelCommand> commands, DiscoveryState discovery, double top, TrayPanelPalette palette) 1133TrayViewState state, TrayPanelPalette palette) 1171double top, bool live, bool showPid, TrayPanelPalette palette) 1289double top, double height, TrayPanelPalette palette) 1361double top, TrayPanelPalette palette) 1414private void AddSettingsHeader(List<PanelCommand> commands, List<PanelHitTarget> targets, TrayPanelPalette palette) 1428double top, TrayPanelPalette palette) 1454private void AddAbout(List<PanelCommand> commands, PanelSettings settings, double top, TrayPanelPalette palette) 1473private void AddFooter(List<PanelCommand> commands, List<PanelHitTarget> targets, PanelRect footer, TrayPanelPalette palette) 1501private void AddInteractionFill(List<PanelCommand> commands, PanelTargetKey key, PanelRect bounds, TrayPanelPalette palette, bool includeFocus) 1585internal 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,
src\Aspire.Tray\Linux\LinuxTrayMenu.cs (1)
30var (summary, _) = TrayPanel.GetHeaderStatus(state, TrayPanelPalette.Dark);
src\Aspire.Tray\Linux\LinuxTrayPanel.cs (4)
154_panel = new(controller.State, TrayPanelPalette.Dark) 399private TrayPanelPalette ReadPalette() 404? TrayPanelPalette.Light : TrayPanelPalette.Dark;
TrayPanelTests.cs (119)
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); 830var scene = new TrayPanel(TrayPanelSamples.Errors(), TrayPanelPalette.Light).Scene; 862var scene = CreatePanel(name, TrayPanelPalette.Light).Scene; 885var scene = CreatePanel(name, TrayPanelPalette.Dark).Scene; 930var scene = CreatePanel("actions-open-in", TrayPanelPalette.Light).Scene; 942var scene = new TrayPanel(TrayPanelSamples.Typical(), TrayPanelPalette.Light).Scene; 964foreach (var palette in new[] { TrayPanelPalette.Light, TrayPanelPalette.Dark, 965TrayPanelPalette.FromSystemColors(new(0, 0, 0), new(255, 255, 255), new(26, 235, 255), new(63, 242, 63)) }) 999var scene = new TrayPanel(state, TrayPanelPalette.Light).Scene; 1004Assert.Equal(TrayPanel.GetHeaderStatus(state, TrayPanelPalette.Light).Text, status.Name); 1012var withNotice = new TrayPanel(TrayPanelSamples.Errors(), TrayPanelPalette.Light); 1013var without = new TrayPanel(TrayPanelSamples.Errors() with { Notice = null }, TrayPanelPalette.Light); 1074TrayPanelGlyphs.AddStatus(commands, glyph, box, TrayPanelPalette.Light); 1103TrayPanelGlyphs.AddIcon(commands, icon, box, TrayPanelPalette.Light.TextPrimary); 1112Assert.Equal(new PanelColor(0xF9, 0xF9, 0xFB), TrayPanelPalette.Light.Background); 1113Assert.Equal(new PanelColor(0x6A, 0x4B, 0xD6), TrayPanelPalette.Light.Accent); 1114Assert.Equal(new PanelColor(0, 0, 0, 20), TrayPanelPalette.Light.Separator); 1115Assert.Equal(new PanelColor(0x25, 0x25, 0x29), TrayPanelPalette.Dark.Background); 1116Assert.Equal(new PanelColor(255, 255, 255, 18), TrayPanelPalette.Dark.Hover); 1126var palette = name == "dark" ? TrayPanelPalette.Dark : TrayPanelPalette.Light; 1137Assert.True(TrayPanelPalette.ContrastRatio(label.Color, fill.Color) >= 4.5, $"{name}: {TrayPanelPalette.ContrastRatio(label.Color, fill.Color):F2}:1"); 1138Assert.True(TrayPanelPalette.ContrastRatio(palette.OnColor, PanelColor.FromRgba(0, 0, 0, 0.22).Over(palette.DangerFill)) >= 4.5); 1149var palette = name == "dark" ? TrayPanelPalette.Dark : TrayPanelPalette.Light; 1154Assert.All(backgrounds, background => Assert.True(TrayPanelPalette.ContrastRatio(text, background) >= 4.5, 1155$"{name}: {text.ToHex()} on {background.ToHex()} is {TrayPanelPalette.ContrastRatio(text, background):F2}:1")); 1157Assert.True(TrayPanelPalette.ContrastRatio(palette.OnColor, palette.DangerFill) >= 4.5); 1171private static TrayPanelPalette ContrastPalette(string name) => name switch 1173"light" => TrayPanelPalette.Light, 1174"dark" => TrayPanelPalette.Dark, 1175"light-contrast" => TrayPanelPalette.Light.WithIncreasedContrast(), 1176"dark-contrast" => TrayPanelPalette.Dark.WithIncreasedContrast(), 1177"hc-black" => TrayPanelPalette.FromSystemColors(new(0, 0, 0), new(255, 255, 255), new(26, 235, 255), new(63, 242, 63)), 1178"hc-white" => TrayPanelPalette.FromSystemColors(new(255, 255, 255), new(0, 0, 0), new(55, 0, 110), new(96, 0, 0)), 1179"hc-aquatic" => TrayPanelPalette.FromSystemColors(new(32, 32, 32), new(255, 255, 255), new(142, 227, 240), new(167, 167, 167)), 1180"hc-desert" => TrayPanelPalette.FromSystemColors(new(255, 250, 239), new(61, 61, 61), new(144, 57, 4), new(103, 103, 103)), 1181_ => TrayPanelPalette.FromSystemColors(new(0, 0, 0), new(255, 255, 255), new(26, 235, 255), new(40, 40, 40)) 1190var palette = ContrastPalette(name); 1199var ratio = TrayPanelPalette.ContrastRatio(mark, disc); 1200Assert.True(ratio >= TrayPanelPalette.MinimumMarkContrast, $"{name} {glyph}: {mark.ToHex()} on {disc.ToHex()} is {ratio:F2}:1"); 1221Assert.Equal([white, dark, white, white], Marks(TrayPanelPalette.Light)); 1222Assert.Equal([dark, dark, white, white], Marks(TrayPanelPalette.Dark)); 1224Assert.Equal(white, TrayPanelPalette.Light.OnColor); 1225Assert.Equal(white, TrayPanelPalette.Dark.OnColor); 1227static PanelColor[] Marks(TrayPanelPalette palette) 1234var palette = TrayPanelPalette.FromSystemColors(new(0, 0, 0), new(255, 255, 255), new(26, 235, 255), new(63, 242, 63)); 1247var svg = TrayPanelSvgRenderer.Render(CreatePanel(name, TrayPanelPalette.Dark).Scene); 1267foreach (var palette in new[] { TrayPanelPalette.Light, TrayPanelPalette.Dark }) 1301var scene = CreatePanel(name, TrayPanelPalette.Light).Scene; 1314var scene = new TrayPanel(state, TrayPanelPalette.Light).Scene; 1315var (status, _) = TrayPanel.GetHeaderStatus(state, TrayPanelPalette.Light); 1331var panel = new TrayPanel(TrayPanelSamples.Typical(), TrayPanelPalette.Light); 1349var panel = new TrayPanel(TrayPanelSamples.Typical(), TrayPanelPalette.Light); 1365var panel = new TrayPanel(state, TrayPanelPalette.Light); 1377var panel = new TrayPanel(TrayPanelSamples.Many(), TrayPanelPalette.Light) { MaxHeight = 400 }; 1396var panel = new TrayPanel(TrayPanelSamples.Typical(), TrayPanelPalette.Light); 1413var panel = new TrayPanel(state, TrayPanelPalette.Light); 1438var panel = new TrayPanel(TrayPanelSamples.Typical(), TrayPanelPalette.Light) { QuitVerb = verb }; 1450var scene = new TrayPanel(TrayPanelSamples.Typical(), TrayPanelPalette.Light).Scene;