Backend-driven dynamic tables for Laravel + Inertia.js.
Columns, sorting, search, and pagination - all from a single PHP class.
composer require forjedio/inertia-table+npm install @forjedio/inertia-table-reactornpm install @forjedio/inertia-table-vueDefine columns, sorting, and search in PHP. The frontend handles the rest.
use Forjed\InertiaTable\Table;
use Forjed\InertiaTable\Column;
use Forjed\InertiaTable\Columns\{
LinkColumn, EnumColumn,
DateTimeColumn, ActionsColumn
};
class ServerTable extends Table
{
protected function columns(): array
{
return [
LinkColumn::make('name', 'Name')
->route('servers.show', ['server' => ':id'])
->sortable(),
EnumColumn::make('status', 'Status')
->sortable(),
DateTimeColumn::make('created_at', 'Created')
->sortable(),
ActionsColumn::make(),
Column::data('id'),
];
}
}import { InertiaTable } from '@forjedio/inertia-table-react';
export default function Servers({ servers }) {
return (
<InertiaTable
tableData={servers}
actions={(row) => (
<button onClick={() => edit(row)}>
Edit
</button>
)}
/>
);
}
// Search, sorting, pagination
// all work automatically.A complete table system - not just a component.
Text, Badge, Date, DateTime, Link, Copyable, Icon, Component, Enum, and Actions - all pre-configured with sensible defaults.
Column definitions, sorting rules, search fields, and display formatting all live in one PHP class. No duplication.
Every element is replaceable - cells, headers, search, pagination, empty state, toolbar. Via render props or slots.
A tableSettings hook system enables live WebSocket updates, analytics, or any custom behaviour.
Use the useTable hook with shadcn components for a fully branded table. Or use the default UI with Tailwind overrides.
All default styles include dark: variants. Works automatically with your Tailwind dark mode configuration.
One Composer install, one npm install, one PHP class - you have a complete table.
Read the docs