Skip to content

Table Widget

Displays data in rows and columns.

Import

zig
const tui = @import("tui");
// Define your row type
const Row = struct { id: []const u8, name: []const u8 };
// Instantiate the generic type
const Table = tui.Table(Row);

Usage

zig
// Data
const rows = &[_]Row{
    .{ .id = "1", .name = "Alice" },
    .{ .id = "2", .name = "Bob" },
};

const cols = &[_]tui.table.Column{
    .{ .header = "ID", .width = .{ .fixed = 5 } },
    .{ .header = "Name", .width = .{ .fixed = 20 } },
};

// Renderer function
fn renderCell(row: Row, col: usize, buf: []u8) []const u8 {
    return switch (col) {
        0 => row.id,
        1 => row.name,
        else => "",
    };
}

// Initialize
var table = Table.init(cols, rows, renderCell);

Features

  • Column headers
  • Row selection
  • External data source (slices)

Released under the MIT License.