VVibeFlui

Tables

Tables describe list and data-grid style UI generated from schema.

VibeFlui tables are powered by TanStack Table and can render static rows, provider-backed server rows, nested response data, search, filters, sorting, pagination, row selection, bulk actions, row actions, column visibility, export controls, persisted table state, custom renderers, computed columns, and loading/empty/error states.

Basic table

TS
export const usersSchema = {
  resource: "users",
  identity: {
    key: "id",
    param: "id"
  },
  table: {
    columns: [
      { key: "name", label: "Name", sortable: true, searchable: true },
      { key: "email", label: "Email", type: "email", searchable: true },
      { key: "status", label: "Status", type: "custom", renderer: "StatusBadge" }
    ],
    search: {
      enabled: true,
      placeholder: "Search users..."
    },
    pagination: {
      enabled: true,
      pageSize: 10
    }
  },
  registry: {
    renderers: ["StatusBadge"]
  }
} as const;

Defaults

FeatureDefault
table.enabledtrue
table.moderoot mode; defaults to "server" unless mode or dataMode sets "static"
table.engine"tanstack-table"
table.actionGroupingtrue
table.rowNumberenabled unless explicitly false
table.states.loading.textLoading...
table.states.empty.textNo data available.
load error fallbackmessages.defaults.loadError, defaulting to Unable to load data.
table.exportenabled by runtime when not false
export filenameschema.resource or table-data

Table modes

ModeBehavior
staticVibeFlui filters, sorts, and paginates client-side.
serverVibeFlui builds query state and expects the provider/host to return filtered rows.

Rendered structure

The table can include:

  • export and column visibility controls
  • global search
  • filters
  • create action
  • selected-row count
  • bulk action buttons
  • row number column
  • row action column
  • row selection column
  • schema columns
  • pagination footer

Subpages