using Spectre.Console.Rendering; namespace Spectre.Console.Examples; public static partial class Program { public static void Main() { var table = new Table().HideHeaders().NoBorder(); table.Title("[u][yellow]Spectre.Console[/] [b]Features[/][/]"); table.AddColumn("Feature", c => c.NoWrap().RightAligned().Width(10).PadRight(3)); table.AddColumn("Demonstration", c => c.PadRight(0)); table.AddEmptyRow(); // Colors table.AddRow( new Markup("[red]Colors[/]"), GetColorTable()); // Styles table.AddEmptyRow(); table.AddRow( new Markup("[red]OS[/]"), new Grid().Expand().AddColumns(3) .AddRow( "[bold green]Windows[/]", "[bold blue]macOS[/]", "[bold yellow]Linux[/]")); // Styles table.AddEmptyRow(); table.AddRow( "[red]Styles[/]", "All ansi styles: [bold]bold[/], [dim]dim[/], [italic]italic[/], [underline]underline[/], " + "[strikethrough]strikethrough[/], [reverse]reverse[/], and even [blink]blink[/]."); // Text table.AddEmptyRow(); table.AddRow( new Markup("[red]Text[/]"), new Markup("Word wrap text. Justify [green]left[/], [yellow]center[/] or [blue]right[/].")); table.AddEmptyRow(); table.AddRow( Text.Empty, GetTextGrid()); // Markup table.AddEmptyRow(); table.AddRow( "[red]Markup[/]", "[bold purple]Spectre.Console[/] supports a simple [i]bbcode[/] like " + "[b]markup[/] for [yellow]color[/], [underline]style[/], and emoji! " + ":thumbs_up: :red_apple: :ant: :bear: :baguette_bread: :bus:"); // Trees and tables table.AddEmptyRow(); table.AddRow( new Markup("[red]Tables and Trees[/]"), GetTreeTable()); // Charts table.AddRow( new Markup("[red]Charts[/]"), new Grid().Collapse().AddColumns(2).AddRow( new Panel(GetBreakdownChart()).BorderColor(Color.Grey), new Panel(GetBarChart()).BorderColor(Color.Grey))); // Exceptions table.AddEmptyRow(); table.AddRow( new Markup("[red]Exceptions[/]"), ExceptionGenerator.GenerateException().GetRenderable()); // Much more table.AddEmptyRow(); table.AddRow( "[red]+ Much more![/]", "Tables, Grids, Trees, Progress bars, Status, Bar charts, Calendars, Figlet, Images, Text prompts, " + "List boxes, Separators, Pretty exceptions, Canvas, CLI parsing"); table.AddEmptyRow(); // Render the table AnsiConsole.WriteLine(); AnsiConsole.Write(table); } private static IRenderable GetColorTable() { var colorTable = new Table().Collapse().HideHeaders().NoBorder(); colorTable.AddColumn("Desc", c => c.PadRight(3)).AddColumn("Colors", c => c.PadRight(0)); colorTable.AddRow( new Markup( "✓ [bold grey]NO_COLOR support[/]\n" + "✓ [bold green]3-bit color[/]\n" + "✓ [bold blue]4-bit color[/]\n" + "✓ [bold purple]8-bit color[/]\n" + "✓ [bold yellow]Truecolor (16.7 million)[/]\n" + "✓ [bold aqua]Automatic color conversion[/]"), new ColorBox(height: 6)); return colorTable; } private static IRenderable GetTextGrid() { var loremTable = new Grid(); var lorem = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque in metus sed sapien ultricies pretium a at justo. Maecenas luctus velit et auctor maximus."; loremTable.AddColumn(new GridColumn().LeftAligned()); loremTable.AddColumn(new GridColumn().Centered()); loremTable.AddColumn(new GridColumn().RightAligned()); loremTable.AddRow($"[green]{lorem}[/]", $"[yellow]{lorem}[/]", $"[blue]{lorem}[/]"); return loremTable; } private static IRenderable GetTreeTable() { var tree = new Tree("📁 src"); tree.AddNode("📁 foo").AddNode("📄 bar.cs"); tree.AddNode("📁 baz").AddNode("📁 qux").AddNode("📄 corgi.txt"); tree.AddNode("📄 waldo.xml"); var table = new Table().SimpleBorder().BorderColor(Color.Grey); table.AddColumn(new TableColumn("Overview")); table.AddColumn(new TableColumn("").Footer("[grey]3 Files, 225 KiB[/]")); table.AddRow(new Markup("[yellow]Files[/]"), tree); return new Table().RoundedBorder().Collapse().BorderColor(Color.Yellow) .AddColumn("Foo").AddColumn("Bar") .AddRow(new Text("Baz"), table) .AddRow("Qux", "Corgi"); } private static IRenderable GetBarChart() { return new BarChart() .AddItem("Apple", 32, Color.Green) .AddItem("Oranges", 13, Color.Orange1) .AddItem("Bananas", 22, Color.Yellow); } private static IRenderable GetBreakdownChart() { return new BreakdownChart() .ShowPercentage() .FullSize() .AddItem("C#", 82, Color.Green) .AddItem("PowerShell", 13, Color.Red) .AddItem("Bash", 5, Color.Blue); } }