laif-ds 1.0.5-app-data-grid.104 → 1.0.5-app-data-grid.108

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/CHANGELOG.md CHANGED
@@ -9,7 +9,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
9
9
 
10
10
  ### 🚀 Added
11
11
 
12
- - **AppDataGrid**: New data grid, the successor to `DataTable`. Columns are declared with the `createGrid*Column` builders (string, number, boolean, date, date-time, single/multi select, computed, display, action, row menu, column groups). Filters live in a filter row inside the columns by default (`filterMode="row"`) or in a panel (`filterMode="panel"`, work in progress), can be lifted outside the grid (`filters`, `GridFilterChips`, `useGridFilters`), and application-declared filter controls are supported (`filterControls`); a `toolbar.resetFilters` slot restores filters and search to the page's own defaults. Server mode via `onQueryChange`, fired only on search/sort/filter/page changes and debounced by `debounceTime`; `paginated` mode — with an AppSelect page-size picker, a "Page i/N" indicator and a default `pageSize` of 25 — or an `infinite` source; `groupBy` grouping with aggregated cells; row selection with a page-selection bar for bulk actions; column pinning, resizing and reordering, notified through `onColumnWidthsChange` / `onColumnOrderChange`; `virtualized` rendering; `density` and full screen, with ghost toolbar buttons for the filter row, column visibility and full screen shown by default and individually disableable; saved views capturing filters, search, sorting, density, column visibility, widths and order (`preset`, `readGridViewPreset`, `createInMemoryGridViewStore`); `i18n` (`defaultGridI18n`); loading, empty and error/retry states; a polite live region announcing result changes. See `AppDataGrid.md`
12
+ - **AppDataGrid**: New data grid, the successor to `DataTable`. Columns are declared with the `createGrid*Column` builders (string, number, boolean, date, date-time, single/multi select, computed, display, action, row menu, column groups). Filters live in a filter row inside the columns by default (`filterMode="row"`) or in a panel (`filterMode="panel"`, work in progress), can be lifted outside the grid (`filters`, `GridFilterChips`, `useGridFilters`), and application-declared filter controls are supported (`filterControls`); a `toolbar.resetFilters` slot restores filters and search to the page's own defaults. Server mode via `onQueryChange`, fired only on search/sort/filter/page changes and debounced by `debounceTime`; `paginated` mode — with an AppSelect page-size picker, a "Page i/N" indicator and a default `pageSize` of 25 — or an `infinite` source; `groupBy` grouping with aggregated cells; row selection with a page-selection bar for bulk actions; column pinning, resizing and reordering, notified through `onColumnWidthsChange` / `onColumnOrderChange` and capturable in saved views; `virtualized` rendering; `density` and full screen, with ghost toolbar buttons for the filter row, column visibility and full screen shown by default and individually disableable; saved views capturing filters, search, sorting, density, column visibility, widths and order (`preset`, `readGridViewPreset`, `createInMemoryGridViewStore`); `i18n` (`defaultGridI18n`); loading, empty and error/retry states; a polite live region announcing result changes. See `AppDataGrid.md`
13
13
  - **DataTable**: The filter-option getters (`getStringFilterOptions`, `getNumberFilterOptions`, …), `defaultDataTableI18n` / `italianDataTableI18n` and the service helpers (`applyClientSideFilter`, `buildSearchFilter`, …) are now exported from the package root
14
14
  - **designTokens**: The shared design-token object is now exported from the package root, including the new `table` (row/header heights, cell padding) and `tableZ` (z-index layers) entries
15
15
  - **Button**: New `icon-xs` size
@@ -1,5 +1,5 @@
1
1
  "use client";
2
- var e = {};
2
+ var e = { exports: {} };
3
3
  export {
4
- e as __exports
4
+ e as __module
5
5
  };
@@ -1,5 +1,5 @@
1
1
  "use client";
2
- var e = { exports: {} };
2
+ var e = {};
3
3
  export {
4
- e as __module
4
+ e as __exports
5
5
  };
@@ -1,9 +1,9 @@
1
1
  {
2
2
  "schemaVersion": "1.0.0",
3
- "generatedAt": "2026-09-30T12:51:53.069Z",
3
+ "generatedAt": "2026-09-30T14:07:52.586Z",
4
4
  "package": {
5
5
  "name": "laif-ds",
6
- "version": "1.0.5-app-data-grid.104"
6
+ "version": "1.0.5-app-data-grid.108"
7
7
  },
8
8
  "summary": {
9
9
  "scannedFiles": 502,
@@ -21,7 +21,7 @@ Design rules that shape the whole API:
21
21
  - **Client vs server is a type-level union.** `AppDataGridProps<TData>` is `GridClientProps<TData> |
22
22
  GridServerProps<TData>`. Grouping lives only on the client branch; `onQueryChange`, `paginated`,
23
23
  `serverMode`, `serverConfig` and `initialState` live only on the server branch. Mixing them is a
24
- compile error (see [Cosa i tipi rifiutano](#cosa-i-tipi-rifiutano-what-the-types-reject)).
24
+ compile error (see [What the types reject](#what-the-types-reject)).
25
25
  - **Controlled when passed, uncontrolled when omitted** for `density`, `filters`, `columnVisibility`
26
26
  and `rowSelection`.
27
27
 
@@ -67,7 +67,7 @@ This file holds the overview, the full Props table and a quick-start example. Ea
67
67
  Branch column: **both** = available on client and server grids; **client** = only when no server prop is
68
68
  passed (the prop is `never` on the server branch); **server** = only on the server branch (the prop is
69
69
  `never` on the client branch). `serverMode` and `serverConfig` are server-branch props documented in
70
- [Cosa i tipi rifiutano](#cosa-i-tipi-rifiutano-what-the-types-reject).
70
+ [What the types reject](#what-the-types-reject).
71
71
 
72
72
  | Prop | Type | Default | Description |
73
73
  | -------------------------- | --------------------------------------------------------------- | ------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
@@ -157,7 +157,7 @@ interface GridServerState {
157
157
  - An action that does not change the payload (e.g. switching the operator of a filter with no value)
158
158
  emits nothing.
159
159
 
160
- ### Cosa i tipi rifiutano (what the types reject)
160
+ ### What the types reject
161
161
 
162
162
  `AppDataGridProps` is a union of a client variant and a server variant. These combinations **do not
163
163
  compile**; there is no runtime warning because the compiler is the enforcement.
@@ -275,4 +275,4 @@ export const InvoicesGrid = ({ invoices }: { invoices: Invoice[] }) => (
275
275
  the custom-filters status announcement lists every custom filter without truncation.
276
276
  - **Testing:** the public showcase is the `App/AppDataGrid` story; regression suites live under
277
277
  `CI-CD/AppDataGrid/<Area>/…` (Base, Barra degli strumenti, Colonne, Aspetto, Filtri, Dati dal server,
278
- Raggruppamento, Selezione, Viste salvate). Prefer the `data-*` hooks above over text selectors.
278
+ Raggruppamento, Selezione, Viste salvate), run locally with `npm run spec`. Prefer the `data-*` hooks above over text selectors.
@@ -1,9 +1,9 @@
1
1
  {
2
2
  "schemaVersion": "1.1.0",
3
- "generatedAt": "2026-09-30T12:51:52.519Z",
3
+ "generatedAt": "2026-09-30T14:07:52.065Z",
4
4
  "package": {
5
5
  "name": "laif-ds",
6
- "version": "1.0.5-app-data-grid.104"
6
+ "version": "1.0.5-app-data-grid.108"
7
7
  },
8
8
  "stats": {
9
9
  "documentedComponentCount": 97,
@@ -554,7 +554,7 @@
554
554
  "exampleTitles": [
555
555
  "AppDataGridProps&lt;TData&gt;",
556
556
  "What arrives in `onQueryChange`",
557
- "Cosa i tipi rifiutano (what the types reject)",
557
+ "What the types reject",
558
558
  "Client grid"
559
559
  ],
560
560
  "controlledPattern": "controlled-uncontrolled-documented",
@@ -6536,5 +6536,5 @@
6536
6536
  ]
6537
6537
  }
6538
6538
  ],
6539
- "checksum": "40069ea0b1fa8a35f45aea52c068964a81680b96ecaa1b02398d8500065797d1"
6539
+ "checksum": "5dbccbb04022a22098e46dfde742846b39bf63fe277af86b404cc6de7890b941"
6540
6540
  }
@@ -85,8 +85,8 @@ const e = {
85
85
  //
86
86
  // ⚠️ Deliberately NOT a Tailwind class, for the same reason as `fullscreen`
87
87
  // right below: neither config emits a step at this number — the v3 bundle
88
- // emits only the multiples of ten from 0 to 50 — and the lane's own gate
89
- // rejects any class token containing a bracket, variants included. It is
88
+ // emits only the multiples of ten from 0 to 50 — and the lane writes no class
89
+ // token containing a bracket, variants included. It is
90
90
  // applied INLINE from this token in `parts/grid-table.tsx`, one source.
91
91
  //
92
92
  // ⚠️ AND IT IS TEMPORARY. Applied only while a handle holds the focus, and
@@ -228,7 +228,7 @@ const Pt = [
228
228
  // INERTI NEL MONTATO, e il difetto è SILENZIOSO perché su
229
229
  // `GridColumnRegistryEntry` sono entrambi OPZIONALI: una prop opzionale
230
230
  // mai popolata non è un errore di tipo, quindi `npm run check` resta verde
231
- // e nessuno dei dodici gate la vede.
231
+ // e il difetto si vede solo nel montato.
232
232
  //
233
233
  // MISURATO: senza `columnType` il pannello risolveva `columnTypeIcon` su
234
234
  // `undefined` e rendeva la STESSA icona per ogni voce, cioè il criterio
@@ -207,8 +207,7 @@ const ie = ({
207
207
  // `size-5` dà larghezza e altezza UGUALI (un `rounded-full` su un
208
208
  // testo nudo darebbe una pillola, non un cerchio) e `rounded-full`
209
209
  // porta il raggio. Nessun valore arbitrario fra parentesi quadre:
210
- // i due bundle CSS li risolvono in modo diverso e il gate li
211
- // rifiuta. `tabular-nums` resta su QUESTO nodo, non su un figlio:
210
+ // i due bundle CSS li risolvono in modo diverso. `tabular-nums` resta su QUESTO nodo, non su un figlio:
212
211
  // è lo stesso nodo su cui si misura il raggio, e le cifre di due
213
212
  // colonne ordinate devono incolonnarsi.
214
213
  /* @__PURE__ */ n(
@@ -55,8 +55,8 @@ function a({ orientation: l }) {
55
55
  // stare SOPRA la foglia pinnata dell'header (`gridZClass.pinnedHeader`,
56
56
  // 30) e SOTTO il pannello dei filtri (`gridZClass.overlay`, 50): fra i
57
57
  // due esiste un solo gradino nominato, quello a 40. Un gradino
58
- // arbitrario a 35 sarebbe
59
- // rifiutato da `scripts/check-grid-css.mjs` per costruzione, e un piolo
58
+ // arbitrario a 35 porterebbe parentesi quadre, che la corsia non usa, e
59
+ // un piolo
60
60
  // dedicato in `grid-tokens.ts` non si può aggiungere in questa onda.
61
61
  //
62
62
  // IL PAREGGIO, E IL MECCANISMO SCRITTO QUI PRIMA ERA SBAGLIATO — rilievo
@@ -162,10 +162,9 @@ function a({ orientation: l }) {
162
162
  // emettere: la frase che negava la loro esistenza era la ragione per cui
163
163
  // esistevano, e il loro unico riscontro in tutto `src/` era quella frase.
164
164
  //
165
- // Ne segue una cosa da sapere su `scripts/check-grid-css.mjs`: il suo
166
- // verde dice che ogni letterale di classe RISOLVE nel bundle, non che
167
- // serva a qualcuno. Una classe risolve anche se nessun codice la usa,
168
- // basta che il suo nome compaia da qualche parte sotto `src/`.
165
+ // Ne segue che una classe presente nel bundle non prova che serva a
166
+ // qualcuno: risolve anche se nessun codice la usa, basta che il suo nome
167
+ // compaia da qualche parte sotto `src/`.
169
168
  "border-d-border",
170
169
  o && "border-l",
171
170
  !o && "flex-col border-t"
@@ -81,8 +81,7 @@
81
81
  ragionamento per esteso — e il precedente misurato in cui le due toolchain
82
82
  producevano bundle diversi da sorgenti identici — sta accanto alla regola in
83
83
  `src/styles/index.css`: qui non si riscrive, perché tre copie della PROSA
84
- divergerebbero, mentre il CSS lo tiene identico la regola 3 di
85
- `scripts/check-grid-css.mjs`, che da adesso confronta tutti e tre i file.
84
+ divergerebbero, mentre il CSS va tenuto identico nei tre file.
86
85
  --------------------------------------------------------------------------- */
87
86
  [data-app-data-grid] input[type="search"]::-webkit-search-cancel-button {
88
87
  -webkit-appearance: none;
package/dist/index.d.ts CHANGED
@@ -2860,7 +2860,7 @@ export declare interface GridAdvancedFilterGroup {
2860
2860
  * l'unico file autorizzato — lo traduce in `ColumnDef` e deposita TUTTO ciò che
2861
2861
  * l'originale metteva in `meta` dentro `grid-column-registry.ts`, una `Map`
2862
2862
  * laterale. È il sostituto dell'augmentation di `ColumnMeta`, che qui è vietata
2863
- * dal primo commit con un gate.
2863
+ * dal primo commit.
2864
2864
  */
2865
2865
  /**
2866
2866
  * L'aggregato di una colonna su una riga di GRUPPO — P9, R11.
@@ -3268,13 +3268,12 @@ export declare type GridClientProps<TData> = GridPropsBase<TData> & {
3268
3268
  * che la griglia passerà — `(righe: CommessaConCodice[]) => string` su una
3269
3269
  * griglia di `Commessa` — non compila. Con la forma a metodo i parametri sono
3270
3270
  * BIVARIANTI e quella stessa firma passa, per poi leggere a runtime un campo che
3271
- * non c'è. Sorvegliato da `ProbeAggregateFirmaRistretta` in
3272
- * `type-probes/aggregate.probe.tsx`.
3271
+ * non c'è.
3273
3272
  *
3274
3273
  * ⚠️ E LA BIVARIANZA NON SPIEGA TUTTO — la prima stesura di questo commento
3275
3274
  * diceva che con la forma a metodo sarebbe passata anche
3276
3275
  * `aggregate: (riga: Commessa) => string`, una riga al posto delle righe. È
3277
- * FALSO, e il gate è stato letto verde per scoprirlo: `Commessa` e `Commessa[]`
3276
+ * FALSO: `Commessa` e `Commessa[]`
3278
3277
  * non sono in nessuna relazione di sottotipo, e la bivarianza salva un parametro
3279
3278
  * più STRETTO, non uno non relativo. Che il dominio siano LE RIGHE è pinzato
3280
3279
  * altrove e più forte — dal punto di applicazione in `grid-aggregate.ts`, che
@@ -3581,20 +3580,12 @@ export declare interface GridColumnRegistryEntry {
3581
3580
  * perché nascondere non è cancellare.
3582
3581
  *
3583
3582
  * ────────────────────────────────────────────────────────────────────────────
3584
- * ⚠️⚠️ DUE SEZIONI E LE SPUNTE DEL DESIGN SYSTEM, e la premessa che stava scritta
3585
- * qui ERA FALSA. Il testo precedente diceva: «CHECKBOX E BOTTONI NATIVI, NON
3586
- * `AppCheckbox` E NON `Button`: `check-datatable-shared-surface.mjs` sorveglia la
3587
- * lista dei primitivi condivisi che la griglia IMPORTA, e allargarla è ciò che
3588
- * quel gate esiste per impedire».
3589
- *
3590
- * Quel gate (oggi rimosso) non sorvegliava gli import della corsia. Letto nel
3591
- * sorgente e misurato allora: costruiva la lista dei primitivi condivisi dalla chiusura di ciò che
3592
- * la tabella CONGELATA rende, e poi rifiutava la modifica di uno di quelli
3593
- * INSIEME alla corsia — una regola di MESCOLANZA su file MODIFICATI, non su
3594
- * file importati. `checkbox.tsx` e `button.tsx` non si toccano qui: si importano,
3595
- * come `popover.tsx` è già importato da `grid-toolbar-slots.tsx` con la stessa
3596
- * dichiarazione. La regola resta (la DataTable congelata rende gli stessi
3597
- * primitivi) ma nessun gate la sorveglia più: va rivista a mano.
3583
+ * ⚠️⚠️ DUE SEZIONI E LE SPUNTE DEL DESIGN SYSTEM, non checkbox e bottoni nativi.
3584
+ * La regola dei primitivi condivisi con la tabella CONGELATA vieta di
3585
+ * MODIFICARLI insieme alla corsia, non di importarli. `checkbox.tsx` e
3586
+ * `button.tsx` non si toccano qui: si importano, come `popover.tsx` è già
3587
+ * importato da `grid-toolbar-slots.tsx` con la stessa dichiarazione. La regola
3588
+ * (la DataTable congelata rende gli stessi primitivi) va rivista a mano.
3598
3589
  *
3599
3590
  * Quindi le spunte sono `Checkbox` del DS. Costa: ZERO checkbox native nel
3600
3591
  * pannello, verificabile con un selettore su `input` di tipo checkbox (zero), e la
@@ -3668,9 +3659,8 @@ export declare interface GridColumnRegistryEntry {
3668
3659
  * 1. È LA FORMA CHE LA CASA HA GIÀ. Il pannello delle colonne della tabella
3669
3660
  * CONGELATA (`tables/data-table/components/data-table-column-visibility.tsx`)
3670
3661
  * riordina esattamente così, con lo stesso tipo MIME e la stessa semantica
3671
- * della metà verticale. Letto e copiato, non importato:
3672
- * `check-grid-isolation.mjs` rifiuta ogni import che raggiunga quella
3673
- * cartella.
3662
+ * della metà verticale. Letto e copiato, non importato: la corsia non
3663
+ * importa da quella cartella.
3674
3664
  * 2. È IL MECCANISMO CHE UNA `play` PUÒ ASSERIRE. `userEvent` non simula il
3675
3665
  * trascinamento nativo, quindi in ENTRAMBI i casi la spec deve emettere gli
3676
3666
  * eventi a mano; con HTML5 sono quattro eventi (`dragstart`, `dragover`,
@@ -3889,7 +3879,7 @@ export declare type GridDensity = "compact" | "default" | "comfortable";
3889
3879
  *
3890
3880
  * TRE BOTTONI E NON UN `AppSelect`, invariato da P2 e per la stessa ragione: un
3891
3881
  * select è un primitivo condiviso in più nella superficie della griglia, e
3892
- * quella superficie si tiene minima a mano: nessun gate la sorveglia più.
3882
+ * quella superficie si tiene minima, a mano.
3893
3883
  */
3894
3884
  export declare const GridDensityControl: ({ density, onChange, i18n, }: GridDensityControlProps) => JSX.Element;
3895
3885
 
@@ -4069,8 +4059,8 @@ export declare interface GridFilterColumn {
4069
4059
  * ed è la stessa misura già eseguita su `aggregate`
4070
4060
  * (`GridColumnAggregateFields`): sotto `strict` i parametri di una proprietà a
4071
4061
  * freccia sono CONTROVARIANTI, quelli di un metodo BIVARIANTI. Con la forma a
4072
- * metodo una `describe` dalla firma sbagliata compilerebbe, e un probe
4073
- * misurerebbe la sola presenza invece della firma.
4062
+ * metodo una `describe` dalla firma sbagliata compilerebbe, e il tipo
4063
+ * garantirebbe la sola presenza invece della firma.
4074
4064
  *
4075
4065
  * ⚠️ NON È GENERICA SU `TValue`, deliberatamente. Un `GridFilterControl<string>`
4076
4066
  * non sarebbe assegnabile a `GridFilterControl<GridFilterControlValue>` proprio
@@ -4086,14 +4076,11 @@ export declare interface GridFilterControl {
4086
4076
  * rende mai.
4087
4077
  *
4088
4078
  * ⚠️ È UN CONTRATTO PER CHI REGISTRA, NON PER LA LIBRERIA, e va detto perché
4089
- * altrimenti è un membro obbligatorio senza nessun lettore: i due probe di
4090
- * `type-probes/filter-control.probe.tsx` sorvegliano `toFragment` e `describe`
4091
- * — la coppia che il criterio 2 pretende — e lo soddisfano con
4092
- * `Control: () => null`, come fa il registro delle story. Un membro richiesto
4093
- * che nessun ramo legge è un requisito che nessun gate può difendere: resta
4079
+ * altrimenti è un membro obbligatorio senza nessun lettore: la libreria legge
4080
+ * solo `toFragment` e `describe` — la coppia che il criterio 2 pretende — e il
4081
+ * registro delle story lo soddisfa con `Control: () => null`. Resta
4094
4082
  * obbligatorio perché una voce di registro senza controllo non sarebbe
4095
- * registrabile da nessuna applicazione, e il giorno in cui una superficie
4096
- * della libreria lo renderà servirà un terzo probe.
4083
+ * registrabile da nessuna applicazione.
4097
4084
  */
4098
4085
  Control: (props: GridFilterControlProps) => ReactNode;
4099
4086
  /**
@@ -4204,9 +4191,8 @@ export declare interface GridFilterOption {
4204
4191
  * maniglia con il fuoco;
4205
4192
  * - «il corpo si può smontare davvero»: RESTA VERO e resta `null` da chiuso.
4206
4193
  *
4207
- * ⚠️ LA LARGHEZZA È `w-72` E NON UN VALORE FRA PARENTESI QUADRE. La regola 1 di
4208
- * `check-grid-css.mjs` rifiuta qualunque valore arbitrario nella corsia, perché
4209
- * i due bundle CSS (v3 e v4) non risolvono le parentesi quadre allo stesso modo:
4194
+ * ⚠️ LA LARGHEZZA È `w-72` E NON UN VALORE FRA PARENTESI QUADRE. La corsia non
4195
+ * usa valori arbitrari, perché i due bundle CSS (v3 e v4) non risolvono le parentesi quadre allo stesso modo:
4210
4196
  * una classe che il bundle v3 non emette è un pannello a larghezza piena in ogni
4211
4197
  * consumer ancora su Tailwind 3, e `npm run check` non può vederlo. `w-72` è un
4212
4198
  * gradino della scala, vale 18rem = 288px, ed è già nel bundle v3. La misura del
@@ -4215,8 +4201,8 @@ export declare interface GridFilterOption {
4215
4201
  * dice cosa è stato reso.
4216
4202
  *
4217
4203
  * ⚠️ NON È UNA CELLA DI TABELLA e non nasce come una cella che si estende su
4218
- * più colonne: `check-grid-colspan-perimeter.mjs` ammette quell'attributo solo
4219
- * sui due nodi marcati di `parts/grid-table.tsx`, e morde.
4204
+ * più colonne: quell'attributo vive solo sui due nodi marcati di
4205
+ * `parts/grid-table.tsx` (vedi il TSDoc di `GridTable`).
4220
4206
  *
4221
4207
  * ⚠️ IL CORPO È `null` DA CHIUSO, NON `display: none`. È il criterio 2 di P7
4222
4208
  * alla lettera, e la lettera conta: un pannello nascosto ma MONTATO tiene in
@@ -5092,8 +5078,7 @@ export declare interface GridI18n {
5092
5078
  * ogni app senza una riga di migrazione. La prova è una riga che COMPILA, in
5093
5079
  * `app-data-grid.stories.tsx` § `I18nSupersetAssegnabile`. Una chiave nuova
5094
5080
  * OBBLIGATORIA rompe quell'assegnazione, e la cartella congelata non può
5095
- * crescere la chiave corrispondente: `check-datatable-freeze.mjs` lo rifiuta, e
5096
- * dovrebbe.
5081
+ * crescere la chiave corrispondente: è congelata, e deve restarlo.
5097
5082
  *
5098
5083
  * È stato `tsc` a trovarlo, non una review: la prima stesura di P4 la aveva
5099
5084
  * obbligatoria. Chi aggiunge una sezione di i18n in P5-P10 la aggiunge
@@ -6262,8 +6247,8 @@ export declare interface GridResultScopeInput {
6262
6247
  *
6263
6248
  * PERCHÉ NON `Row<TData>`. Il contratto originale dichiara
6264
6249
  * `cell?: (value, row, tableRow: Row<TData>) => ReactNode`, e `Row` vive in
6265
- * `@tanstack/table-core`. Ma `@tanstack/*` è confinato in `engine/` da
6266
- * `check-grid-isolation.mjs`, e il confino non è un capriccio: `ColumnMeta` è
6250
+ * `@tanstack/table-core`. Ma `@tanstack/*` è confinato in `engine/`, e il
6251
+ * confino non è un capriccio: `ColumnMeta` è
6267
6252
  * dichiarata in `table-core`, quindi ogni file che apre quel pacchetto è un file
6268
6253
  * da cui può partire l'augmentation globale che rompe i diciotto repo consumer.
6269
6254
  * Un tipo pubblico che importa `Row` porterebbe il pacchetto nella superficie
@@ -6797,9 +6782,7 @@ export declare interface GridServerState {
6797
6782
  * ⚠️ LE CITAZIONI NEI TSDOC DI QUESTO FILE SONO SCADUTE, E QUESTO BLOCCO È
6798
6783
  * L'UNICO RICONCILIATO. Una quindicina di blocchi qui sotto dicono ancora «riga
6799
6784
  * 1023» e «riga 1041», e che `GridPropsBase` «apre a `:543` e chiude a `:867`»:
6800
- * i valori veri sono 1063, 1081, 565 e 942, e l'intestazione del gate stesso
6801
- * registra di averli riconciliati il 2026-09-10 senza toccare la prosa. Non sono
6802
- * gated — nessuno script li legge — quindi ripararli tutti è una riscrittura di
6785
+ * i valori veri sono 1063, 1081, 565 e 942. Ripararli tutti è una riscrittura di
6803
6786
  * sedici punti in file che non c'entrano, e resta riportata invece che fatta.
6804
6787
  * Chi scrive testo NUOVO qui scriva però i numeri veri, per non aggiungere la
6805
6788
  * sedicesima citazione scaduta.
@@ -7436,7 +7419,7 @@ export declare type GridSortMode = "single" | "multi";
7436
7419
  /**
7437
7420
  * UNO SLOT SEMPRE RESO: `render` SOSTITUISCE il nodo, non lo toglie.
7438
7421
  *
7439
- * ⚠️ ESISTE PERCHE' `() => null` ERA IL BOOLEANO CHE IL PROBE VIETA, e la review
7422
+ * ⚠️ ESISTE PERCHE' `() => null` ERA IL BOOLEANO CHE `GridToolbarSlot` VIETA, e la review
7440
7423
  * l'ha trovato dopo che la fase era stata firmata. `GridToolbarSlot.render` torna
7441
7424
  * `ReactElement | null`, quindi `toolbar={{ search: { render: () => null } }}`
7442
7425
  * COMPILAVA e la ricerca non si rendeva: la regola di P6 «i due controlli si
@@ -7444,11 +7427,8 @@ export declare type GridSortMode = "single" | "multi";
7444
7427
  * decisione 26 vieta — raggiunto dal TIPO DI RITORNO invece che dal tipo della
7445
7428
  * proprieta'.
7446
7429
  *
7447
- * ⚠️ E IL PROBE NON POTEVA VEDERLO. `type-probes/shell-slots.probe.tsx` prova che
7448
- * `search: false` e `search: "si"` sono rifiutati; nessuna delle due forme
7449
- * assomiglia a una funzione che torna `null`. Il gate era verde su una pretesa
7450
- * FALSA: misurava la porta mentre la finestra era aperta. La riparazione e' il
7451
- * tipo, e un terzo probe che chiude anche quella.
7430
+ * ⚠️ E RIFIUTARE `search: false` E `search: "si"` NON BASTAVA: nessuna delle due
7431
+ * forme assomiglia a una funzione che torna `null`. La riparazione e' il tipo.
7452
7432
  *
7453
7433
  * Qui `null` non e' ammesso: per `search` l'assenza non e' un esito legittimo, e
7454
7434
  * per `fullscreen` / `filterRowToggle` lo spegnimento ha ORA una forma dichiarata
@@ -7506,9 +7486,7 @@ declare interface GridToolbarResetSlot extends GridToolbarSlot {
7506
7486
  * degli slot obbligatori non c'è.
7507
7487
  *
7508
7488
  * ⚠️ E `toolbar={{ search: "si" }}` DEVE ESSERE UN ERRORE DEL COMPILATORE, non
7509
- * una stringa accettata e ignorata: è il criterio del probe
7510
- * `type-probes/shell-slots.probe.tsx`, che pretende quel rifiuto invece di
7511
- * fidarsi di questa prosa. Entrambe le forme vietate cadono sulla stessa
7489
+ * una stringa accettata e ignorata. Entrambe le forme vietate cadono sulla stessa
7512
7490
  * proprietà di questo tipo — un oggetto con una sola chiave opzionale non
7513
7491
  * accetta né un booleano né una stringa.
7514
7492
  */
@@ -7550,10 +7528,9 @@ declare interface GridToolbarSlot {
7550
7528
  *
7551
7529
  * ⚠️ E `toolbar={{ density: … }}` DEVE ESSERE UN ERRORE DEL COMPILATORE, per
7552
7530
  * PROPRIETÀ SCONOSCIUTA e non più perché il valore è del tipo sbagliato. La
7553
- * differenza NON è cosmetica: il probe che provava «`density: false` è
7554
- * rifiutato» resterebbe verde per il motivo nuovo senza più provare niente sulla
7555
- * decisione 26, quindi è stato riscritto — vedi
7556
- * `type-probes/shell-slots.probe.tsx`.
7531
+ * differenza NON è cosmetica: una verifica di «`density: false` è rifiutato»
7532
+ * resterebbe verde per il motivo nuovo senza più provare niente sulla decisione
7533
+ * 26.
7557
7534
  */
7558
7535
  export declare interface GridToolbarSlots {
7559
7536
  /**
@@ -7894,8 +7871,8 @@ export declare interface GridViewPresetQuery {
7894
7871
  * ⚠️ IL NOME DICE «Version» E LA CLASSE COPRE ANCHE LA FORMA, ed è un residuo
7895
7872
  * DICHIARATO e non una dimenticanza: rinominarla toccherebbe due barrel
7896
7873
  * (`ui/app-data-grid/index.ts`, `organisms/index.ts`),
7897
- * `scripts/codemod/rename-map.json` — il cui gate obbliga a classificare ogni
7898
- * export nominale del barrel — due story, `AppDataGrid.md` e l'API pubblica di un
7874
+ * `scripts/codemod/rename-map.json` — che classifica ogni export nominale del
7875
+ * barrel — due story, `AppDataGrid.md` e l'API pubblica di un
7899
7876
  * prerelease, per un'informazione che il messaggio e `reason` danno già a chi
7900
7877
  * legge. Chi intercetta l'errore ha la causa vera in `reason`, non nel nome.
7901
7878
  */
@@ -1,5 +1,5 @@
1
1
  "use client";
2
- import { __module as x } from "../../_virtual/index7.js";
2
+ import { __module as x } from "../../_virtual/index6.js";
3
3
  var w;
4
4
  function O() {
5
5
  return w ? x.exports : (w = 1, (function(d) {
@@ -1,5 +1,5 @@
1
1
  "use client";
2
- import { __exports as r } from "../../../_virtual/index6.js";
2
+ import { __exports as r } from "../../../_virtual/index7.js";
3
3
  import { __require as c } from "../../inline-style-parser/index.js";
4
4
  var f;
5
5
  function j() {