3 instantiations of TrayPanelPalette
Aspire.Tray.Tests (3)
src\Aspire.Tray\Common\TrayPanelPalette.cs (3)
110
public static TrayPanelPalette Light { get; } =
new
(
139
public static TrayPanelPalette Dark { get; } =
new
(
190
PanelColor grayText) =>
new
(
147 references to TrayPanelPalette
Aspire.Tray.Tests (147)
src\Aspire.Tray\Common\TrayPanel.cs (17)
73
private
TrayPanelPalette
_palette;
95
public TrayPanel(TrayViewState state,
TrayPanelPalette
palette)
103
public
TrayPanelPalette
Palette
744
var
palette = _palette;
1071
private void AddHeader(List<PanelCommand> commands, TrayViewState state,
TrayPanelPalette
palette)
1089
private void AddNotice(List<PanelCommand> commands, string notice, bool singleLine, double height,
TrayPanelPalette
palette)
1106
private void AddEmptyState(List<PanelCommand> commands, DiscoveryState discovery, double top,
TrayPanelPalette
palette)
1133
TrayViewState state,
TrayPanelPalette
palette)
1171
double top, bool live, bool showPid,
TrayPanelPalette
palette)
1289
double top, double height,
TrayPanelPalette
palette)
1361
double top,
TrayPanelPalette
palette)
1414
private void AddSettingsHeader(List<PanelCommand> commands, List<PanelHitTarget> targets,
TrayPanelPalette
palette)
1428
double top,
TrayPanelPalette
palette)
1454
private void AddAbout(List<PanelCommand> commands, PanelSettings settings, double top,
TrayPanelPalette
palette)
1473
private void AddFooter(List<PanelCommand> commands, List<PanelHitTarget> targets, PanelRect footer,
TrayPanelPalette
palette)
1501
private void AddInteractionFill(List<PanelCommand> commands, PanelTargetKey key, PanelRect bounds,
TrayPanelPalette
palette, bool includeFocus)
1585
internal static (string Text, PanelColor Dot) GetHeaderStatus(TrayViewState state,
TrayPanelPalette
palette)
src\Aspire.Tray\Common\TrayPanelGlyphs.cs (2)
52
public static void AddStatus(List<PanelCommand> commands, PanelStatusGlyph glyph, PanelRect bounds,
TrayPanelPalette
palette)
204
public static void AddToggle(List<PanelCommand> commands, bool on, bool enabled, PanelRect bounds,
TrayPanelPalette
palette)
src\Aspire.Tray\Common\TrayPanelPalette.cs (4)
110
public static
TrayPanelPalette
Light { get; } = new(
139
public static
TrayPanelPalette
Dark { get; } = new(
172
public
TrayPanelPalette
WithIncreasedContrast() => this with
189
public static
TrayPanelPalette
FromSystemColors(PanelColor window, PanelColor windowText, PanelColor highlight,
src\Aspire.Tray\Linux\LinuxTrayMenu.cs (1)
30
var (summary, _) = TrayPanel.GetHeaderStatus(state,
TrayPanelPalette
.Dark);
src\Aspire.Tray\Linux\LinuxTrayPanel.cs (4)
154
_panel = new(controller.State,
TrayPanelPalette
.Dark)
399
private
TrayPanelPalette
ReadPalette()
404
?
TrayPanelPalette
.Light :
TrayPanelPalette
.Dark;
TrayPanelTests.cs (119)
33
private static TrayPanel CreatePanel(string name,
TrayPanelPalette
palette, double maxHeight = TrayPanel.DefaultMaxHeight)
70
var panel = CreatePanel(name,
TrayPanelPalette
.Light, maxHeight: 600);
93
var scene = CreatePanel(name,
TrayPanelPalette
.Dark).Scene;
111
var scene = CreatePanel(name,
TrayPanelPalette
.Light).Scene;
123
var commands = CreatePanel(name,
TrayPanelPalette
.Light).Scene.Commands;
131
var scene = new TrayPanel(TrayPanelSamples.Typical(),
TrayPanelPalette
.Light).Scene;
143
var panel = new TrayPanel(TrayPanelSamples.Typical(),
TrayPanelPalette
.Light);
157
var panel = new TrayPanel(TrayPanelSamples.Empty(),
TrayPanelPalette
.Light);
168
var panel = new TrayPanel(state,
TrayPanelPalette
.Light);
186
var panel = new TrayPanel(state,
TrayPanelPalette
.Light) { OpenInApplications = s_applications };
214
var panel = new TrayPanel(state,
TrayPanelPalette
.Light) { OpenInApplications = s_applications, FileManagerName = "File Explorer" };
245
var panel = new TrayPanel(state,
TrayPanelPalette
.Light);
265
var panel = new TrayPanel(state,
TrayPanelPalette
.Light);
285
var panel = new TrayPanel(state,
TrayPanelPalette
.Light) { OpenInApplications = s_applications };
315
var panel = new TrayPanel(state,
TrayPanelPalette
.Light) { OpenInApplications = s_applications };
342
var panel = new TrayPanel(state,
TrayPanelPalette
.Light);
352
var panel = new TrayPanel(state,
TrayPanelPalette
.Light);
365
var panel = new TrayPanel(state,
TrayPanelPalette
.Light) { MaxHeight = 400 };
379
var panel = new TrayPanel(state,
TrayPanelPalette
.Light);
384
Assert.Contains(panel.Scene.Commands.OfType<StrokePathCommand>(), stroke => stroke.Color ==
TrayPanelPalette
.Light.Focus);
391
var panel = new TrayPanel(state,
TrayPanelPalette
.Light);
407
var panel = new TrayPanel(state,
TrayPanelPalette
.Light);
418
var panel = new TrayPanel(state,
TrayPanelPalette
.Light);
432
var panel = new TrayPanel(state,
TrayPanelPalette
.Light);
449
var panel = new TrayPanel(state,
TrayPanelPalette
.Light);
466
var panel = new TrayPanel(TrayPanelSamples.Many(),
TrayPanelPalette
.Light) { MaxHeight = 480 };
489
var panel = new TrayPanel(state,
TrayPanelPalette
.Light) { MaxHeight = 400 };
502
var panel = new TrayPanel(state,
TrayPanelPalette
.Light) { MaxHeight = 400 };
515
Assert.Contains(panel.Scene.Commands.OfType<StrokePathCommand>(), stroke => stroke.Color ==
TrayPanelPalette
.Light.Focus);
523
var panel = new TrayPanel(state,
TrayPanelPalette
.Light);
543
var panel = new TrayPanel(TrayPanelSamples.Typical(),
TrayPanelPalette
.Light);
553
var panel = new TrayPanel(state,
TrayPanelPalette
.Light);
566
var panel = new TrayPanel(state,
TrayPanelPalette
.Light);
578
var panel = new TrayPanel(TrayPanelSamples.Typical(),
TrayPanelPalette
.Light);
592
var panel = new TrayPanel(TrayPanelSamples.Typical(),
TrayPanelPalette
.Light);
605
var panel = new TrayPanel(TrayPanelSamples.Typical(),
TrayPanelPalette
.Light);
618
var panel = new TrayPanel(state,
TrayPanelPalette
.Light);
630
var panel = new TrayPanel(TrayPanelSamples.Typical(),
TrayPanelPalette
.Light);
650
var panel = new TrayPanel(state,
TrayPanelPalette
.Light);
667
var panel = new TrayPanel(TrayPanelSamples.Typical(),
TrayPanelPalette
.Light);
694
var panel = new TrayPanel(TrayPanelSamples.Typical(),
TrayPanelPalette
.Light);
707
var panel = new TrayPanel(TrayPanelSamples.Typical(),
TrayPanelPalette
.Light);
714
text => text.Text == "Could not read launch at sign-in: denied" && text.Color ==
TrayPanelPalette
.Light.Danger);
720
var panel = new TrayPanel(TrayPanelSamples.Many(),
TrayPanelPalette
.Light) { MaxHeight = 400 };
742
var panel = new TrayPanel(state,
TrayPanelPalette
.Light);
763
TrayPanelGlyphs.AddToggle(commands, on, enabled: true, box,
TrayPanelPalette
.Light);
772
var panel = new TrayPanel(TrayPanelSamples.Typical(),
TrayPanelPalette
.Light);
785
var panel = new TrayPanel(TrayPanelSamples.Many(),
TrayPanelPalette
.Light) { MaxHeight = 400 };
802
var (text, _) = TrayPanel.GetHeaderStatus(new((DiscoveryState)discovery, [], ""),
TrayPanelPalette
.Light);
810
Assert.Equal("3 running · 1 needs attention", TrayPanel.GetHeaderStatus(TrayPanelSamples.Typical(),
TrayPanelPalette
.Light).Text);
811
Assert.Equal("No AppHosts running", TrayPanel.GetHeaderStatus(TrayPanelSamples.Empty(),
TrayPanelPalette
.Light).Text);
813
TrayPanel.GetHeaderStatus(TrayPanelSamples.Errors(),
TrayPanelPalette
.Light).Text);
830
var scene = new TrayPanel(TrayPanelSamples.Errors(),
TrayPanelPalette
.Light).Scene;
862
var scene = CreatePanel(name,
TrayPanelPalette
.Light).Scene;
885
var scene = CreatePanel(name,
TrayPanelPalette
.Dark).Scene;
930
var scene = CreatePanel("actions-open-in",
TrayPanelPalette
.Light).Scene;
942
var scene = new TrayPanel(TrayPanelSamples.Typical(),
TrayPanelPalette
.Light).Scene;
964
foreach (
var
palette in new[] {
TrayPanelPalette
.Light,
TrayPanelPalette
.Dark,
965
TrayPanelPalette
.FromSystemColors(new(0, 0, 0), new(255, 255, 255), new(26, 235, 255), new(63, 242, 63)) })
999
var scene = new TrayPanel(state,
TrayPanelPalette
.Light).Scene;
1004
Assert.Equal(TrayPanel.GetHeaderStatus(state,
TrayPanelPalette
.Light).Text, status.Name);
1012
var withNotice = new TrayPanel(TrayPanelSamples.Errors(),
TrayPanelPalette
.Light);
1013
var without = new TrayPanel(TrayPanelSamples.Errors() with { Notice = null },
TrayPanelPalette
.Light);
1074
TrayPanelGlyphs.AddStatus(commands, glyph, box,
TrayPanelPalette
.Light);
1103
TrayPanelGlyphs.AddIcon(commands, icon, box,
TrayPanelPalette
.Light.TextPrimary);
1112
Assert.Equal(new PanelColor(0xF9, 0xF9, 0xFB),
TrayPanelPalette
.Light.Background);
1113
Assert.Equal(new PanelColor(0x6A, 0x4B, 0xD6),
TrayPanelPalette
.Light.Accent);
1114
Assert.Equal(new PanelColor(0, 0, 0, 20),
TrayPanelPalette
.Light.Separator);
1115
Assert.Equal(new PanelColor(0x25, 0x25, 0x29),
TrayPanelPalette
.Dark.Background);
1116
Assert.Equal(new PanelColor(255, 255, 255, 18),
TrayPanelPalette
.Dark.Hover);
1126
var
palette = name == "dark" ?
TrayPanelPalette
.Dark :
TrayPanelPalette
.Light;
1137
Assert.True(
TrayPanelPalette
.ContrastRatio(label.Color, fill.Color) >= 4.5, $"{name}: {
TrayPanelPalette
.ContrastRatio(label.Color, fill.Color):F2}:1");
1138
Assert.True(
TrayPanelPalette
.ContrastRatio(palette.OnColor, PanelColor.FromRgba(0, 0, 0, 0.22).Over(palette.DangerFill)) >= 4.5);
1149
var
palette = name == "dark" ?
TrayPanelPalette
.Dark :
TrayPanelPalette
.Light;
1154
Assert.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"));
1157
Assert.True(
TrayPanelPalette
.ContrastRatio(palette.OnColor, palette.DangerFill) >= 4.5);
1171
private 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))
1190
var
palette = ContrastPalette(name);
1199
var ratio =
TrayPanelPalette
.ContrastRatio(mark, disc);
1200
Assert.True(ratio >=
TrayPanelPalette
.MinimumMarkContrast, $"{name} {glyph}: {mark.ToHex()} on {disc.ToHex()} is {ratio:F2}:1");
1221
Assert.Equal([white, dark, white, white], Marks(
TrayPanelPalette
.Light));
1222
Assert.Equal([dark, dark, white, white], Marks(
TrayPanelPalette
.Dark));
1224
Assert.Equal(white,
TrayPanelPalette
.Light.OnColor);
1225
Assert.Equal(white,
TrayPanelPalette
.Dark.OnColor);
1227
static PanelColor[] Marks(
TrayPanelPalette
palette)
1234
var
palette =
TrayPanelPalette
.FromSystemColors(new(0, 0, 0), new(255, 255, 255), new(26, 235, 255), new(63, 242, 63));
1247
var svg = TrayPanelSvgRenderer.Render(CreatePanel(name,
TrayPanelPalette
.Dark).Scene);
1267
foreach (
var
palette in new[] {
TrayPanelPalette
.Light,
TrayPanelPalette
.Dark })
1301
var scene = CreatePanel(name,
TrayPanelPalette
.Light).Scene;
1314
var scene = new TrayPanel(state,
TrayPanelPalette
.Light).Scene;
1315
var (status, _) = TrayPanel.GetHeaderStatus(state,
TrayPanelPalette
.Light);
1331
var panel = new TrayPanel(TrayPanelSamples.Typical(),
TrayPanelPalette
.Light);
1349
var panel = new TrayPanel(TrayPanelSamples.Typical(),
TrayPanelPalette
.Light);
1365
var panel = new TrayPanel(state,
TrayPanelPalette
.Light);
1377
var panel = new TrayPanel(TrayPanelSamples.Many(),
TrayPanelPalette
.Light) { MaxHeight = 400 };
1396
var panel = new TrayPanel(TrayPanelSamples.Typical(),
TrayPanelPalette
.Light);
1413
var panel = new TrayPanel(state,
TrayPanelPalette
.Light);
1438
var panel = new TrayPanel(TrayPanelSamples.Typical(),
TrayPanelPalette
.Light) { QuitVerb = verb };
1450
var scene = new TrayPanel(TrayPanelSamples.Typical(),
TrayPanelPalette
.Light).Scene;