using System.Linq;
using H5.Core;
using Tesserae;
using static H5.Core.dom;
using static Tesserae.UI;
namespace Tesserae.Tests
{
internal static class App
{
private static IComponent RenderGradientStack(string gradientName, string gradientVar)
{
var textColor = "white";
return Stack().Children(
HStack().NoWrap().Background(gradientVar).Children(
Button(gradientName).Foreground(textColor).NoBackground().W(10).Grow().OnClick(() =>
{
Clipboard.Copy($"Theme.Gradients.{gradientName}");
})
)
).MB(8);
}
private static void Main()
{
var allGradients = new (string Name, string Value)[]
{
(nameof(Theme.Gradients.Lime), Theme.Gradients.Lime),
(nameof(Theme.Gradients.Red), Theme.Gradients.Red),
(nameof(Theme.Gradients.Orange), Theme.Gradients.Orange),
(nameof(Theme.Gradients.Yellow), Theme.Gradients.Yellow),
(nameof(Theme.Gradients.Green), Theme.Gradients.Green),
(nameof(Theme.Gradients.Teal), Theme.Gradients.Teal),
(nameof(Theme.Gradients.Blue), Theme.Gradients.Blue),
(nameof(Theme.Gradients.Purple), Theme.Gradients.Purple),
(nameof(Theme.Gradients.Magenta), Theme.Gradients.Magenta),
(nameof(Theme.Gradients.AI), Theme.Gradients.AI),
};
var grid = Grid(1.fr(), 1.fr(), 1.fr()).Gap(8.px());
void Render()
{
grid.Children(
VStack().Children(allGradients.Select(g => RenderGradientStack(g.Name, g.Value)).ToArray())
);
}
Render();
Theme.OnThemeChanged += () => window.setTimeout(_ => Render(), 1);
document.body.style.overflow = "hidden";
MountCenteredToBody(grid);
}
}
}