Tables display structured data in rows and columns. Supports static, sortable, lazy-loaded, paginated, and infinite scroll variants.

Goshtoso Component

Go + Templ

Default Table

CustomerIDNameEmailMembership
2335Alice Brownalice.brown@gmail.comSilver
2338Bob Johnsonjohnson.bob@outlook.comGold
2342Sarah Adamss.adams@gmail.comGold

Striped Table

CustomerIDNameEmailMembership
2335Alice Brownalice.brown@penguinui.comSilver
2338Bob Johnsonjohnson.bob@penguinui.comGold
2342Sarah Adamss.adams@penguinui.comGold
2345Alex Martinezalex.martinez@penguinui.comGold
2346Ryan Thompsonryan.thompson@penguinui.comSilver
2349Emily Rodriguezemily.rodriguez@penguinui.comGold

Table with Action

CustomerIDNameEmailMembership
2335Alice Brownalice.brown@gmail.com
2338Bob Johnsonjohnson.bob@outlook.com
2342Sarah Adamss.adams@gmail.com

Table with Checkbox

CustomerIDNameEmailMembership
2335Alice Brownalice.brown@gmail.com
2338Bob Johnsonjohnson.bob@outlook.com
2342Sarah Adamss.adams@gmail.com

Users Table

UserIDMember SinceStatusAction
Alice Brown
Alice Brown alice.brown@gmail.com
2335Nov 14, 2021Active
Bob Johnson
Bob Johnson johnson.bob@penguinui.com
2338Aug 20, 2020Active
Ryan Thompson
Ryan Thompson ryan.thompson@penguinui.com
2346Feb 5, 2022Canceled
Emily Rodriguez
Emily Rodriguez emily.rodriguez@penguinui.com
2349Jun 14, 2022Active
Alex Martinez
Alex Martinez alex.martinez@penguinui.com
2345Sep 17, 2018Active

Sortable Table (click headers)

Click column headers to sort. Uses HTMX to fetch sorted data from the server.

CustomerID
Name
Email
Membership
2335Alice Brownalice.brown@penguinui.comSilver
2338Bob Johnsonjohnson.bob@penguinui.comGold
2342Sarah Adamss.adams@penguinui.comGold
2345Alex Martinezalex.martinez@penguinui.comGold
2346Ryan Thompsonryan.thompson@penguinui.comSilver
2349Emily Rodriguezemily.rodriguez@penguinui.comGold

Lazy-Loaded Table

Table body loads from the server via HTMX on page load.

CustomerIDNameEmailMembership
Loading...

Paginated Table

Navigate between pages with HTMX-powered pagination controls.

CustomerIDNameEmailMembership
2335Alice Brownalice.brown@penguinui.comSilver
2338Bob Johnsonjohnson.bob@penguinui.comGold
2342Sarah Adamss.adams@penguinui.comGold
Page 1 of 4

Filtered Table

Search and filter table data with HTMX-powered filter controls.

CustomerID
Name
Email
Membership
2335Alice Brownalice.brown@penguinui.comSilver
2338Bob Johnsonjohnson.bob@penguinui.comGold
2342Sarah Adamss.adams@penguinui.comGold
Page 1 of 4

Inline Filter Variant

Same filter controls, no bordered block, no collapsible toggle. Suitable for modal bodies or toolbar strips where the host already provides chrome.

CustomerIDNameEmailMembership
2335Alice Brownalice.brown@penguinui.comSilver
2338Bob Johnsonjohnson.bob@penguinui.comGold
2342Sarah Adamss.adams@penguinui.comGold
Page 1 of 4

Infinite Scroll Table

Scroll down in the container to automatically load more rows via HTMX.

CustomerIDNameEmailMembership
2335Alice Brownalice.brown@penguinui.comSilver
2338Bob Johnsonjohnson.bob@penguinui.comGold
2342Sarah Adamss.adams@penguinui.comGold
Usage Example
// Default Table
@table.Table(table.Config{
    Columns: []table.Column{
        {Key: "id", Label: "CustomerID"},
        {Key: "name", Label: "Name"},
        {Key: "email", Label: "Email"},
        {Key: "membership", Label: "Membership"},
    },
    Rows: rows,
})

// Sortable Table (HTMX)
@table.Table(table.Config{
    ID:           "sortable",
    HTMXEndpoint: "/api/components/table/rows",
    Columns: []table.Column{
        {Key: "id", Label: "CustomerID", Sortable: true},
        {Key: "name", Label: "Name", Sortable: true},
        {Key: "email", Label: "Email"},
        {Key: "membership", Label: "Membership", Sortable: true},
    },
    SortBy:  "id",
    SortDir: table.SortAsc,
    Rows:    rows,
})

// Lazy-Loaded Table (HTMX)
@table.Table(table.Config{
    ID:           "lazy",
    HTMXEndpoint: "/api/components/table/rows",
    LazyLoad:     true,
    Columns:      columns,
})

// Paginated Table
@table.Table(table.Config{
    ID:           "paginated",
    HTMXEndpoint: "/api/components/table/rows",
    Columns:      columns,
    Rows:         rows,
    Pagination:   &table.PaginationConfig{CurrentPage: 1, TotalPages: 4, PerPage: 3},
})

// Infinite Scroll Table
@table.Table(table.Config{
    ID:           "infinite",
    HTMXEndpoint: "/api/components/table/rows?variant=infinite",
    Columns:      columns,
    Rows:         rows,
    Pagination: &table.PaginationConfig{
        Mode:            table.PaginationInfiniteScroll,
        CurrentPage:     1,
        PerPage:         3,
        HasMore:         true,
        ContainerHeight: "300px",
    },
})

This site uses localStorage to remember your theme preference. No tracking cookies.