PHPackages                             toolbelt/inertia-table - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. toolbelt/inertia-table

ActiveLibrary

toolbelt/inertia-table
======================

Server-driven data tables for Laravel and Inertia.js.

v0.2.0(yesterday)06↑900%MITPHPPHP ^8.3CI passing

Since Aug 10Pushed todayCompare

[ Source](https://github.com/thienbd203/inertia-table)[ Packagist](https://packagist.org/packages/toolbelt/inertia-table)[ Docs](https://github.com/thienbd203/inertia-table)[ GitHub Sponsors](https://github.com/Toolbelt)[ RSS](/packages/toolbelt-inertia-table/feed)WikiDiscussions master Synced today

READMEChangelogDependencies (14)Versions (7)Used By (0)

Musing Inertia Table
====================

[](#musing-inertia-table)

[![PHP tests](https://github.com/thienbd203/inertia-table/actions/workflows/run-tests.yml/badge.svg)](https://github.com/thienbd203/inertia-table/actions/workflows/run-tests.yml)[![JavaScript tests](https://github.com/thienbd203/inertia-table/actions/workflows/run-js-tests.yml/badge.svg)](https://github.com/thienbd203/inertia-table/actions/workflows/run-js-tests.yml)[![Latest Version on Packagist](https://camo.githubusercontent.com/86f843d7d87dde14febe1babf7506f2b45b7a57467df2288ca8260a5058e13cf/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f6d7573696e672f696e65727469612d7461626c653f7374796c653d666c61742d737175617265)](https://packagist.org/packages/musing/inertia-table)[![Total Downloads](https://camo.githubusercontent.com/fe92aa852dffecd6478c872f675a04b80211047baef42b1698043dc058d0b326/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64742f6d7573696e672f696e65727469612d7461626c653f7374796c653d666c61742d737175617265)](https://packagist.org/packages/musing/inertia-table)

**Server-driven data tables for Laravel and Inertia.js.** Define the table once in PHP—columns, sorting, search, filters and actions—and render it in Vue with one component.

Toolbelt keeps the server authoritative. The browser can only request capabilities declared by the table, URL state is namespaced per table, and query execution is powered by [Spatie Laravel Query Builder](https://spatie.be/docs/laravel-query-builder/v7/introduction).

Warning

The package is actively developed before `v1.0`. Please expect API changes between minor releases.

Highlights
----------

[](#highlights)

- PHP-first definitions for columns, filters, row actions and bulk actions.
- Allowlisted search, sort and filter queries—never raw client input in SQL.
- A ready-to-use Vue `` built from shadcn-vue-style source and Reka UI primitives.
- Text, numeric, set, boolean and date filters, including single-date and date-range calendars.
- Per-table query-string state, Inertia partial reloads, pagination, column visibility and current-page selection.
- Presentation helpers for badges, dates, images, links, tooltips, alignment and Tailwind classes.
- Slots and headless composables when the default renderer needs an escape hatch.

Requirements
------------

[](#requirements)

LayerRequirementPHP8.3+Laravel12 or 13InertiaLaravel 2 or 3; Vue 3.4+Query engineSpatie Laravel Query Builder 7Frontend peersTailwind CSS 4.1+, Reka UI 2.10+, `@lucide/vue` 1.30+Installation
------------

[](#installation)

Install the Laravel core and Vue renderer:

```
composer require musing/inertia-table
npm install @musing/inertia-table-vue
```

Releases
--------

[](#releases)

The Laravel package is distributed through Packagist and the Vue renderer through npm. A pushed Git tag in the form `vX.Y.Z` is the release trigger. The tag must match the `version` in `package.json`.

Before the first release, submit `https://github.com/thienbd203/inertia-table` to Packagist and add an `NPM_TOKEN` repository secret with permission to publish `@musing/inertia-table-vue`. The release workflow runs PHP and JavaScript checks, then publishes the Vue package with npm provenance.

```
npm version 0.1.1 --no-git-tag-version
git add package.json package-lock.json
git commit -m "chore: release v0.1.1"
git tag v0.1.1
git push origin main --follow-tags
```

Publish configuration only when you want to change pagination or debounce defaults:

```
php artisan vendor:publish --tag=inertia-table-config
```

```
// config/inertia-table.php
return [
    'per_page' => 25,
    'per_page_options' => [10, 25, 50, 100],
    'debounce' => 300,
];
```

### Tailwind CSS v4

[](#tailwind-css-v4)

The renderer contains Vue source that Tailwind must scan. Add this to the host application's stylesheet:

```
/* resources/css/app.css */
@source '../../node_modules/@musing/inertia-table-vue/resources/js/**/*.vue';
```

The package uses your existing shadcn/Tailwind CSS variables. It does not require an application `@/components/ui` alias.

Quick start
-----------

[](#quick-start)

Create a table definition. This is the source of truth for what users can do.

```
