cursedbelt 5.25.0 → 5.26.0

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.
Files changed (70) hide show
  1. package/dist/react/components/Badge.d.ts +6 -6
  2. package/dist/react/components/Badge.d.ts.map +1 -1
  3. package/dist/react/components/Badge.js +13 -5
  4. package/dist/react/components/Badge.js.map +1 -1
  5. package/dist/react/components/DataTable/DataTable.d.ts +125 -5
  6. package/dist/react/components/DataTable/DataTable.d.ts.map +1 -1
  7. package/dist/react/components/DataTable/DataTable.js +335 -121
  8. package/dist/react/components/DataTable/DataTable.js.map +1 -1
  9. package/dist/react/components/DataTable/RowActions.d.ts +3 -1
  10. package/dist/react/components/DataTable/RowActions.d.ts.map +1 -1
  11. package/dist/react/components/DataTable/RowActions.js +9 -2
  12. package/dist/react/components/DataTable/RowActions.js.map +1 -1
  13. package/dist/react/components/DataTable/SortHeader.d.ts +4 -1
  14. package/dist/react/components/DataTable/SortHeader.d.ts.map +1 -1
  15. package/dist/react/components/DataTable/SortHeader.js +7 -1
  16. package/dist/react/components/DataTable/SortHeader.js.map +1 -1
  17. package/dist/react/components/DataTable/cells/CellRenderer.d.ts.map +1 -1
  18. package/dist/react/components/DataTable/cells/CellRenderer.js +4 -1
  19. package/dist/react/components/DataTable/cells/CellRenderer.js.map +1 -1
  20. package/dist/react/components/DataTable/index.d.ts +2 -2
  21. package/dist/react/components/DataTable/index.d.ts.map +1 -1
  22. package/dist/react/components/DataTable/index.js +1 -1
  23. package/dist/react/components/DataTable/index.js.map +1 -1
  24. package/dist/react/components/DataTable/lazyPart.d.ts +27 -0
  25. package/dist/react/components/DataTable/lazyPart.d.ts.map +1 -0
  26. package/dist/react/components/DataTable/lazyPart.js +46 -0
  27. package/dist/react/components/DataTable/lazyPart.js.map +1 -0
  28. package/dist/react/components/DataTable/types.d.ts +106 -0
  29. package/dist/react/components/DataTable/types.d.ts.map +1 -1
  30. package/dist/react/components/DataTable/types.js.map +1 -1
  31. package/dist/react/components/auth/SignInCard.d.ts +49 -0
  32. package/dist/react/components/auth/SignInCard.d.ts.map +1 -0
  33. package/dist/react/components/auth/SignInCard.js +21 -0
  34. package/dist/react/components/auth/SignInCard.js.map +1 -0
  35. package/dist/react/components/auth/index.d.ts +1 -0
  36. package/dist/react/components/auth/index.d.ts.map +1 -1
  37. package/dist/react/components/auth/index.js +1 -0
  38. package/dist/react/components/auth/index.js.map +1 -1
  39. package/dist/react/index.d.ts +1 -1
  40. package/dist/react/index.d.ts.map +1 -1
  41. package/dist/react/index.js +1 -1
  42. package/dist/react/index.js.map +1 -1
  43. package/dist/styles-areas/analytics.css +9 -6
  44. package/dist/styles-areas/core.css +8 -7
  45. package/dist/styles-areas/data-table.css +8 -5
  46. package/dist/styles-utilities.css +75 -0
  47. package/package.json +2 -2
  48. package/src/react/components/Badge.capsule.spec.ts +178 -0
  49. package/src/react/components/Badge.tsx +13 -5
  50. package/src/react/components/DataTable/DataTable.spec.tsx +6 -2
  51. package/src/react/components/DataTable/DataTable.tsx +518 -104
  52. package/src/react/components/DataTable/RowActions.tsx +18 -10
  53. package/src/react/components/DataTable/SortHeader.tsx +19 -0
  54. package/src/react/components/DataTable/cells/CellRenderer.tsx +2 -0
  55. package/src/react/components/DataTable/index.ts +10 -1
  56. package/src/react/components/DataTable/lazyPart.spec.tsx +99 -0
  57. package/src/react/components/DataTable/lazyPart.tsx +58 -0
  58. package/src/react/components/DataTable/rowHooks.spec.tsx +289 -0
  59. package/src/react/components/DataTable/selection.spec.tsx +6 -2
  60. package/src/react/components/DataTable/tableSystem.spec.tsx +6 -2
  61. package/src/react/components/DataTable/types.ts +110 -0
  62. package/src/react/components/DataTable/virtualize.spec.tsx +38 -2
  63. package/src/react/components/auth/SignInCard.spec.tsx +48 -0
  64. package/src/react/components/auth/SignInCard.tsx +90 -0
  65. package/src/react/components/auth/index.ts +1 -0
  66. package/src/react/index.ts +5 -0
  67. package/src/styles-areas/analytics.css +9 -6
  68. package/src/styles-areas/core.css +8 -7
  69. package/src/styles-areas/data-table.css +8 -5
  70. package/src/styles-utilities.css +75 -0
@@ -1,7 +1,8 @@
1
1
  import type { HTMLAttributes } from 'react';
2
- declare const BADGE_TONE: {
3
- readonly default: "bg-muted text-muted-foreground";
4
- readonly neutral: "bg-muted text-muted-foreground";
2
+ /** Every tone's classes — exported for `Badge.capsule.spec.ts`, which scores each capsule against the surfaces under it. */
3
+ export declare const BADGE_TONE: {
4
+ readonly default: "bg-muted text-muted-foreground border border-border-strong";
5
+ readonly neutral: "bg-muted text-muted-foreground border border-border-strong";
5
6
  readonly primary: "bg-accent-solid text-white";
6
7
  readonly accent: "bg-accent/10 text-accent-strong";
7
8
  readonly success: "bg-success/15 text-success-strong border border-success/30";
@@ -10,13 +11,13 @@ declare const BADGE_TONE: {
10
11
  readonly destructive: "bg-destructive/15 text-destructive-strong border border-destructive/30";
11
12
  readonly outline: "bg-muted text-foreground border border-border-strong";
12
13
  readonly emerald: "bg-tone-emerald-bg text-tone-emerald-fg";
13
- readonly sky: "bg-tone-sky-bg text-tone-sky-fg";
14
+ readonly sky: "bg-tone-sky-bg text-tone-sky-fg border border-tone-sky-fg/30";
14
15
  readonly cyan: "bg-tone-cyan-bg text-tone-cyan-fg";
15
16
  readonly amber: "bg-tone-amber-bg text-tone-amber-fg";
16
17
  readonly purple: "bg-tone-purple-bg text-tone-purple-fg";
17
18
  readonly rose: "bg-tone-rose-bg text-tone-rose-fg";
18
19
  readonly orange: "bg-tone-orange-bg text-tone-orange-fg";
19
- readonly slate: "bg-tone-slate-bg text-tone-slate-fg";
20
+ readonly slate: "bg-tone-slate-bg text-tone-slate-fg border border-tone-slate-fg/30";
20
21
  readonly lime: "bg-tone-lime-bg text-tone-lime-fg";
21
22
  readonly teal: "bg-tone-teal-bg text-tone-teal-fg";
22
23
  readonly violet: "bg-tone-violet-bg text-tone-violet-fg";
@@ -28,5 +29,4 @@ export interface BadgeProps extends HTMLAttributes<HTMLSpanElement> {
28
29
  tone?: BadgeTone;
29
30
  }
30
31
  export declare function Badge({ tone, className, title, ...props }: BadgeProps): import("react").JSX.Element;
31
- export {};
32
32
  //# sourceMappingURL=Badge.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Badge.d.ts","sourceRoot":"","sources":["../../../src/react/components/Badge.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAmB5C,QAAA,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;CAyCN,CAAC;AAEX,MAAM,MAAM,SAAS,GAAG,MAAM,OAAO,UAAU,CAAC;AAEhD,MAAM,WAAW,UAAW,SAAQ,cAAc,CAAC,eAAe,CAAC;IACjE,wDAAwD;IACxD,IAAI,CAAC,EAAE,SAAS,CAAC;CAClB;AAED,wBAAgB,KAAK,CAAC,EAAE,IAAgB,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,KAAK,EAAE,EAAE,UAAU,+BA6BjF"}
1
+ {"version":3,"file":"Badge.d.ts","sourceRoot":"","sources":["../../../src/react/components/Badge.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAmB5C,4HAA4H;AAC5H,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;CAgDb,CAAC;AAEX,MAAM,MAAM,SAAS,GAAG,MAAM,OAAO,UAAU,CAAC;AAEhD,MAAM,WAAW,UAAW,SAAQ,cAAc,CAAC,eAAe,CAAC;IACjE,wDAAwD;IACxD,IAAI,CAAC,EAAE,SAAS,CAAC;CAClB;AAED,wBAAgB,KAAK,CAAC,EAAE,IAAgB,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,KAAK,EAAE,EAAE,UAAU,+BA6BjF"}
@@ -16,10 +16,15 @@ import { Tooltip } from './Tooltip.js';
16
16
  * One map → no second copy to drift. Apps map their own category→tone (ca's
17
17
  * `toneForCategory`) onto these names instead of redefining the classes.
18
18
  */
19
- const BADGE_TONE = {
19
+ /** Every tone's classes — exported for `Badge.capsule.spec.ts`, which scores each capsule against the surfaces under it. */
20
+ export const BADGE_TONE = {
20
21
  // ---- Semantic (token-driven) -------------------------------------------
21
- default: 'bg-muted text-muted-foreground',
22
- neutral: 'bg-muted text-muted-foreground', // alias of default
22
+ // 🔴 The quiet tones draw an EDGE (task 2286): a bare `--muted` fill is ΔE00 2.3–5.3 from the
23
+ // card under it — on station's raised dark card it read as bare text beside a dot, not a
24
+ // capsule. `Badge.capsule.spec.ts` scores every tone's edge against every surface. `outline`
25
+ // is the same shape with full-strength text; these stay the quieter of the two.
26
+ default: 'bg-muted text-muted-foreground border border-border-strong',
27
+ neutral: 'bg-muted text-muted-foreground border border-border-strong', // alias of default
23
28
  primary: 'bg-accent-solid text-white',
24
29
  accent: 'bg-accent/10 text-accent-strong', // soft accent tint (vs. primary's solid fill); -strong per cbux-101
25
30
  // Text rides the `-strong` step of each status hue: the base hue as text on
@@ -43,13 +48,16 @@ const BADGE_TONE = {
43
48
  // The hues now live in theme.css as `--tone-<hue>-bg/-fg`; the paint is
44
49
  // identical, the ownership is not. See DESIGN.md §3.
45
50
  emerald: 'bg-tone-emerald-bg text-tone-emerald-fg',
46
- sky: 'bg-tone-sky-bg text-tone-sky-fg',
51
+ // sky and slate carry a hairline in their own hue, like the status tones: their fills sit
52
+ // under the capsule floor on the aurora canvas (sky ΔE00 5.5) and the raised dark card
53
+ // (slate 5.0) — see `Badge.capsule.spec.ts`. The other hues clear it on fill alone.
54
+ sky: 'bg-tone-sky-bg text-tone-sky-fg border border-tone-sky-fg/30',
47
55
  cyan: 'bg-tone-cyan-bg text-tone-cyan-fg',
48
56
  amber: 'bg-tone-amber-bg text-tone-amber-fg',
49
57
  purple: 'bg-tone-purple-bg text-tone-purple-fg',
50
58
  rose: 'bg-tone-rose-bg text-tone-rose-fg',
51
59
  orange: 'bg-tone-orange-bg text-tone-orange-fg',
52
- slate: 'bg-tone-slate-bg text-tone-slate-fg',
60
+ slate: 'bg-tone-slate-bg text-tone-slate-fg border border-tone-slate-fg/30',
53
61
  // Four more, 2026-08-20 (unit 15) — see theme.css. Eight hues is enough while a tone
54
62
  // means a badge and not enough when the hue is an identity CHANNEL (arcade's Crowns
55
63
  // tells ten regions apart by colour alone).
@@ -1 +1 @@
1
- {"version":3,"file":"Badge.js","sourceRoot":"","sources":["../../../src/react/components/Badge.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,GAAG;IACjB,2EAA2E;IAC3E,OAAO,EAAE,gCAAgC;IACzC,OAAO,EAAE,gCAAgC,EAAE,mBAAmB;IAC9D,OAAO,EAAE,4BAA4B;IACrC,MAAM,EAAE,iCAAiC,EAAE,oEAAoE;IAC/G,4EAA4E;IAC5E,0EAA0E;IAC1E,6EAA6E;IAC7E,OAAO,EAAE,4DAA4D;IACrE,OAAO,EAAE,4DAA4D;IACrE,KAAK,EAAE,wEAAwE;IAC/E,WAAW,EAAE,wEAAwE,EAAE,iBAAiB;IACxG,gFAAgF;IAChF,2EAA2E;IAC3E,8EAA8E;IAC9E,2EAA2E;IAC3E,mDAAmD;IACnD,OAAO,EAAE,sDAAsD;IAC/D,4EAA4E;IAC5E,yEAAyE;IACzE,6EAA6E;IAC7E,0EAA0E;IAC1E,0EAA0E;IAC1E,wEAAwE;IACxE,qDAAqD;IACrD,OAAO,EAAE,yCAAyC;IAClD,GAAG,EAAE,iCAAiC;IACtC,IAAI,EAAE,mCAAmC;IACzC,KAAK,EAAE,qCAAqC;IAC5C,MAAM,EAAE,uCAAuC;IAC/C,IAAI,EAAE,mCAAmC;IACzC,MAAM,EAAE,uCAAuC;IAC/C,KAAK,EAAE,qCAAqC;IAC5C,qFAAqF;IACrF,oFAAoF;IACpF,4CAA4C;IAC5C,IAAI,EAAE,mCAAmC;IACzC,IAAI,EAAE,mCAAmC;IACzC,MAAM,EAAE,uCAAuC;IAC/C,OAAO,EAAE,yCAAyC;CAC1C,CAAC;AASX,MAAM,UAAU,KAAK,CAAC,EAAE,IAAI,GAAG,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,KAAK,EAAc;IAChF,MAAM,IAAI,GAAG,CACX,eACE,SAAS,EAAE,EAAE,CACX,+EAA+E,EAC/E,UAAU,CAAC,IAAI,CAAC,EAChB,SAAS,CACV,KACG,KAAK,GACT,CACH,CAAC;IACF,mFAAmF;IACnF,EAAE;IACF,gFAAgF;IAChF,wEAAwE;IACxE,gFAAgF;IAChF,kFAAkF;IAClF,+EAA+E;IAC/E,iFAAiF;IACjF,+EAA+E;IAC/E,gBAAgB;IAChB,EAAE;IACF,+EAA+E;IAC/E,gFAAgF;IAChF,kFAAkF;IAClF,mFAAmF;IACnF,mFAAmF;IACnF,sDAAsD;IACtD,OAAO,KAAK,CAAC,CAAC,CAAC,KAAC,OAAO,IAAC,OAAO,EAAE,KAAK,YAAG,IAAI,GAAW,CAAC,CAAC,CAAC,IAAI,CAAC;AAClE,CAAC"}
1
+ {"version":3,"file":"Badge.js","sourceRoot":"","sources":["../../../src/react/components/Badge.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC;;;;;;;;;;;;;;GAcG;AACH,4HAA4H;AAC5H,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,2EAA2E;IAC3E,8FAA8F;IAC9F,yFAAyF;IACzF,6FAA6F;IAC7F,gFAAgF;IAChF,OAAO,EAAE,4DAA4D;IACrE,OAAO,EAAE,4DAA4D,EAAE,mBAAmB;IAC1F,OAAO,EAAE,4BAA4B;IACrC,MAAM,EAAE,iCAAiC,EAAE,oEAAoE;IAC/G,4EAA4E;IAC5E,0EAA0E;IAC1E,6EAA6E;IAC7E,OAAO,EAAE,4DAA4D;IACrE,OAAO,EAAE,4DAA4D;IACrE,KAAK,EAAE,wEAAwE;IAC/E,WAAW,EAAE,wEAAwE,EAAE,iBAAiB;IACxG,gFAAgF;IAChF,2EAA2E;IAC3E,8EAA8E;IAC9E,2EAA2E;IAC3E,mDAAmD;IACnD,OAAO,EAAE,sDAAsD;IAC/D,4EAA4E;IAC5E,yEAAyE;IACzE,6EAA6E;IAC7E,0EAA0E;IAC1E,0EAA0E;IAC1E,wEAAwE;IACxE,qDAAqD;IACrD,OAAO,EAAE,yCAAyC;IAClD,0FAA0F;IAC1F,uFAAuF;IACvF,oFAAoF;IACpF,GAAG,EAAE,8DAA8D;IACnE,IAAI,EAAE,mCAAmC;IACzC,KAAK,EAAE,qCAAqC;IAC5C,MAAM,EAAE,uCAAuC;IAC/C,IAAI,EAAE,mCAAmC;IACzC,MAAM,EAAE,uCAAuC;IAC/C,KAAK,EAAE,oEAAoE;IAC3E,qFAAqF;IACrF,oFAAoF;IACpF,4CAA4C;IAC5C,IAAI,EAAE,mCAAmC;IACzC,IAAI,EAAE,mCAAmC;IACzC,MAAM,EAAE,uCAAuC;IAC/C,OAAO,EAAE,yCAAyC;CAC1C,CAAC;AASX,MAAM,UAAU,KAAK,CAAC,EAAE,IAAI,GAAG,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,KAAK,EAAc;IAChF,MAAM,IAAI,GAAG,CACX,eACE,SAAS,EAAE,EAAE,CACX,+EAA+E,EAC/E,UAAU,CAAC,IAAI,CAAC,EAChB,SAAS,CACV,KACG,KAAK,GACT,CACH,CAAC;IACF,mFAAmF;IACnF,EAAE;IACF,gFAAgF;IAChF,wEAAwE;IACxE,gFAAgF;IAChF,kFAAkF;IAClF,+EAA+E;IAC/E,iFAAiF;IACjF,+EAA+E;IAC/E,gBAAgB;IAChB,EAAE;IACF,+EAA+E;IAC/E,gFAAgF;IAChF,kFAAkF;IAClF,mFAAmF;IACnF,mFAAmF;IACnF,sDAAsD;IACtD,OAAO,KAAK,CAAC,CAAC,CAAC,KAAC,OAAO,IAAC,OAAO,EAAE,KAAK,YAAG,IAAI,GAAW,CAAC,CAAC,CAAC,IAAI,CAAC;AAClE,CAAC"}
@@ -1,9 +1,18 @@
1
1
  import { type ColumnFiltersState, type PaginationState, type RowData, type SortingState, useReactTable } from '@tanstack/react-table';
2
- import type { ReactNode } from 'react';
2
+ import type { MouseEvent, ReactNode } from 'react';
3
+ import { type Ref } from 'react';
3
4
  import type { DropdownMenuItem } from '../DropdownMenu.js';
4
5
  import { type FilterQuery } from './filterQuery.js';
5
6
  import { type RowDragPayload } from './rowDrag.js';
6
- import type { ColDef, TableViewMode } from './types.js';
7
+ import type { ColDef, DataTableHandle, DataTableRowProps, DataTableSelectAll, DataTableServerWindow, TableViewMode } from './types.js';
8
+ /**
9
+ * Load the table's lazy parts — the toolbar, the pager, the row kebab's menu — now,
10
+ * so every table mounted after this resolves draws them on its first render. For a
11
+ * spec setup that queries them synchronously after `render(…)`, and for an app about
12
+ * to show a table with a toolbar. Never required: without it they arrive a tick late,
13
+ * into a placeholder of their own height.
14
+ */
15
+ export declare function preloadDataTableParts(): Promise<void>;
7
16
  declare module '@tanstack/react-table' {
8
17
  interface ColumnMeta<TData extends RowData, TValue> {
9
18
  label?: string;
@@ -12,6 +21,8 @@ declare module '@tanstack/react-table' {
12
21
  * own `size` is number-only, so proportional tracks ride meta instead. */
13
22
  width?: number | string;
14
23
  minWidth?: number;
24
+ hideBelow?: 'sm' | 'md' | 'lg';
25
+ leading?: boolean;
15
26
  }
16
27
  interface TableMeta<TData extends RowData> {
17
28
  /** {@link DataTableControls} — see its doc for why it rides on the table. */
@@ -87,7 +98,7 @@ export interface DataTableProps<TRow extends Record<string, unknown>> {
87
98
  /** Stable row id (selection/keys). Falls back to the row index. */
88
99
  getRowId?: (row: TRow) => string;
89
100
  /** Click a row — typically opens the record `Drawer`. */
90
- onRowClick?: (row: TRow) => void;
101
+ onRowClick?: (row: TRow, event?: MouseEvent<HTMLElement>) => void;
91
102
  /** Trailing per-row Edit action (renders the actions column). */
92
103
  onRowEdit?: (row: TRow) => void;
93
104
  /** Trailing per-row Delete action (renders the actions column). */
@@ -200,11 +211,62 @@ export interface DataTableProps<TRow extends Record<string, unknown>> {
200
211
  * row reports its real height back, so a wrapping cell, a `renderExpanded` panel and
201
212
  * the `compact` density all work without the caller computing anything. Pass a number
202
213
  * to seed a better first estimate for an unusual row height.
214
+ *
215
+ * It virtualizes the rows it is GIVEN. A list whose rows live on a SERVER — a spacer
216
+ * sized from the server's count, pages loading as they scroll into view, a scrollbar
217
+ * that can be dragged to a row nobody has fetched — is {@link serverWindow}, which
218
+ * implies this.
203
219
  */
204
220
  virtualize?: boolean | {
205
221
  estimateRowHeight?: number;
206
222
  overscan?: number;
207
223
  };
224
+ /**
225
+ * SERVER-WINDOWED rows: `data` is only a WINDOW of a result set the server holds —
226
+ * rows `[start, start + data.length)` of `total`. Implies {@link virtualize}.
227
+ *
228
+ * ── Why (forge task 2300) ─────────────────────────────────────────────────
229
+ * apps/music's library is 5,409 tracks and its list is the surface the owner "spends
230
+ * all their time in". It pages from the server, and four of its owner-reported bugs
231
+ * were each a way of getting that arithmetic wrong — so the arithmetic lives here once:
232
+ *
233
+ * - The spacer is sized from `total`, so the scrollbar describes the whole result set
234
+ * while only a window is in memory. Rows outside the window render as placeholder
235
+ * rows (`data-cb-placeholder`) of the estimated height.
236
+ * - `onReachEnd` / `onReachStart` fire as the viewport nears either edge of the LOADED
237
+ * window (never of the spacer — measured against `scrollHeight`, a 1,808-row folder
238
+ * stopped paging at row 100 because the trigger sat 1,700 rows past the last real
239
+ * row). `onReachStart` only for a window that does not begin at row 0.
240
+ * - `onNeedWindow(firstVisibleRow)` fires when the viewport comes to REST wholly
241
+ * outside the window — the scrollbar was dragged, or a flick outran paging. Paging
242
+ * cannot catch up from there; the caller fetches ONE window around the row instead.
243
+ * 🔴 Only at rest (`settleMs`): a smooth scroll to a revealed row passes over
244
+ * hundreds of unloaded rows on its way, and acting on each would fetch a window
245
+ * around wherever the animation happened to be.
246
+ *
247
+ * Pair it with {@link handleRef}'s `scrollToIndex` to reveal or follow a row by its
248
+ * row number over the whole result set. Pagination, client-side sort and client-side filtering are off:
249
+ * the server orders and filters, and a window cannot be re-sorted locally.
250
+ */
251
+ serverWindow?: DataTableServerWindow;
252
+ /**
253
+ * The table's imperative handle — `scrollToIndex(absoluteRow, { align, behavior })`
254
+ * and the `scrollElement` itself (for a scroll-memory hook or a caller telling its
255
+ * own scrolls from the reader's). Only meaningful with {@link virtualize} or
256
+ * {@link serverWindow}, where the table owns the scroll container.
257
+ */
258
+ handleRef?: Ref<DataTableHandle>;
259
+ /**
260
+ * Classes for the box that SCROLLS — under {@link scrollBody}, {@link virtualize} or
261
+ * {@link serverWindow}, the table's own scroll container; otherwise the same wrapper,
262
+ * which then merely holds the rows. `className` is the OUTER box (toolbar, table and pager).
263
+ *
264
+ * 🔴 Why (forge task 2302): an app's styles and its browser suites address "the list that
265
+ * scrolls" — apps/music measures `.track-list`'s `scrollHeight` against its spacer in eleven
266
+ * places, because that chain is where its worst owner report lived. With the scroller inside
267
+ * the table, only the table can put a name on it.
268
+ */
269
+ scrollClassName?: string;
208
270
  /**
209
271
  * Adaptive narrow layouts (container-query based, not viewport — a table inside
210
272
  * a narrow split pane or a tablet's sidebar-flanked content area adapts too):
@@ -233,6 +295,28 @@ export interface DataTableProps<TRow extends Record<string, unknown>> {
233
295
  /** Initial sort applied before any user interaction (e.g. `[{ id: 'updatedAt', desc: true }]`).
234
296
  * Only seeds the initial state — click-to-sort still fully controls `sorting` afterward. */
235
297
  defaultSort?: SortingState;
298
+ /**
299
+ * The sort, CONTROLLED. A header click reports the next stack through `onSortingChange` and
300
+ * the table shows whatever comes back here. Omit it and the table owns the sort (seeded by
301
+ * `defaultSort`), exactly as before.
302
+ *
303
+ * For a list the SERVER orders (`serverSide`, `serverWindow`), whose sort lives in the app's
304
+ * query and URL: the header then says what the rows are actually sorted by, never what the
305
+ * table last guessed.
306
+ */
307
+ sorting?: SortingState;
308
+ /**
309
+ * `false`: a click on the only-remaining sort key flips it back to its first direction
310
+ * instead of removing it — for a list that always HAS an order (a server `ORDER BY`), where
311
+ * "unsorted" is not a state the rows can be in. Default `true` (asc → desc → out).
312
+ */
313
+ enableSortingRemoval?: boolean;
314
+ /**
315
+ * Sorting is unavailable right now, and this is why — the sortable headers stay VISIBLE but
316
+ * inert, with this sentence on hover (the owner-UI rule: disabled with the reason, never
317
+ * hidden). apps/music: *"The list is in play order — turn shuffle off to sort it."*
318
+ */
319
+ sortDisabledReason?: string;
236
320
  /**
237
321
  * Wide-grid row density (design manual, grid-layout/ — "high-density data tables
238
322
  * over empty visual widgets"):
@@ -358,6 +442,31 @@ export interface DataTableProps<TRow extends Record<string, unknown>> {
358
442
  selectedIds?: ReadonlySet<string>;
359
443
  /** The whole next selection (a new Set) after a row or select-all toggle. */
360
444
  onSelectionChange?: (next: ReadonlySet<string>) => void;
445
+ /**
446
+ * The header's select-all box, owned by the CALLER — its state, its name, what a press does.
447
+ *
448
+ * 🔴 For a table that holds only part of what "all" means. Under `serverWindow` the table
449
+ * has a window of a hundred rows out of thousands, so its own select-all could only ever tick
450
+ * the hundred — a lie about the list on screen. apps/music's "all" is every track the VIEW
451
+ * matches, fetched as ids from the server; only the caller can know that set, so the caller
452
+ * owns the box. The row boxes are unchanged (`selectedIds` / `onSelectionChange`).
453
+ */
454
+ selectAll?: DataTableSelectAll;
455
+ /**
456
+ * Attributes and handlers for one body ROW, merged onto it after the table's own —
457
+ * `className` joins, `style` spreads, and a handler the table also sets runs AFTER the
458
+ * table's (a caller can still `preventDefault()`/`stopPropagation()` for everything later).
459
+ *
460
+ * 🔴 Why (forge task 2302): a row is more than its cells. apps/music's track row carries its
461
+ * identity (`data-track-id` — a windowed row's POSITION is not an identity, and every browser
462
+ * suite addresses rows by it), `aria-current` for the playing track, double-click and Enter to
463
+ * play, its own drag payload for the rail, and drop handling to reorder a playlist. None of
464
+ * that is a cell. `rowIndex` is the row's number over the whole result set (a `serverWindow`
465
+ * row's absolute position).
466
+ *
467
+ * Applied to the grid row, the tablet list row and the phone card.
468
+ */
469
+ getRowProps?: (row: TRow, rowIndex: number) => DataTableRowProps;
361
470
  /** `false` renders that row's checkbox DISABLED (still visible) and keeps the
362
471
  * row out of select-all. Pair with {@link unselectableReason}. */
363
472
  isRowSelectable?: (row: TRow) => boolean;
@@ -447,7 +556,18 @@ export declare function declaredTrackFloor(columns: readonly {
447
556
  * been required to be stable since ES2019 and TanStack's sorted row model uses
448
557
  * it, so rows that tie on every key in the stack keep the order they arrived in.
449
558
  */
450
- export declare function nextSortStack(current: SortingState, id: string, multi: boolean): SortingState;
559
+ export declare function nextSortStack(current: SortingState, id: string, multi: boolean, options?: {
560
+ /** The column's FIRST direction is descending (`ColDef.sortDescFirst`). */
561
+ descFirst?: boolean;
562
+ /** `false`: the last click of the cycle flips back instead of removing the key
563
+ * (`enableSortingRemoval`). Default `true`. */
564
+ removable?: boolean;
565
+ }): SortingState;
566
+ /**
567
+ * The table's own props for a row, with the caller's `getRowProps` merged on top: classes join,
568
+ * styles spread, and a handler both set runs the table's first, then the caller's.
569
+ */
570
+ export declare function mergeRowProps<T extends Record<string, unknown>>(own: T, extra: DataTableRowProps | undefined): T & DataTableRowProps;
451
571
  /**
452
572
  * The one data-table primitive — a headless TanStack Table v8 instance with our markup.
453
573
  * Sorting, global filtering, column visibility, and pagination all live in TanStack
@@ -461,5 +581,5 @@ export declare function nextSortStack(current: SortingState, id: string, multi:
461
581
  * full-width accordion detail row that never breaks column alignment, and an automatic
462
582
  * stacked-card layout under `sm` so phones are never handed a clipped grid.
463
583
  */
464
- export declare function DataTable<TRow extends Record<string, unknown>>({ columns, data, getRowId, onRowClick, onRowEdit, onRowDelete, rowMenu, loading, emptyState, toolbar, pageSize, pageSizeOptions, hidePagination, caption, className, stickyHeader, stickyFirstColumn, renderExpanded, expandedRowId, rowClassName, hideEmptyColumns, fixedLayout, minTableWidth, scrollBody, virtualize, mobileCards, serverSide, pageCount, rowCount, onSortingChange, onColumnFiltersChange, onGlobalFilterChange, onPaginationChange, defaultSort, density, viewMode, onViewModeChange, cardMinWidth, searchable, searchPlaceholder, multiSort, filterQuery: filterQueryProp, onFilterQueryChange, getRowDrag, dragSourceId, selectedIds, onSelectionChange, isRowSelectable, unselectableReason, selectionLabel, selectionSummary, }: DataTableProps<TRow>): import("react").JSX.Element;
584
+ export declare function DataTable<TRow extends Record<string, unknown>>({ columns, data, getRowId, onRowClick, onRowEdit, onRowDelete, rowMenu, loading, emptyState, toolbar, pageSize, pageSizeOptions, hidePagination, caption, className, stickyHeader, stickyFirstColumn, renderExpanded, expandedRowId, rowClassName, hideEmptyColumns, fixedLayout, minTableWidth, scrollBody, virtualize, serverWindow, handleRef, scrollClassName, mobileCards, serverSide, pageCount, rowCount, onSortingChange, onColumnFiltersChange, onGlobalFilterChange, onPaginationChange, defaultSort, sorting: sortingProp, enableSortingRemoval, sortDisabledReason, density, viewMode, onViewModeChange, cardMinWidth, searchable, searchPlaceholder, multiSort, filterQuery: filterQueryProp, onFilterQueryChange, getRowDrag, dragSourceId, selectedIds, onSelectionChange, isRowSelectable, unselectableReason, selectionLabel, selectionSummary, selectAll, getRowProps, }: DataTableProps<TRow>): import("react").JSX.Element;
465
585
  //# sourceMappingURL=DataTable.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"DataTable.d.ts","sourceRoot":"","sources":["../../../../src/react/components/DataTable/DataTable.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"DataTable.d.ts","sourceRoot":"","sources":["../../../../src/react/components/DataTable/DataTable.tsx"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,kBAAkB,EAOvB,KAAK,eAAe,EAEpB,KAAK,OAAO,EACZ,KAAK,YAAY,EACjB,aAAa,EAEd,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAKV,UAAU,EACV,SAAS,EAEV,MAAM,OAAO,CAAC;AAEf,OAAO,EAAgC,KAAK,GAAG,EAA0E,MAAM,OAAO,CAAC;AAMvI,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAO3D,OAAO,EAIL,KAAK,WAAW,EACjB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,KAAK,cAAc,EAAgB,MAAM,cAAc,CAAC;AAEjE,OAAO,KAAK,EACV,MAAM,EACN,eAAe,EACf,iBAAiB,EACjB,kBAAkB,EAClB,qBAAqB,EACrB,aAAa,EACd,MAAM,YAAY,CAAC;AA2BpB;;;;;;GAMG;AACH,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,IAAI,CAAC,CAE3D;AAuBD,OAAO,QAAQ,uBAAuB,CAAC;IACrC,UAAU,UAAU,CAAC,KAAK,SAAS,OAAO,EAAE,MAAM;QAChD,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;QACzB;mFAC2E;QAC3E,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;QACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,SAAS,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;QAC/B,OAAO,CAAC,EAAE,OAAO,CAAC;KACnB;IACD,UAAU,SAAS,CAAC,KAAK,SAAS,OAAO;QACvC,6EAA6E;QAC7E,UAAU,CAAC,EAAE,iBAAiB,CAAC;KAChC;CACF;AAED,YAAY,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAEzC;;;;;;;;;;;;;;;GAeG;AACH,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;CACxB;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,WAAW,iBAAiB;IAChC;gFAC4E;IAC5E,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,WAAW,EAAE,WAAW,CAAC;IACzB,cAAc,EAAE,CAAC,IAAI,EAAE,WAAW,KAAK,IAAI,CAAC;IAC5C,yCAAyC;IACzC,aAAa,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAChD,WAAW,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAC7B,cAAc,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,KAAK,IAAI,CAAC;IAChD,2EAA2E;IAC3E,aAAa,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAChD,OAAO,EAAE,YAAY,CAAC;IACtB,YAAY,EAAE,MAAM,IAAI,CAAC;IACzB,aAAa,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IACpC,mBAAmB,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1C,OAAO,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,MAAM,CAAC;IAChC,QAAQ,CAAC,EAAE,aAAa,CAAC;IACzB,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,aAAa,KAAK,IAAI,CAAC;CAC7C;AAED,MAAM,WAAW,cAAc,CAAC,IAAI,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAClE,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;IACxB,IAAI,EAAE,IAAI,EAAE,CAAC;IACb,mEAAmE;IACnE,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,IAAI,KAAK,MAAM,CAAC;IACjC,yDAAyD;IACzD,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,KAAK,CAAC,EAAE,UAAU,CAAC,WAAW,CAAC,KAAK,IAAI,CAAC;IAClE,iEAAiE;IACjE,SAAS,CAAC,EAAE,CAAC,GAAG,EAAE,IAAI,KAAK,IAAI,CAAC;IAChC,mEAAmE;IACnE,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,IAAI,KAAK,IAAI,CAAC;IAClC;oFACgF;IAChF,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,IAAI,KAAK,gBAAgB,EAAE,CAAC;IAC5C,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,oEAAoE;IACpE,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB;kFAC8E;IAC9E,OAAO,CAAC,EAAE,SAAS,GAAG,CAAC,CAAC,KAAK,EAAE,UAAU,CAAC,OAAO,aAAa,CAAC,IAAI,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC;IACrF,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,mDAAmD;IACnD,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,6EAA6E;IAC7E,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,qEAAqE;IACrE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;oEAEgE;IAChE,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB;;;;;;;;;;;;OAYG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B;;;;;OAKG;IACH,cAAc,CAAC,EAAE,CAAC,GAAG,EAAE,IAAI,KAAK,SAAS,CAAC;IAC1C,0EAA0E;IAC1E,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B;0FACsF;IACtF,YAAY,CAAC,EAAE,CAAC,GAAG,EAAE,IAAI,KAAK,MAAM,GAAG,SAAS,CAAC;IACjD;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B;;;;;;;;OAQG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;;;;;;;;;;OAWG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;;;;;OAOG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA4BG;IACH,UAAU,CAAC,EAAE,OAAO,GAAG;QAAE,iBAAiB,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACzE;;;;;;;;;;;;;;;;;;;;;;;;;;OA0BG;IACH,YAAY,CAAC,EAAE,qBAAqB,CAAC;IACrC;;;;;OAKG;IACH,SAAS,CAAC,EAAE,GAAG,CAAC,eAAe,CAAC,CAAC;IACjC;;;;;;;;;OASG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;;;;;;;;;;;;;OAcG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB;2FACuF;IACvF,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,YAAY,KAAK,IAAI,CAAC;IAClD,qBAAqB,CAAC,EAAE,CAAC,OAAO,EAAE,kBAAkB,KAAK,IAAI,CAAC;IAC9D,oBAAoB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/C,kBAAkB,CAAC,EAAE,CAAC,UAAU,EAAE,eAAe,KAAK,IAAI,CAAC;IAC3D;iGAC6F;IAC7F,WAAW,CAAC,EAAE,YAAY,CAAC;IAC3B;;;;;;;;OAQG;IACH,OAAO,CAAC,EAAE,YAAY,CAAC;IACvB;;;;OAIG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B;;;;;;;;;OASG;IACH,OAAO,CAAC,EAAE,aAAa,GAAG,SAAS,CAAC;IAEpC;;;;;;;;;;;;;;;;;;;;;;;;;;;OA2BG;IACH,QAAQ,CAAC,EAAE,aAAa,CAAC;IACzB;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE,CAAC,IAAI,EAAE,aAAa,KAAK,IAAI,CAAC;IACjD,uDAAuD;IACvD,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB;;;;;;;;;;;;;;;OAeG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B;;;;;;;;;OASG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;;;OAKG;IACH,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,mBAAmB,CAAC,EAAE,CAAC,IAAI,EAAE,WAAW,KAAK,IAAI,CAAC;IAElD;;;;;;;;;;;OAWG;IACH,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,IAAI,KAAK,cAAc,GAAG,IAAI,CAAC;IAClD;0CACsC;IACtC,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB;;;;;;;;;;;;;;;;;;;OAmBG;IACH,WAAW,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAClC,6EAA6E;IAC7E,iBAAiB,CAAC,EAAE,CAAC,IAAI,EAAE,WAAW,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC;IACxD;;;;;;;;OAQG;IACH,SAAS,CAAC,EAAE,kBAAkB,CAAC;IAC/B;;;;;;;;;;;;;OAaG;IACH,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,KAAK,iBAAiB,CAAC;IACjE;uEACmE;IACnE,eAAe,CAAC,EAAE,CAAC,GAAG,EAAE,IAAI,KAAK,OAAO,CAAC;IACzC;;0DAEsD;IACtD,kBAAkB,CAAC,EAAE,CAAC,GAAG,EAAE,IAAI,KAAK,MAAM,CAAC;IAC3C;mBACe;IACf,cAAc,CAAC,EAAE,CAAC,GAAG,EAAE,IAAI,KAAK,MAAM,CAAC;IACvC;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE,CAAC,YAAY,EAAE,IAAI,EAAE,KAAK,SAAS,CAAC;CACxD;AAgCD;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB,MAAM,CAAC;AAMvC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,SAAS;IAAE,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,EAAE,EAClE,UAAU,UAAQ,GACjB,MAAM,CAOR;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,aAAa,CAC3B,OAAO,EAAE,YAAY,EACrB,EAAE,EAAE,MAAM,EACV,KAAK,EAAE,OAAO,EACd,OAAO,GAAE;IACP,2EAA2E;IAC3E,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;oDACgD;IAChD,SAAS,CAAC,EAAE,OAAO,CAAC;CAChB,GACL,YAAY,CAYd;AAoCD;;;GAGG;AACH,wBAAgB,aAAa,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7D,GAAG,EAAE,CAAC,EACN,KAAK,EAAE,iBAAiB,GAAG,SAAS,GACnC,CAAC,GAAG,iBAAiB,CAcvB;AAUD;;;;;;;;;;;;GAYG;AACH,wBAAgB,SAAS,CAAC,IAAI,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EAC9D,OAAO,EACP,IAAI,EACJ,QAAQ,EACR,UAAU,EACV,SAAS,EACT,WAAW,EACX,OAAO,EACP,OAAO,EACP,UAAU,EACV,OAAO,EACP,QAAa,EACb,eAAe,EACf,cAAc,EACd,OAAO,EACP,SAAS,EACT,YAAY,EACZ,iBAAiB,EACjB,cAAc,EACd,aAAa,EACb,YAAY,EACZ,gBAAgB,EAChB,WAAW,EACX,aAAa,EACb,UAAU,EACV,UAAU,EACV,YAAY,EACZ,SAAS,EACT,eAAe,EACf,WAAkB,EAClB,UAAU,EACV,SAAS,EACT,QAAQ,EACR,eAAe,EACf,qBAAqB,EACrB,oBAAoB,EACpB,kBAAkB,EAClB,WAAW,EACX,OAAO,EAAE,WAAW,EACpB,oBAA2B,EAC3B,kBAAkB,EAClB,OAAuB,EACvB,QAAQ,EACR,gBAAgB,EAChB,YAAY,EACZ,UAAiB,EACjB,iBAAiB,EACjB,SAAgB,EAChB,WAAW,EAAE,eAAe,EAC5B,mBAAmB,EACnB,UAAU,EACV,YAAY,EACZ,WAAW,EACX,iBAAiB,EACjB,eAAe,EACf,kBAAkB,EAClB,cAAc,EACd,gBAAgB,EAChB,SAAS,EACT,WAAW,GACZ,EAAE,cAAc,CAAC,IAAI,CAAC,+BA8pCtB"}