namespace TerminalUI.Color;

public static class Color256Colors
{
    public static class Backgrounds
    {
        public static readonly Color256 Black = new(0, ColorType.Background);
        public static readonly Color256 Blue = new(12, ColorType.Background);
        public static readonly Color256 Cyan = new(14, ColorType.Background);
        public static readonly Color256 DarkBlue = new(4, ColorType.Background);
        public static readonly Color256 DarkCyan = new(6, ColorType.Background);
        public static readonly Color256 DarkGray = new(8, ColorType.Background);
        public static readonly Color256 DarkGreen = new(2, ColorType.Background);
        public static readonly Color256 DarkMagenta = new(5, ColorType.Background);
        public static readonly Color256 DarkRed = new(1, ColorType.Background);
        public static readonly Color256 DarkYellow = new(3, ColorType.Background);
        public static readonly Color256 Gray = new(7, ColorType.Background);
        public static readonly Color256 Green = new(10, ColorType.Background);
        public static readonly Color256 Magenta = new(13, ColorType.Background);
        public static readonly Color256 Red = new(9, ColorType.Background);
        public static readonly Color256 White = new(15, ColorType.Background);
        public static readonly Color256 Yellow = new(11, ColorType.Background);
    }
    public static class Foregrounds
    {
        public static readonly Color256 Black = new(0, ColorType.Foreground);
        public static readonly Color256 Blue = new(12, ColorType.Foreground);
        public static readonly Color256 Cyan = new(14, ColorType.Foreground);
        public static readonly Color256 DarkBlue = new(4, ColorType.Foreground);
        public static readonly Color256 DarkCyan = new(6, ColorType.Foreground);
        public static readonly Color256 DarkGray = new(8, ColorType.Foreground);
        public static readonly Color256 DarkGreen = new(2, ColorType.Foreground);
        public static readonly Color256 DarkMagenta = new(5, ColorType.Foreground);
        public static readonly Color256 DarkRed = new(1, ColorType.Foreground);
        public static readonly Color256 DarkYellow = new(3, ColorType.Foreground);
        public static readonly Color256 Gray = new(7, ColorType.Foreground);
        public static readonly Color256 Green = new(10, ColorType.Foreground);
        public static readonly Color256 Magenta = new(13, ColorType.Foreground);
        public static readonly Color256 Red = new(9, ColorType.Foreground);
        public static readonly Color256 White = new(15, ColorType.Foreground);
        public static readonly Color256 Yellow = new(11, ColorType.Foreground);
    }
}

public static class ConsoleColors
{
    public static class Backgrounds
    {
        public static readonly ConsoleColor Black = new(System.ConsoleColor.Black, ColorType.Background);
        public static readonly ConsoleColor Blue = new(System.ConsoleColor.Blue, ColorType.Background);
        public static readonly ConsoleColor Cyan = new(System.ConsoleColor.Cyan, ColorType.Background);
        public static readonly ConsoleColor DarkBlue = new(System.ConsoleColor.DarkBlue, ColorType.Background);
        public static readonly ConsoleColor DarkCyan = new(System.ConsoleColor.DarkCyan, ColorType.Background);
        public static readonly ConsoleColor DarkGray = new(System.ConsoleColor.DarkGray, ColorType.Background);
        public static readonly ConsoleColor DarkGreen = new(System.ConsoleColor.DarkGreen, ColorType.Background);
        public static readonly ConsoleColor DarkMagenta = new(System.ConsoleColor.DarkMagenta, ColorType.Background);
        public static readonly ConsoleColor DarkRed = new(System.ConsoleColor.DarkRed, ColorType.Background);
        public static readonly ConsoleColor DarkYellow = new(System.ConsoleColor.DarkYellow, ColorType.Background);
        public static readonly ConsoleColor Gray = new(System.ConsoleColor.Gray, ColorType.Background);
        public static readonly ConsoleColor Green = new(System.ConsoleColor.Green, ColorType.Background);
        public static readonly ConsoleColor Magenta = new(System.ConsoleColor.Magenta, ColorType.Background);
        public static readonly ConsoleColor Red = new(System.ConsoleColor.Red, ColorType.Background);
        public static readonly ConsoleColor White = new(System.ConsoleColor.White, ColorType.Background);
        public static readonly ConsoleColor Yellow = new(System.ConsoleColor.Yellow, ColorType.Background);
    }
    public static class Foregrounds
    {
        public static readonly ConsoleColor Black = new(System.ConsoleColor.Black, ColorType.Foreground);
        public static readonly ConsoleColor Blue = new(System.ConsoleColor.Blue, ColorType.Foreground);
        public static readonly ConsoleColor Cyan = new(System.ConsoleColor.Cyan, ColorType.Foreground);
        public static readonly ConsoleColor DarkBlue = new(System.ConsoleColor.DarkBlue, ColorType.Foreground);
        public static readonly ConsoleColor DarkCyan = new(System.ConsoleColor.DarkCyan, ColorType.Foreground);
        public static readonly ConsoleColor DarkGray = new(System.ConsoleColor.DarkGray, ColorType.Foreground);
        public static readonly ConsoleColor DarkGreen = new(System.ConsoleColor.DarkGreen, ColorType.Foreground);
        public static readonly ConsoleColor DarkMagenta = new(System.ConsoleColor.DarkMagenta, ColorType.Foreground);
        public static readonly ConsoleColor DarkRed = new(System.ConsoleColor.DarkRed, ColorType.Foreground);
        public static readonly ConsoleColor DarkYellow = new(System.ConsoleColor.DarkYellow, ColorType.Foreground);
        public static readonly ConsoleColor Gray = new(System.ConsoleColor.Gray, ColorType.Foreground);
        public static readonly ConsoleColor Green = new(System.ConsoleColor.Green, ColorType.Foreground);
        public static readonly ConsoleColor Magenta = new(System.ConsoleColor.Magenta, ColorType.Foreground);
        public static readonly ConsoleColor Red = new(System.ConsoleColor.Red, ColorType.Foreground);
        public static readonly ConsoleColor White = new(System.ConsoleColor.White, ColorType.Foreground);
        public static readonly ConsoleColor Yellow = new(System.ConsoleColor.Yellow, ColorType.Foreground);
    }
}