Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message
kinetix-table-repeater
kinetix-table-repeater
happones/kinetix
claude-code
table-repeater
forms
autosave
relationships
summaries
csv-export

A Repeater rendered as an editable table — rows you add/edit/delete live, with summaries and CSV export. Deferred (saved with the form) by default; opt-in per-row autosave to a relation. Activates when building line-items / editable grids / inventory tables in a form.

Install
php artisan boost:add-skill happones/kinetix

Save this content to: .claude/skills/kinetix-table-repeater/SKILL.md

# Kinetix Table Repeater

## When to Apply

Activate this skill when:
- Building an editable table of rows inside a form (line items, inventory,
  settings grid) where users click "Add" to append rows and edit cells inline.
- You want footer summaries / CSV export on a repeater.

## Documentation

For full details, reference `docs/table-repeater.md` (published at https://happones.github.io/kinetix/table-repeater).

## Deferred (default — saved with the form)

```php
use Happones\Kinetix\Forms\Components\{TableRepeater, TextInput, NumberField};

TableRepeater::make('items')
    ->columns([
        TextInput::make('name')->required(),
        NumberField::make('qty'),
        NumberField::make('price'),
    ])
    ->summarize(['qty' => 'sum', 'price' => 'sum'])
    ->exportable();
```

Value is an array of rows, validated/saved with the parent form. `columns()` is
an alias of `schema()`; any field type works as a column. `summarize()` →
`sum`/`avg`/`count`/`min`/`max` footer per column.

## Autosave (per-row, to a relation)

```php
TableRepeater::make('items')
    ->relationship('items')   // hasMany/hasOne on the form record
    ->autosave()
    ->columns([TextInput::make('name'), NumberField::make('qty')]);
```

Each add/edit (debounced)/delete persists immediately. A signed descriptor
(parent + relation + writable-column allowlist) guards the endpoint, so only the
declared columns are written on that relation.

## Frontend

`<KinetixTableRepeater>` is rendered automatically by `KinetixForm` for the
`table-repeater` field type. Cells reuse `KinetixFormSchema`, so all field types
render. `useKinetixTableRepeater()` → `{ create, update, remove }` backs autosave.
i18n: `add_item`, `remove`, `export`, `table_repeater_empty`.

Kinetix Table Repeater

When to Apply

Activate this skill when:

  • Building an editable table of rows inside a form (line items, inventory, settings grid) where users click "Add" to append rows and edit cells inline.
  • You want footer summaries / CSV export on a repeater.

Documentation

For full details, reference docs/table-repeater.md (published at https://happones.github.io/kinetix/table-repeater).

Deferred (default — saved with the form)

use Happones\Kinetix\Forms\Components\{TableRepeater, TextInput, NumberField};

TableRepeater::make('items')
    ->columns([
        TextInput::make('name')->required(),
        NumberField::make('qty'),
        NumberField::make('price'),
    ])
    ->summarize(['qty' => 'sum', 'price' => 'sum'])
    ->exportable();

Value is an array of rows, validated/saved with the parent form. columns() is an alias of schema(); any field type works as a column. summarize() → sum/avg/count/min/max footer per column.

Autosave (per-row, to a relation)

TableRepeater::make('items')
    ->relationship('items')   // hasMany/hasOne on the form record
    ->autosave()
    ->columns([TextInput::make('name'), NumberField::make('qty')]);

Each add/edit (debounced)/delete persists immediately. A signed descriptor (parent + relation + writable-column allowlist) guards the endpoint, so only the declared columns are written on that relation.

Frontend

<KinetixTableRepeater> is rendered automatically by KinetixForm for the table-repeater field type. Cells reuse KinetixFormSchema, so all field types render. useKinetixTableRepeater() → { create, update, remove } backs autosave. i18n: add_item, remove, export, table_repeater_empty.

Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
middlewares/firewall
qubiqx/montapacking
nyoncode/laravel-package-console
pnscripts/filament-broadquill-lite
pnscripts/laravel-sentfold-lite
vleap/mx-sdk-laravel-internal
twidpay/utils
htetmyathlaing/scout-elasticsearch-driver
artisan-toolbox/front-awesome
ls/client-assistant
users-au/laravel-client
robertmarney/lara-hierarchial-collections
simonschaufi/rule-doc-generator
emissaoja/emissaoja
blackbricksoftware/gravityforms-civicrm-form-processor
al-rahabi/fancy-crud
jinas/dhivatar-component
mltstephane/laravel-quality
bernskiold/laravel-talentlms
bernskioldmedia/laravel-form-architect