cursedbelt 5.23.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 (131) 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/CardView.d.ts +6 -2
  6. package/dist/react/components/DataTable/CardView.d.ts.map +1 -1
  7. package/dist/react/components/DataTable/CardView.js +6 -5
  8. package/dist/react/components/DataTable/CardView.js.map +1 -1
  9. package/dist/react/components/DataTable/DataTable.d.ts +165 -5
  10. package/dist/react/components/DataTable/DataTable.d.ts.map +1 -1
  11. package/dist/react/components/DataTable/DataTable.js +445 -114
  12. package/dist/react/components/DataTable/DataTable.js.map +1 -1
  13. package/dist/react/components/DataTable/RowActions.d.ts +3 -1
  14. package/dist/react/components/DataTable/RowActions.d.ts.map +1 -1
  15. package/dist/react/components/DataTable/RowActions.js +9 -2
  16. package/dist/react/components/DataTable/RowActions.js.map +1 -1
  17. package/dist/react/components/DataTable/SortHeader.d.ts +4 -1
  18. package/dist/react/components/DataTable/SortHeader.d.ts.map +1 -1
  19. package/dist/react/components/DataTable/SortHeader.js +7 -1
  20. package/dist/react/components/DataTable/SortHeader.js.map +1 -1
  21. package/dist/react/components/DataTable/cells/CellRenderer.d.ts.map +1 -1
  22. package/dist/react/components/DataTable/cells/CellRenderer.js +4 -1
  23. package/dist/react/components/DataTable/cells/CellRenderer.js.map +1 -1
  24. package/dist/react/components/DataTable/index.d.ts +2 -2
  25. package/dist/react/components/DataTable/index.d.ts.map +1 -1
  26. package/dist/react/components/DataTable/index.js +1 -1
  27. package/dist/react/components/DataTable/index.js.map +1 -1
  28. package/dist/react/components/DataTable/lazyPart.d.ts +27 -0
  29. package/dist/react/components/DataTable/lazyPart.d.ts.map +1 -0
  30. package/dist/react/components/DataTable/lazyPart.js +46 -0
  31. package/dist/react/components/DataTable/lazyPart.js.map +1 -0
  32. package/dist/react/components/DataTable/types.d.ts +106 -0
  33. package/dist/react/components/DataTable/types.d.ts.map +1 -1
  34. package/dist/react/components/DataTable/types.js.map +1 -1
  35. package/dist/react/components/auth/SignInCard.d.ts +49 -0
  36. package/dist/react/components/auth/SignInCard.d.ts.map +1 -0
  37. package/dist/react/components/auth/SignInCard.js +21 -0
  38. package/dist/react/components/auth/SignInCard.js.map +1 -0
  39. package/dist/react/components/auth/index.d.ts +1 -0
  40. package/dist/react/components/auth/index.d.ts.map +1 -1
  41. package/dist/react/components/auth/index.js +1 -0
  42. package/dist/react/components/auth/index.js.map +1 -1
  43. package/dist/react/deep-link/index.d.ts +1 -1
  44. package/dist/react/deep-link/index.d.ts.map +1 -1
  45. package/dist/react/deep-link/index.js.map +1 -1
  46. package/dist/react/deep-link/useDeepLink.d.ts +21 -15
  47. package/dist/react/deep-link/useDeepLink.d.ts.map +1 -1
  48. package/dist/react/deep-link/useDeepLink.js +8 -5
  49. package/dist/react/deep-link/useDeepLink.js.map +1 -1
  50. package/dist/react/file-tree/FileTree.d.ts +14 -1
  51. package/dist/react/file-tree/FileTree.d.ts.map +1 -1
  52. package/dist/react/file-tree/FileTree.js +2 -2
  53. package/dist/react/file-tree/FileTree.js.map +1 -1
  54. package/dist/react/file-tree/fileTree.css +8 -0
  55. package/dist/react/filter-rail/FilterRail.d.ts +31 -1
  56. package/dist/react/filter-rail/FilterRail.d.ts.map +1 -1
  57. package/dist/react/filter-rail/FilterRail.js +20 -5
  58. package/dist/react/filter-rail/FilterRail.js.map +1 -1
  59. package/dist/react/filter-rail/RailSection.d.ts +56 -0
  60. package/dist/react/filter-rail/RailSection.d.ts.map +1 -0
  61. package/dist/react/filter-rail/RailSection.js +108 -0
  62. package/dist/react/filter-rail/RailSection.js.map +1 -0
  63. package/dist/react/filter-rail/index.d.ts +2 -1
  64. package/dist/react/filter-rail/index.d.ts.map +1 -1
  65. package/dist/react/filter-rail/index.js +2 -1
  66. package/dist/react/filter-rail/index.js.map +1 -1
  67. package/dist/react/hooks/useScrollMemory.d.ts +6 -0
  68. package/dist/react/hooks/useScrollMemory.d.ts.map +1 -1
  69. package/dist/react/hooks/useScrollMemory.js +11 -0
  70. package/dist/react/hooks/useScrollMemory.js.map +1 -1
  71. package/dist/react/index.d.ts +3 -1
  72. package/dist/react/index.d.ts.map +1 -1
  73. package/dist/react/index.js +6 -1
  74. package/dist/react/index.js.map +1 -1
  75. package/dist/react/media-gallery/preferenceBus.d.ts +10 -0
  76. package/dist/react/media-gallery/preferenceBus.d.ts.map +1 -1
  77. package/dist/react/media-gallery/preferenceBus.js +24 -0
  78. package/dist/react/media-gallery/preferenceBus.js.map +1 -1
  79. package/dist/react/media-gallery/preferenceSync.d.ts.map +1 -1
  80. package/dist/react/media-gallery/preferenceSync.js +3 -0
  81. package/dist/react/media-gallery/preferenceSync.js.map +1 -1
  82. package/dist/react/nav/TopBar.d.ts +8 -1
  83. package/dist/react/nav/TopBar.d.ts.map +1 -1
  84. package/dist/react/nav/TopBar.js +2 -2
  85. package/dist/react/nav/TopBar.js.map +1 -1
  86. package/dist/styles-areas/analytics.css +18 -15
  87. package/dist/styles-areas/core.css +8 -7
  88. package/dist/styles-areas/data-table.css +13 -10
  89. package/dist/styles-areas/filter-rail.css +6 -5
  90. package/dist/styles-utilities.css +90 -0
  91. package/package.json +3 -3
  92. package/src/react/components/Badge.capsule.spec.ts +178 -0
  93. package/src/react/components/Badge.tsx +13 -5
  94. package/src/react/components/DataTable/CardView.tsx +8 -1
  95. package/src/react/components/DataTable/DataTable.spec.tsx +6 -2
  96. package/src/react/components/DataTable/DataTable.tsx +770 -86
  97. package/src/react/components/DataTable/RowActions.tsx +18 -10
  98. package/src/react/components/DataTable/SortHeader.tsx +19 -0
  99. package/src/react/components/DataTable/cells/CellRenderer.tsx +2 -0
  100. package/src/react/components/DataTable/index.ts +10 -1
  101. package/src/react/components/DataTable/lazyPart.spec.tsx +99 -0
  102. package/src/react/components/DataTable/lazyPart.tsx +58 -0
  103. package/src/react/components/DataTable/rowHooks.spec.tsx +289 -0
  104. package/src/react/components/DataTable/selection.spec.tsx +193 -0
  105. package/src/react/components/DataTable/tableSystem.spec.tsx +6 -2
  106. package/src/react/components/DataTable/types.ts +110 -0
  107. package/src/react/components/DataTable/virtualize.spec.tsx +38 -2
  108. package/src/react/components/auth/SignInCard.spec.tsx +48 -0
  109. package/src/react/components/auth/SignInCard.tsx +90 -0
  110. package/src/react/components/auth/index.ts +1 -0
  111. package/src/react/deep-link/index.ts +1 -0
  112. package/src/react/deep-link/useDeepLink.spec.tsx +31 -0
  113. package/src/react/deep-link/useDeepLink.tsx +31 -11
  114. package/src/react/file-tree/FileTree.tsx +15 -1
  115. package/src/react/file-tree/fileTree.css +8 -0
  116. package/src/react/filter-rail/FilterRail.tsx +93 -26
  117. package/src/react/filter-rail/RailSection.spec.tsx +156 -0
  118. package/src/react/filter-rail/RailSection.tsx +216 -0
  119. package/src/react/filter-rail/index.ts +2 -0
  120. package/src/react/hooks/useScrollMemory.ts +11 -0
  121. package/src/react/index.ts +10 -0
  122. package/src/react/media-gallery/MediaGallery.spec.tsx +9 -3
  123. package/src/react/media-gallery/preferenceBus.ts +28 -0
  124. package/src/react/media-gallery/preferenceSync.ts +3 -0
  125. package/src/react/nav/TopBar.spec.tsx +11 -0
  126. package/src/react/nav/TopBar.tsx +9 -1
  127. package/src/styles-areas/analytics.css +18 -15
  128. package/src/styles-areas/core.css +8 -7
  129. package/src/styles-areas/data-table.css +13 -10
  130. package/src/styles-areas/filter-rail.css +6 -5
  131. package/src/styles-utilities.css +90 -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,4 +1,4 @@
1
- import type { DragEvent } from 'react';
1
+ import type { DragEvent, ReactNode } from 'react';
2
2
  import type { ColDef } from './types.js';
3
3
  export interface CardViewProps<TRow extends Record<string, unknown>> {
4
4
  columns: ColDef<TRow>[];
@@ -12,6 +12,10 @@ export interface CardViewProps<TRow extends Record<string, unknown>> {
12
12
  draggable?: boolean;
13
13
  onDragStart?: (event: DragEvent<HTMLElement>) => void;
14
14
  };
15
+ /** The row's selection checkbox (`DataTable`'s `selectedIds`), rendered at the
16
+ * card's top-left, outside the open-the-row button. `index` is the row's
17
+ * position in `data`. */
18
+ selectFor?: (row: TRow, index: number) => ReactNode;
15
19
  /** Minimum card width before the grid reflows (container-query based). */
16
20
  cardMinWidth?: string;
17
21
  className?: string;
@@ -22,5 +26,5 @@ export interface CardViewProps<TRow extends Record<string, unknown>> {
22
26
  * color/tag field shows its real preview here exactly as it does in the table and the
23
27
  * detail Drawer — one renderer per type, every view (the owner's cross-view mandate).
24
28
  */
25
- export declare function CardView<TRow extends Record<string, unknown>>({ columns, data, getRowId, onRowClick, dragPropsFor, cardMinWidth, className, }: CardViewProps<TRow>): import("react").JSX.Element;
29
+ export declare function CardView<TRow extends Record<string, unknown>>({ columns, data, getRowId, onRowClick, dragPropsFor, selectFor, cardMinWidth, className, }: CardViewProps<TRow>): import("react").JSX.Element;
26
30
  //# sourceMappingURL=CardView.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"CardView.d.ts","sourceRoot":"","sources":["../../../../src/react/components/DataTable/CardView.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAMvC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAEzC,MAAM,WAAW,aAAa,CAAC,IAAI,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IACjE,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;IACxB,IAAI,EAAE,IAAI,EAAE,CAAC;IACb,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,IAAI,KAAK,MAAM,CAAC;IACjC,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,IAAI,KAAK,IAAI,CAAC;IACjC;;uEAEmE;IACnE,YAAY,CAAC,EAAE,CACb,GAAG,EAAE,IAAI,KACN;QAAE,SAAS,CAAC,EAAE,OAAO,CAAC;QAAC,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,CAAC,WAAW,CAAC,KAAK,IAAI,CAAA;KAAE,CAAC;IACpF,0EAA0E;IAC1E,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;GAKG;AACH,wBAAgB,QAAQ,CAAC,IAAI,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EAC7D,OAAO,EACP,IAAI,EACJ,QAAQ,EACR,UAAU,EACV,YAAY,EACZ,YAAsB,EACtB,SAAS,GACV,EAAE,aAAa,CAAC,IAAI,CAAC,+BAoCrB"}
1
+ {"version":3,"file":"CardView.d.ts","sourceRoot":"","sources":["../../../../src/react/components/DataTable/CardView.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAMlD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAEzC,MAAM,WAAW,aAAa,CAAC,IAAI,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IACjE,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;IACxB,IAAI,EAAE,IAAI,EAAE,CAAC;IACb,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,IAAI,KAAK,MAAM,CAAC;IACjC,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,IAAI,KAAK,IAAI,CAAC;IACjC;;uEAEmE;IACnE,YAAY,CAAC,EAAE,CACb,GAAG,EAAE,IAAI,KACN;QAAE,SAAS,CAAC,EAAE,OAAO,CAAC;QAAC,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,CAAC,WAAW,CAAC,KAAK,IAAI,CAAA;KAAE,CAAC;IACpF;;8BAE0B;IAC1B,SAAS,CAAC,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,KAAK,SAAS,CAAC;IACpD,0EAA0E;IAC1E,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;GAKG;AACH,wBAAgB,QAAQ,CAAC,IAAI,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EAC7D,OAAO,EACP,IAAI,EACJ,QAAQ,EACR,UAAU,EACV,YAAY,EACZ,SAAS,EACT,YAAsB,EACtB,SAAS,GACV,EAAE,aAAa,CAAC,IAAI,CAAC,+BAsCrB"}
@@ -10,16 +10,17 @@ import { CellRenderer } from './cells/CellRenderer.js';
10
10
  * color/tag field shows its real preview here exactly as it does in the table and the
11
11
  * detail Drawer — one renderer per type, every view (the owner's cross-view mandate).
12
12
  */
13
- export function CardView({ columns, data, getRowId, onRowClick, dragPropsFor, cardMinWidth = '16rem', className, }) {
13
+ export function CardView({ columns, data, getRowId, onRowClick, dragPropsFor, selectFor, cardMinWidth = '16rem', className, }) {
14
14
  const visible = columns.filter((c) => !c.hidden);
15
15
  return (_jsx(Grid, { min: cardMinWidth, gap: 4, className: className, children: data.map((row, i) => {
16
16
  const key = getRowId ? getRowId(row) : `card-${i}`;
17
17
  const body = _jsx(CardRowContent, { columns: visible, row: row });
18
18
  const dragProps = dragPropsFor?.(row);
19
- return (_jsx(Surface, { level: 'raised', interactive: !!onRowClick, pad: 'md', radius: 'lg', ...dragProps, className: cn(dragProps?.draggable && 'cursor-grab active:cursor-grabbing'), children: onRowClick ? (_jsx("button", {
20
- // guardrails-ignore no-raw-action-button: opens the row's detail view —
21
- // navigation, not a destructive/mutating action.
22
- type: 'button', onClick: () => onRowClick(row), className: 'w-full rounded-md text-left focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring', children: body })) : (body) }, key));
19
+ const select = selectFor?.(row, i);
20
+ return (_jsxs(Surface, { level: 'raised', interactive: !!onRowClick, pad: 'md', radius: 'lg', ...dragProps, className: cn(dragProps?.draggable && 'cursor-grab active:cursor-grabbing'), children: [select != null ? _jsx("div", { className: '-mt-2 -ml-2 mb-1', children: select }) : null, onRowClick ? (_jsx("button", {
21
+ // guardrails-ignore no-raw-action-button: opens the row's detail view —
22
+ // navigation, not a destructive/mutating action.
23
+ type: 'button', onClick: () => onRowClick(row), className: 'w-full rounded-md text-left focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring', children: body })) : (body)] }, key));
23
24
  }) }));
24
25
  }
25
26
  function CardRowContent({ columns, row, }) {
@@ -1 +1 @@
1
- {"version":3,"file":"CardView.js","sourceRoot":"","sources":["../../../../src/react/components/DataTable/CardView.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,EAAE,EAAE,MAAM,iBAAiB,CAAC;AACrC,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAClC,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAmBvD;;;;;GAKG;AACH,MAAM,UAAU,QAAQ,CAAuC,EAC7D,OAAO,EACP,IAAI,EACJ,QAAQ,EACR,UAAU,EACV,YAAY,EACZ,YAAY,GAAG,OAAO,EACtB,SAAS,GACW;IACpB,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IACjD,OAAO,CACL,KAAC,IAAI,IAAC,GAAG,EAAE,YAAY,EAAE,GAAG,EAAE,CAAC,EAAE,SAAS,EAAE,SAAS,YAClD,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE;YACnB,MAAM,GAAG,GAAG,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC;YACnD,MAAM,IAAI,GAAG,KAAC,cAAc,IAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,GAAI,CAAC;YAC5D,MAAM,SAAS,GAAG,YAAY,EAAE,CAAC,GAAG,CAAC,CAAC;YACtC,OAAO,CACL,KAAC,OAAO,IAEN,KAAK,EAAC,QAAQ,EACd,WAAW,EAAE,CAAC,CAAC,UAAU,EACzB,GAAG,EAAC,IAAI,EACR,MAAM,EAAC,IAAI,KACP,SAAS,EACb,SAAS,EAAE,EAAE,CAAC,SAAS,EAAE,SAAS,IAAI,oCAAoC,CAAC,YAE1E,UAAU,CAAC,CAAC,CAAC,CACZ;oBACE,wEAAwE;oBACxE,iDAAiD;oBACjD,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAC9B,SAAS,EAAC,qGAAqG,YAE9G,IAAI,GACE,CACV,CAAC,CAAC,CAAC,CACF,IAAI,CACL,IApBI,GAAG,CAqBA,CACX,CAAC;QACJ,CAAC,CAAC,GACG,CACR,CAAC;AACJ,CAAC;AAED,SAAS,cAAc,CAAuC,EAC5D,OAAO,EACP,GAAG,GAIJ;IACC,OAAO,CACL,KAAC,KAAK,IAAC,GAAG,EAAE,CAAC,YACV,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CACpB,eAAmB,SAAS,EAAC,2CAA2C,aACtE,eAAM,SAAS,EAAC,oDAAoD,YAAE,GAAG,CAAC,KAAK,GAAQ,EACvF,eAAM,SAAS,EAAC,4BAA4B,YAC1C,KAAC,YAAY,IAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,GAAI,GACpD,KAJC,GAAG,CAAC,GAAG,CAKX,CACP,CAAC,GACI,CACT,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"CardView.js","sourceRoot":"","sources":["../../../../src/react/components/DataTable/CardView.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,EAAE,EAAE,MAAM,iBAAiB,CAAC;AACrC,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAClC,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAuBvD;;;;;GAKG;AACH,MAAM,UAAU,QAAQ,CAAuC,EAC7D,OAAO,EACP,IAAI,EACJ,QAAQ,EACR,UAAU,EACV,YAAY,EACZ,SAAS,EACT,YAAY,GAAG,OAAO,EACtB,SAAS,GACW;IACpB,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IACjD,OAAO,CACL,KAAC,IAAI,IAAC,GAAG,EAAE,YAAY,EAAE,GAAG,EAAE,CAAC,EAAE,SAAS,EAAE,SAAS,YAClD,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE;YACnB,MAAM,GAAG,GAAG,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC;YACnD,MAAM,IAAI,GAAG,KAAC,cAAc,IAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,GAAI,CAAC;YAC5D,MAAM,SAAS,GAAG,YAAY,EAAE,CAAC,GAAG,CAAC,CAAC;YACtC,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;YACnC,OAAO,CACL,MAAC,OAAO,IAEN,KAAK,EAAC,QAAQ,EACd,WAAW,EAAE,CAAC,CAAC,UAAU,EACzB,GAAG,EAAC,IAAI,EACR,MAAM,EAAC,IAAI,KACP,SAAS,EACb,SAAS,EAAE,EAAE,CAAC,SAAS,EAAE,SAAS,IAAI,oCAAoC,CAAC,aAE1E,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,cAAK,SAAS,EAAC,kBAAkB,YAAE,MAAM,GAAO,CAAC,CAAC,CAAC,IAAI,EACxE,UAAU,CAAC,CAAC,CAAC,CACZ;wBACE,wEAAwE;wBACxE,iDAAiD;wBACjD,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAC9B,SAAS,EAAC,qGAAqG,YAE9G,IAAI,GACE,CACV,CAAC,CAAC,CAAC,CACF,IAAI,CACL,KArBI,GAAG,CAsBA,CACX,CAAC;QACJ,CAAC,CAAC,GACG,CACR,CAAC;AACJ,CAAC;AAED,SAAS,cAAc,CAAuC,EAC5D,OAAO,EACP,GAAG,GAIJ;IACC,OAAO,CACL,KAAC,KAAK,IAAC,GAAG,EAAE,CAAC,YACV,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CACpB,eAAmB,SAAS,EAAC,2CAA2C,aACtE,eAAM,SAAS,EAAC,oDAAoD,YAAE,GAAG,CAAC,KAAK,GAAQ,EACvF,eAAM,SAAS,EAAC,4BAA4B,YAC1C,KAAC,YAAY,IAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,GAAI,GACpD,KAJC,GAAG,CAAC,GAAG,CAKX,CACP,CAAC,GACI,CACT,CAAC;AACJ,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"):
@@ -335,6 +419,71 @@ export interface DataTableProps<TRow extends Record<string, unknown>> {
335
419
  /** Identifies this table in the drag payload, so a target can refuse rows
336
420
  * from a table it does not serve. */
337
421
  dragSourceId?: string;
422
+ /**
423
+ * ROW SELECTION, controlled. Passing `selectedIds` is what turns it on: a
424
+ * leading checkbox column in the grid, a box per row in the tablet list, the
425
+ * phone cards and the card view, and a tri-state select-all in the header (a
426
+ * "Select all" strip on the tiers that have no header row). Omit it and the
427
+ * table renders exactly as it did before the feature existed.
428
+ *
429
+ * Ids are the table's row ids — `getRowId`, which you should pass: without it
430
+ * the id is the row's index in `data`, which moves when `data` does.
431
+ *
432
+ * 🔴 Select-all covers the FILTERED rows — every row the search box, the
433
+ * per-column filters and the filter builder leave standing — across ALL pages,
434
+ * not only the page on screen. That is Gmail's "select all N matching" without
435
+ * the second click: the header states what the reader can see the table is
436
+ * showing ("these 38 matches"), and a pager is a viewport over that set, not a
437
+ * boundary of it. Rows hidden by the filter are never added or removed by it,
438
+ * so narrowing the search to pick a few more never drops earlier picks.
439
+ * Under `serverSide` the table only knows the rows it was given, so that is
440
+ * the set.
441
+ */
442
+ selectedIds?: ReadonlySet<string>;
443
+ /** The whole next selection (a new Set) after a row or select-all toggle. */
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;
470
+ /** `false` renders that row's checkbox DISABLED (still visible) and keeps the
471
+ * row out of select-all. Pair with {@link unselectableReason}. */
472
+ isRowSelectable?: (row: TRow) => boolean;
473
+ /** Why a row cannot be selected — shown on hover/tap of its disabled box
474
+ * (default "This row can't be selected"). A disabled control that does not
475
+ * say why is the thing the owner UI rule forbids. */
476
+ unselectableReason?: (row: TRow) => string;
477
+ /** The per-row checkbox's accessible name (default: `Select <first column's
478
+ * text>`). */
479
+ selectionLabel?: (row: TRow) => string;
480
+ /**
481
+ * A strip under the toolbar for the selection's summary and its bulk actions —
482
+ * `(rows) => rows.length ? <>{rows.length} games · 38 MB <Button …/></> : null`.
483
+ * Receives every selected row present in `data` (filtered out or not), in
484
+ * `data` order. Return `null` and no strip renders.
485
+ */
486
+ selectionSummary?: (selectedRows: TRow[]) => ReactNode;
338
487
  }
339
488
  /**
340
489
  * Px floor for a width-less column under `fixedLayout`. `table-layout: fixed`
@@ -407,7 +556,18 @@ export declare function declaredTrackFloor(columns: readonly {
407
556
  * been required to be stable since ES2019 and TanStack's sorted row model uses
408
557
  * it, so rows that tie on every key in the stack keep the order they arrived in.
409
558
  */
410
- 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;
411
571
  /**
412
572
  * The one data-table primitive — a headless TanStack Table v8 instance with our markup.
413
573
  * Sorting, global filtering, column visibility, and pagination all live in TanStack
@@ -421,5 +581,5 @@ export declare function nextSortStack(current: SortingState, id: string, multi:
421
581
  * full-width accordion detail row that never breaks column alignment, and an automatic
422
582
  * stacked-card layout under `sm` so phones are never handed a clipped grid.
423
583
  */
424
- 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, }: 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;
425
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":"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"}