cursedbelt 5.30.0 → 5.33.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 (185) hide show
  1. package/dist/react/Toast.d.ts +1 -1
  2. package/dist/react/Toast.d.ts.map +1 -1
  3. package/dist/react/Toast.js +19 -4
  4. package/dist/react/Toast.js.map +1 -1
  5. package/dist/react/components/Button.d.ts +16 -1
  6. package/dist/react/components/Button.d.ts.map +1 -1
  7. package/dist/react/components/Button.js +34 -5
  8. package/dist/react/components/Button.js.map +1 -1
  9. package/dist/react/components/ChoiceGroup.d.ts +20 -1
  10. package/dist/react/components/ChoiceGroup.d.ts.map +1 -1
  11. package/dist/react/components/ChoiceGroup.js +15 -2
  12. package/dist/react/components/ChoiceGroup.js.map +1 -1
  13. package/dist/react/components/ConfirmDialog.d.ts +4 -1
  14. package/dist/react/components/ConfirmDialog.d.ts.map +1 -1
  15. package/dist/react/components/ConfirmDialog.js +2 -2
  16. package/dist/react/components/ConfirmDialog.js.map +1 -1
  17. package/dist/react/components/CopyButton.d.ts +10 -1
  18. package/dist/react/components/CopyButton.d.ts.map +1 -1
  19. package/dist/react/components/CopyButton.js +2 -2
  20. package/dist/react/components/CopyButton.js.map +1 -1
  21. package/dist/react/components/DataTable/DataTable.d.ts +27 -2
  22. package/dist/react/components/DataTable/DataTable.d.ts.map +1 -1
  23. package/dist/react/components/DataTable/DataTable.js +173 -45
  24. package/dist/react/components/DataTable/DataTable.js.map +1 -1
  25. package/dist/react/components/DataTable/RowActions.d.ts +4 -1
  26. package/dist/react/components/DataTable/RowActions.d.ts.map +1 -1
  27. package/dist/react/components/DataTable/RowActions.js +2 -2
  28. package/dist/react/components/DataTable/RowActions.js.map +1 -1
  29. package/dist/react/components/DataTable/columnPriority.d.ts +30 -0
  30. package/dist/react/components/DataTable/columnPriority.d.ts.map +1 -0
  31. package/dist/react/components/DataTable/columnPriority.js +45 -0
  32. package/dist/react/components/DataTable/columnPriority.js.map +1 -0
  33. package/dist/react/components/DataTable/types.d.ts +14 -0
  34. package/dist/react/components/DataTable/types.d.ts.map +1 -1
  35. package/dist/react/components/DataTable/types.js.map +1 -1
  36. package/dist/react/components/EmptyState.d.ts.map +1 -1
  37. package/dist/react/components/EmptyState.js +2 -2
  38. package/dist/react/components/EmptyState.js.map +1 -1
  39. package/dist/react/components/ErrorCard.d.ts +13 -1
  40. package/dist/react/components/ErrorCard.d.ts.map +1 -1
  41. package/dist/react/components/ErrorCard.js +3 -2
  42. package/dist/react/components/ErrorCard.js.map +1 -1
  43. package/dist/react/components/Field.d.ts +37 -12
  44. package/dist/react/components/Field.d.ts.map +1 -1
  45. package/dist/react/components/Field.js +19 -8
  46. package/dist/react/components/Field.js.map +1 -1
  47. package/dist/react/components/Modal.d.ts +1 -0
  48. package/dist/react/components/Modal.d.ts.map +1 -1
  49. package/dist/react/components/Modal.js +3 -2
  50. package/dist/react/components/Modal.js.map +1 -1
  51. package/dist/react/components/PromptDialog.d.ts +4 -1
  52. package/dist/react/components/PromptDialog.d.ts.map +1 -1
  53. package/dist/react/components/PromptDialog.js +2 -2
  54. package/dist/react/components/PromptDialog.js.map +1 -1
  55. package/dist/react/components/Switch.d.ts +16 -2
  56. package/dist/react/components/Switch.d.ts.map +1 -1
  57. package/dist/react/components/Switch.js +10 -3
  58. package/dist/react/components/Switch.js.map +1 -1
  59. package/dist/react/components/Tooltip.d.ts +1 -1
  60. package/dist/react/components/Tooltip.d.ts.map +1 -1
  61. package/dist/react/components/Tooltip.js +14 -1
  62. package/dist/react/components/Tooltip.js.map +1 -1
  63. package/dist/react/components/TooltipImpl.d.ts.map +1 -1
  64. package/dist/react/components/TooltipImpl.js +37 -7
  65. package/dist/react/components/TooltipImpl.js.map +1 -1
  66. package/dist/react/components/dialog.d.ts.map +1 -1
  67. package/dist/react/components/dialog.js +35 -3
  68. package/dist/react/components/dialog.js.map +1 -1
  69. package/dist/react/file-tree/FileTree.d.ts +26 -1
  70. package/dist/react/file-tree/FileTree.d.ts.map +1 -1
  71. package/dist/react/file-tree/FileTree.js +182 -40
  72. package/dist/react/file-tree/FileTree.js.map +1 -1
  73. package/dist/react/hooks/useCopyToClipboard.d.ts +10 -2
  74. package/dist/react/hooks/useCopyToClipboard.d.ts.map +1 -1
  75. package/dist/react/hooks/useCopyToClipboard.js +13 -4
  76. package/dist/react/hooks/useCopyToClipboard.js.map +1 -1
  77. package/dist/react/icons.d.ts +12 -1
  78. package/dist/react/icons.d.ts.map +1 -1
  79. package/dist/react/icons.js +12 -22
  80. package/dist/react/icons.js.map +1 -1
  81. package/dist/react/index.d.ts +4 -4
  82. package/dist/react/index.d.ts.map +1 -1
  83. package/dist/react/index.js +3 -3
  84. package/dist/react/index.js.map +1 -1
  85. package/dist/react/lib/hoverIntent.d.ts +21 -0
  86. package/dist/react/lib/hoverIntent.d.ts.map +1 -1
  87. package/dist/react/lib/hoverIntent.js +24 -0
  88. package/dist/react/lib/hoverIntent.js.map +1 -1
  89. package/dist/react/lib/openDialogs.d.ts +5 -0
  90. package/dist/react/lib/openDialogs.d.ts.map +1 -0
  91. package/dist/react/lib/openDialogs.js +45 -0
  92. package/dist/react/lib/openDialogs.js.map +1 -0
  93. package/dist/scripts/guardrailsEnforce.d.ts +11 -0
  94. package/dist/scripts/guardrailsEnforce.d.ts.map +1 -1
  95. package/dist/styles-areas/analytics.css +10 -9
  96. package/dist/styles-areas/calendar.css +6 -6
  97. package/dist/styles-areas/chat.css +6 -6
  98. package/dist/styles-areas/core.css +41 -36
  99. package/dist/styles-areas/data-table.css +10 -10
  100. package/dist/styles-areas/disk-usage.css +7 -7
  101. package/dist/styles-areas/fields.css +4 -4
  102. package/dist/styles-areas/filter-rail.css +7 -8
  103. package/dist/styles-areas/media-gallery.css +2 -2
  104. package/dist/styles-areas/nav.css +17 -18
  105. package/dist/styles-areas/overlays.css +2 -2
  106. package/dist/styles-areas/stats.css +4 -4
  107. package/dist/styles-areas/wizard.css +3 -3
  108. package/dist/styles-areas/workbench.css +2 -2
  109. package/dist/styles-utilities.css +46 -0
  110. package/dist/testing/index.d.ts +3 -0
  111. package/dist/testing/index.d.ts.map +1 -0
  112. package/dist/testing/index.js +4 -0
  113. package/dist/testing/index.js.map +1 -0
  114. package/dist/testing/objectLeak.d.ts +23 -0
  115. package/dist/testing/objectLeak.d.ts.map +1 -0
  116. package/dist/testing/objectLeak.js +37 -0
  117. package/dist/testing/objectLeak.js.map +1 -0
  118. package/dist/testing/tooltip.d.ts.map +1 -1
  119. package/dist/testing/tooltip.js +8 -18
  120. package/dist/testing/tooltip.js.map +1 -1
  121. package/package.json +61 -7
  122. package/scripts/guardrails-baseline.json +4 -1
  123. package/scripts/guardrailsEnforce.spec.ts +163 -6
  124. package/scripts/guardrailsEnforce.ts +365 -40
  125. package/scripts/paths.ts +1 -1
  126. package/src/react/Toast.spec.tsx +17 -1
  127. package/src/react/Toast.tsx +20 -3
  128. package/src/react/components/Button.spec.tsx +49 -1
  129. package/src/react/components/Button.tsx +63 -6
  130. package/src/react/components/ChoiceGroup.spec.tsx +32 -0
  131. package/src/react/components/ChoiceGroup.tsx +78 -23
  132. package/src/react/components/ConfirmDialog.tsx +5 -0
  133. package/src/react/components/CopyButton.spec.tsx +35 -0
  134. package/src/react/components/CopyButton.tsx +11 -2
  135. package/src/react/components/DataTable/DataTable.spec.tsx +32 -0
  136. package/src/react/components/DataTable/DataTable.tsx +271 -38
  137. package/src/react/components/DataTable/RowActions.tsx +5 -2
  138. package/src/react/components/DataTable/columnPriority.spec.ts +97 -0
  139. package/src/react/components/DataTable/columnPriority.ts +54 -0
  140. package/src/react/components/DataTable/types.ts +14 -0
  141. package/src/react/components/DataTable/virtualize.spec.tsx +47 -2
  142. package/src/react/components/EmptyState.spec.tsx +7 -0
  143. package/src/react/components/EmptyState.tsx +3 -0
  144. package/src/react/components/ErrorCard.spec.tsx +32 -0
  145. package/src/react/components/ErrorCard.tsx +17 -1
  146. package/src/react/components/Field.spec.tsx +61 -0
  147. package/src/react/components/Field.tsx +84 -27
  148. package/src/react/components/Modal.spec.tsx +84 -0
  149. package/src/react/components/Modal.tsx +4 -1
  150. package/src/react/components/PromptDialog.spec.tsx +29 -1
  151. package/src/react/components/PromptDialog.tsx +5 -0
  152. package/src/react/components/Switch.spec.tsx +25 -0
  153. package/src/react/components/Switch.tsx +49 -4
  154. package/src/react/components/Tooltip.spec.tsx +183 -2
  155. package/src/react/components/Tooltip.tsx +14 -2
  156. package/src/react/components/TooltipImpl.tsx +42 -8
  157. package/src/react/components/dialog.tsx +49 -9
  158. package/src/react/file-tree/FileTree.spec.tsx +205 -0
  159. package/src/react/file-tree/FileTree.tsx +220 -38
  160. package/src/react/hooks/useCopyToClipboard.ts +17 -4
  161. package/src/react/icons.spec.ts +32 -1
  162. package/src/react/icons.tsx +59 -0
  163. package/src/react/index.ts +7 -2
  164. package/src/react/lib/hoverIntent.ts +28 -0
  165. package/src/react/lib/openDialogs.ts +48 -0
  166. package/src/styles-areas/analytics.css +10 -9
  167. package/src/styles-areas/calendar.css +6 -6
  168. package/src/styles-areas/chat.css +6 -6
  169. package/src/styles-areas/core.css +41 -36
  170. package/src/styles-areas/data-table.css +10 -10
  171. package/src/styles-areas/disk-usage.css +7 -7
  172. package/src/styles-areas/fields.css +4 -4
  173. package/src/styles-areas/filter-rail.css +7 -8
  174. package/src/styles-areas/media-gallery.css +2 -2
  175. package/src/styles-areas/nav.css +17 -18
  176. package/src/styles-areas/overlays.css +2 -2
  177. package/src/styles-areas/stats.css +4 -4
  178. package/src/styles-areas/wizard.css +3 -3
  179. package/src/styles-areas/workbench.css +2 -2
  180. package/src/styles-utilities.css +46 -0
  181. package/src/testing/index.ts +3 -0
  182. package/src/testing/objectLeak.spec.ts +21 -0
  183. package/src/testing/objectLeak.ts +39 -0
  184. package/src/testing/tooltip.spec.ts +19 -0
  185. package/src/testing/tooltip.ts +17 -1
@@ -1,5 +1,5 @@
1
1
  import { Toaster as SonnerToaster, toast } from 'sonner';
2
2
  export { toast };
3
3
  export type ToasterProps = React.ComponentProps<typeof SonnerToaster>;
4
- export declare function Toaster(props: ToasterProps): import("react").JSX.Element;
4
+ export declare function Toaster({ style, ...props }: ToasterProps): import("react").JSX.Element;
5
5
  //# sourceMappingURL=Toast.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Toast.d.ts","sourceRoot":"","sources":["../../src/react/Toast.tsx"],"names":[],"mappings":"AAaA,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAEzD,OAAO,EAAE,KAAK,EAAE,CAAC;AAEjB,MAAM,MAAM,YAAY,GAAG,KAAK,CAAC,cAAc,CAAC,OAAO,aAAa,CAAC,CAAC;AAEtE,wBAAgB,OAAO,CAAC,KAAK,EAAE,YAAY,+BAsB1C"}
1
+ {"version":3,"file":"Toast.d.ts","sourceRoot":"","sources":["../../src/react/Toast.tsx"],"names":[],"mappings":"AAaA,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAEzD,OAAO,EAAE,KAAK,EAAE,CAAC;AAEjB,MAAM,MAAM,YAAY,GAAG,KAAK,CAAC,cAAc,CAAC,OAAO,aAAa,CAAC,CAAC;AAgBtE,wBAAgB,OAAO,CAAC,EAAE,KAAK,EAAE,GAAG,KAAK,EAAE,EAAE,YAAY,+BAyBxD"}
@@ -14,15 +14,30 @@ import { jsx as _jsx } from "react/jsx-runtime";
14
14
  */
15
15
  import { Toaster as SonnerToaster, toast } from 'sonner';
16
16
  export { toast };
17
- export function Toaster(props) {
18
- return (_jsx(SonnerToaster, { position: 'bottom-right', closeButton: true, toastOptions: {
17
+ /**
18
+ * 🔴 sonner paints a toast from its OWN variables (`--normal-bg`, `--normal-border`,
19
+ * `--normal-text`), set per `data-sonner-theme` on the toaster — and its rule outranks the
20
+ * `bg-popover`/`border-border` classes below wherever the app's utilities are not layered
21
+ * above it. Measured in desk, 2026-09-30 (forge task 2413): a white toast on the dark theme,
22
+ * because sonner's theme defaults to light. Answering the variables with the belt's tokens on
23
+ * the toaster itself makes the toast follow the app's theme whatever sonner thinks it is.
24
+ */
25
+ const TOKEN_VARS = {
26
+ '--normal-bg': 'var(--popover)',
27
+ '--normal-border': 'var(--border)',
28
+ '--normal-text': 'var(--popover-foreground)',
29
+ };
30
+ export function Toaster({ style, ...props }) {
31
+ return (_jsx(SonnerToaster, { style: { ...TOKEN_VARS, ...style }, position: 'bottom-right', closeButton: true, toastOptions: {
19
32
  classNames: {
20
33
  toast: 'rounded-lg border border-border bg-popover text-foreground shadow-overlay',
21
34
  title: 'text-sm font-medium',
22
- description: 'text-xs text-muted-foreground',
35
+ // `!` because sonner colours these two with element rules of its own (`#3f3f3f` for a
36
+ // description, its grey scale for the close button) that no variable reaches.
37
+ description: 'text-xs text-muted-foreground!',
23
38
  actionButton: 'bg-accent-solid text-white text-xs px-2 py-1 rounded-sm',
24
39
  cancelButton: 'bg-muted text-foreground text-xs px-2 py-1 rounded-sm',
25
- closeButton: 'border-border bg-popover text-muted-foreground hover:text-foreground',
40
+ closeButton: 'border-border! bg-popover! text-muted-foreground! hover:text-foreground!',
26
41
  error: 'border-destructive/50 [&_[data-icon]]:text-destructive',
27
42
  success: 'border-success/50 [&_[data-icon]]:text-success',
28
43
  warning: 'border-warning/50 [&_[data-icon]]:text-warning',
@@ -1 +1 @@
1
- {"version":3,"file":"Toast.js","sourceRoot":"","sources":["../../src/react/Toast.tsx"],"names":[],"mappings":";AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAEzD,OAAO,EAAE,KAAK,EAAE,CAAC;AAIjB,MAAM,UAAU,OAAO,CAAC,KAAmB;IACzC,OAAO,CACL,KAAC,aAAa,IACZ,QAAQ,EAAC,cAAc,EACvB,WAAW,QACX,YAAY,EAAE;YACZ,UAAU,EAAE;gBACV,KAAK,EAAE,2EAA2E;gBAClF,KAAK,EAAE,qBAAqB;gBAC5B,WAAW,EAAE,+BAA+B;gBAC5C,YAAY,EAAE,yDAAyD;gBACvE,YAAY,EAAE,uDAAuD;gBACrE,WAAW,EAAE,sEAAsE;gBACnF,KAAK,EAAE,wDAAwD;gBAC/D,OAAO,EAAE,gDAAgD;gBACzD,OAAO,EAAE,gDAAgD;gBACzD,IAAI,EAAE,8CAA8C;aACrD;SACF,KACG,KAAK,GACT,CACH,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"Toast.js","sourceRoot":"","sources":["../../src/react/Toast.tsx"],"names":[],"mappings":";AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAEzD,OAAO,EAAE,KAAK,EAAE,CAAC;AAIjB;;;;;;;GAOG;AACH,MAAM,UAAU,GAAG;IACjB,aAAa,EAAE,gBAAgB;IAC/B,iBAAiB,EAAE,eAAe;IAClC,eAAe,EAAE,2BAA2B;CACtB,CAAC;AAEzB,MAAM,UAAU,OAAO,CAAC,EAAE,KAAK,EAAE,GAAG,KAAK,EAAgB;IACvD,OAAO,CACL,KAAC,aAAa,IACZ,KAAK,EAAE,EAAE,GAAG,UAAU,EAAE,GAAG,KAAK,EAAE,EAClC,QAAQ,EAAC,cAAc,EACvB,WAAW,QACX,YAAY,EAAE;YACZ,UAAU,EAAE;gBACV,KAAK,EAAE,2EAA2E;gBAClF,KAAK,EAAE,qBAAqB;gBAC5B,sFAAsF;gBACtF,8EAA8E;gBAC9E,WAAW,EAAE,gCAAgC;gBAC7C,YAAY,EAAE,yDAAyD;gBACvE,YAAY,EAAE,uDAAuD;gBACrE,WAAW,EAAE,0EAA0E;gBACvF,KAAK,EAAE,wDAAwD;gBAC/D,OAAO,EAAE,gDAAgD;gBACzD,OAAO,EAAE,gDAAgD;gBACzD,IAAI,EAAE,8CAA8C;aACrD;SACF,KACG,KAAK,GACT,CACH,CAAC;AACJ,CAAC"}
@@ -66,6 +66,21 @@ export interface ButtonProps extends ButtonHTMLAttributes<HTMLButtonElement>, Va
66
66
  /** Toast shown when `onAsyncClick` rejects. `true` (default) → the thrown
67
67
  * error's message; a string → that message instead; `false` → no toast. */
68
68
  errorMessage?: boolean | string;
69
+ /**
70
+ * Why this control cannot work HERE — and supplying it refuses the press.
71
+ *
72
+ * The owner's rule for a control that cannot work on this host: visible, disabled,
73
+ * and the reason on hover. `disabled` cannot carry that, because a disabled button
74
+ * leaves the tab order and fires no pointer events, so the one sentence that explains
75
+ * it is unreachable by keyboard. A refused button is `aria-disabled` instead —
76
+ * announced as disabled, drawn as disabled, turned away on click and on Enter/Space,
77
+ * and still focusable and hoverable, which is what the ARIA practices guide
78
+ * recommends. Its hint is the reason (it replaces `tooltip` while set). `disabled`
79
+ * wins when both are given: a momentarily inert control is simply inert.
80
+ *
81
+ * Came from desk's own Button (forge task 2410), which had carried it since its file 80.
82
+ */
83
+ unavailableReason?: string;
69
84
  /** How long the post-completion checkmark flash shows (ms). Default 1200. */
70
85
  resetMs?: number;
71
86
  children?: ReactNode;
@@ -77,5 +92,5 @@ export interface ButtonProps extends ButtonHTMLAttributes<HTMLButtonElement>, Va
77
92
  */
78
93
  ref?: Ref<HTMLButtonElement>;
79
94
  }
80
- export declare function Button({ className, variant, size, asChild, loading, leftIcon, tooltip, tooltipSide, tooltipMobile, onAsyncClick, successMessage, errorMessage, resetMs, type, children, disabled, onClick, ...props }: ButtonProps): import("react").JSX.Element;
95
+ export declare function Button({ className, variant, size, asChild, loading, leftIcon, tooltip, tooltipSide, tooltipMobile, onAsyncClick, successMessage, errorMessage, resetMs, type, children, disabled, onClick, onKeyDown, unavailableReason, ...props }: ButtonProps): import("react").JSX.Element;
81
96
  //# sourceMappingURL=Button.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Button.d.ts","sourceRoot":"","sources":["../../../src/react/components/Button.tsx"],"names":[],"mappings":"AACA,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAElE,OAAO,EAAE,KAAK,oBAAoB,EAAE,KAAK,UAAU,EAAE,KAAK,SAAS,EAAE,KAAK,GAAG,EAAoB,MAAM,OAAO,CAAC;AAG/G,OAAO,EAAW,KAAK,aAAa,EAAE,KAAK,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAGlF;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,cAAc;;;8EAsF1B,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG,WAAW,CAAC,YAAY,CAAC,OAAO,cAAc,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;AACxF,MAAM,MAAM,UAAU,GAAG,WAAW,CAAC,YAAY,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AAElF,MAAM,WAAW,WACf,SAAQ,oBAAoB,CAAC,iBAAiB,CAAC,EAC7C,YAAY,CAAC,OAAO,cAAc,CAAC;IACrC;;;8CAG0C;IAC1C,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;6EACyE;IACzE,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,8FAA8F;IAC9F,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB;;;;;;;;eAQW;IACX,OAAO,EAAE,OAAO,CAAC,SAAS,EAAE,IAAI,GAAG,SAAS,CAAC,CAAC;IAC9C,8EAA8E;IAC9E,WAAW,CAAC,EAAE,gBAAgB,CAAC;IAC/B;;;6DAGyD;IACzD,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B;;;;;;;;;OASG;IACH,YAAY,CAAC,EAAE,CAAC,CAAC,EAAE,UAAU,CAAC,iBAAiB,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IACtE;yFACqF;IACrF,cAAc,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAClC;gFAC4E;IAC5E,YAAY,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAChC,6EAA6E;IAC7E,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB;;;;;OAKG;IACH,GAAG,CAAC,EAAE,GAAG,CAAC,iBAAiB,CAAC,CAAC;CAC9B;AAED,wBAAgB,MAAM,CAAC,EACrB,SAAS,EACT,OAAO,EACP,IAAI,EACJ,OAAe,EACf,OAAe,EACf,QAAQ,EACR,OAAO,EACP,WAAW,EACX,aAAa,EACb,YAAY,EACZ,cAAsB,EACtB,YAAmB,EACnB,OAAc,EACd,IAAI,EACJ,QAAQ,EACR,QAAQ,EACR,OAAO,EACP,GAAG,KAAK,EACT,EAAE,WAAW,+BAyEb"}
1
+ {"version":3,"file":"Button.d.ts","sourceRoot":"","sources":["../../../src/react/components/Button.tsx"],"names":[],"mappings":"AACA,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAElE,OAAO,EACL,KAAK,oBAAoB,EAEzB,KAAK,UAAU,EACf,KAAK,SAAS,EACd,KAAK,GAAG,EAGT,MAAM,OAAO,CAAC;AAGf,OAAO,EAAW,KAAK,aAAa,EAAE,KAAK,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAGlF;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,cAAc;;;8EA4F1B,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG,WAAW,CAAC,YAAY,CAAC,OAAO,cAAc,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;AACxF,MAAM,MAAM,UAAU,GAAG,WAAW,CAAC,YAAY,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AAElF,MAAM,WAAW,WACf,SAAQ,oBAAoB,CAAC,iBAAiB,CAAC,EAC7C,YAAY,CAAC,OAAO,cAAc,CAAC;IACrC;;;8CAG0C;IAC1C,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;6EACyE;IACzE,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,8FAA8F;IAC9F,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB;;;;;;;;eAQW;IACX,OAAO,EAAE,OAAO,CAAC,SAAS,EAAE,IAAI,GAAG,SAAS,CAAC,CAAC;IAC9C,8EAA8E;IAC9E,WAAW,CAAC,EAAE,gBAAgB,CAAC;IAC/B;;;6DAGyD;IACzD,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B;;;;;;;;;OASG;IACH,YAAY,CAAC,EAAE,CAAC,CAAC,EAAE,UAAU,CAAC,iBAAiB,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IACtE;yFACqF;IACrF,cAAc,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAClC;gFAC4E;IAC5E,YAAY,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAChC;;;;;;;;;;;;;OAaG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,6EAA6E;IAC7E,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB;;;;;OAKG;IACH,GAAG,CAAC,EAAE,GAAG,CAAC,iBAAiB,CAAC,CAAC;CAC9B;AAED,wBAAgB,MAAM,CAAC,EACrB,SAAS,EACT,OAAO,EACP,IAAI,EACJ,OAAe,EACf,OAAe,EACf,QAAQ,EACR,OAAO,EACP,WAAW,EACX,aAAa,EACb,YAAY,EACZ,cAAsB,EACtB,YAAmB,EACnB,OAAc,EACd,IAAI,EACJ,QAAQ,EACR,QAAQ,EACR,OAAO,EACP,SAAS,EACT,iBAAiB,EACjB,GAAG,KAAK,EACT,EAAE,WAAW,+BAmGb"}
@@ -2,7 +2,7 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { Slot } from '@radix-ui/react-slot';
3
3
  import { cva } from 'class-variance-authority';
4
4
  import { Check, Loader2 } from 'lucide-react';
5
- import { useRef, useState } from 'react';
5
+ import { useRef, useState, } from 'react';
6
6
  import { toast } from 'sonner';
7
7
  import { cn } from '../lib/cn.js';
8
8
  import { Tooltip } from './Tooltip.js';
@@ -28,6 +28,12 @@ export const buttonVariants = cva([
28
28
  'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-1 focus-visible:ring-offset-background',
29
29
  // Disabled = muted surface + faded + inert (never color-alone): clearly off, not a low-contrast haze.
30
30
  'disabled:pointer-events-none disabled:opacity-50 disabled:border-transparent disabled:bg-muted disabled:text-muted-foreground',
31
+ // REFUSED (`unavailableReason`) is drawn like disabled but keeps its pointer events:
32
+ // it has to be hoverable and focusable to deliver the reason it exists to give.
33
+ 'aria-disabled:cursor-not-allowed aria-disabled:opacity-50',
34
+ // A toggle that is ON (`aria-pressed`) reads as selected in every variant — the
35
+ // accent border and text over a faint accent wash, never colour alone (the border).
36
+ 'aria-pressed:border aria-pressed:border-accent aria-pressed:bg-accent/10 aria-pressed:text-accent',
31
37
  '[&_svg]:size-4 [&_svg]:shrink-0',
32
38
  ], {
33
39
  variants: {
@@ -100,7 +106,7 @@ export const buttonVariants = cva([
100
106
  },
101
107
  defaultVariants: { variant: 'secondary', size: 'md' },
102
108
  });
103
- export function Button({ className, variant, size, asChild = false, loading = false, leftIcon, tooltip, tooltipSide, tooltipMobile, onAsyncClick, successMessage = false, errorMessage = true, resetMs = 1200, type, children, disabled, onClick, ...props }) {
109
+ export function Button({ className, variant, size, asChild = false, loading = false, leftIcon, tooltip, tooltipSide, tooltipMobile, onAsyncClick, successMessage = false, errorMessage = true, resetMs = 1200, type, children, disabled, onClick, onKeyDown, unavailableReason, ...props }) {
104
110
  const classes = cn(buttonVariants({ variant, size }), className);
105
111
  const [pending, setPending] = useState(false);
106
112
  const [justSucceeded, setJustSucceeded] = useState(false);
@@ -130,18 +136,41 @@ export function Button({ className, variant, size, asChild = false, loading = fa
130
136
  }
131
137
  : onClick;
132
138
  const isLoading = loading || pending;
139
+ const reason = unavailableReason?.trim() || undefined;
140
+ const refused = reason !== undefined && !disabled;
141
+ // The half `disabled` would do for free, done before anything else runs so a caller's
142
+ // handler (or `onAsyncClick`) can never fire behind a refusal.
143
+ const refuseClick = (e) => {
144
+ if (refused) {
145
+ e.preventDefault();
146
+ e.stopPropagation();
147
+ return;
148
+ }
149
+ handleClick?.(e);
150
+ };
151
+ // Enter and Space are a button's click; a focusable refused control turns them away too,
152
+ // or the keyboard route it was just given becomes the one way through it.
153
+ const refuseKey = (e) => {
154
+ if (refused && (e.key === 'Enter' || e.key === ' ')) {
155
+ e.preventDefault();
156
+ return;
157
+ }
158
+ onKeyDown?.(e);
159
+ };
133
160
  // asChild: hand styling to the consumer's single element (no spinner/label wrapper —
134
161
  // that extra <span> would defeat the Slot merge, per the note above). `type` is a
135
162
  // button-only attr, irrelevant to the host element (an <a>/Link), so it's dropped here.
136
163
  // Exposed for container-level dev checks (PluginCard's "≤1 primary per view"
137
164
  // warning) and for tests — never for styling, which stays on the classes.
138
165
  const variantAttr = variant ?? 'secondary';
139
- const el = asChild ? (_jsx(Slot, { className: classes, "data-cb-variant": variantAttr, onClick: onClick, ...props, children: children })) : (_jsxs("button", {
166
+ const el = asChild ? (_jsx(Slot, { className: classes, "data-cb-variant": variantAttr, onClick: onClick, onKeyDown: onKeyDown, ...props, children: children })) : (_jsxs("button", {
140
167
  // guardrails-ignore no-raw-action-button: this IS the Button primitive — its own
141
168
  // implementation is necessarily a raw <button>.
142
169
  // Default to type="button" so a button inside a <form> never submits by accident.
143
- type: type ?? 'button', className: classes, "data-cb-variant": variantAttr, disabled: disabled || isLoading || undefined, "aria-busy": isLoading || undefined, onClick: handleClick, ...props, children: [isLoading ? _jsx(Loader2, { className: 'absolute size-4 animate-spin', "aria-hidden": true }) : null, !isLoading && justSucceeded ? _jsx(Check, { className: 'absolute size-4', "aria-hidden": true }) : null, _jsxs("span", { className: cn('contents', (isLoading || justSucceeded) && 'invisible'), children: [leftIcon, children] })] }));
170
+ type: type ?? 'button', className: classes, "data-cb-variant": variantAttr, ...props, disabled: (disabled || (isLoading && !refused)) || undefined, "aria-disabled": refused ? true : props['aria-disabled'], "aria-busy": isLoading || undefined, onClick: refuseClick, onKeyDown: refuseKey, children: [isLoading ? _jsx(Loader2, { className: 'absolute size-4 animate-spin', "aria-hidden": true }) : null, !isLoading && justSucceeded ? _jsx(Check, { className: 'absolute size-4', "aria-hidden": true }) : null, _jsxs("span", { className: cn('contents', (isLoading || justSucceeded) && 'invisible'), children: [leftIcon, children] })] }));
144
171
  // The single "button with a tooltip" seam: wrap once, here, so no call site re-implements it.
145
- return (_jsx(Tooltip, { content: tooltip, side: tooltipSide, mobile: tooltipMobile, children: el }));
172
+ // `multiline`: a hint that is a sentence ("Nothing to restore — the trash is empty") wraps
173
+ // inside a capped bubble instead of running off a narrow pane; a short one is unchanged.
174
+ return (_jsx(Tooltip, { content: refused ? reason : tooltip, side: tooltipSide, mobile: tooltipMobile, multiline: true, children: el }));
146
175
  }
147
176
  //# sourceMappingURL=Button.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Button.js","sourceRoot":"","sources":["../../../src/react/components/Button.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Button.js","sourceRoot":"","sources":["../../../src/react/components/Button.tsx"],"names":[],"mappings":"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"}
@@ -7,6 +7,15 @@ export interface ChoiceOption<T extends string = string> {
7
7
  /** A quieter second line under the label. */
8
8
  description?: ReactNode;
9
9
  disabled?: boolean;
10
+ /**
11
+ * `layout='picture'` only: the picture that IS the option — a thumbnail filling the
12
+ * tile. The `label` then becomes the tile's hover tooltip, and its accessible name
13
+ * when it is a string (pass `aria-label` when it is not). An option with no `image`
14
+ * shows its `label` inside the tile instead ("Whichever is first").
15
+ */
16
+ image?: ReactNode;
17
+ /** Accessible name for a picture tile whose `label` is not a plain string. */
18
+ 'aria-label'?: string;
10
19
  }
11
20
  export interface ChoiceGroupProps<T extends string = string> {
12
21
  options: readonly ChoiceOption<T>[];
@@ -24,6 +33,15 @@ export interface ChoiceGroupProps<T extends string = string> {
24
33
  disabledReason?: ReactNode;
25
34
  /** Form field name, for a group inside a `<form>`. */
26
35
  name?: string;
36
+ /**
37
+ * `text` (default): a wrapping row of worded options. `picture`: one strip of
38
+ * square thumbnail tiles, checked by an accent ring — a cover picker, an avatar
39
+ * picker. The strip does not wrap; put the group in a `ScrollArea axis='x'` when
40
+ * it can be longer than its container.
41
+ */
42
+ layout?: 'text' | 'picture';
43
+ /** `layout='picture'` tile edge in px. Default 64. */
44
+ tileSize?: number;
27
45
  className?: string;
28
46
  }
29
47
  /**
@@ -35,6 +53,7 @@ export interface ChoiceGroupProps<T extends string = string> {
35
53
  * - a short view/mode switch on one line → `SegmentedControl`
36
54
  * - a long or data-driven list → `SelectField` / `ChoiceMenu`
37
55
  * - a colour → `SwatchPicker`
56
+ * - one picture out of several (a cover, an avatar) → THIS, `layout='picture'`
38
57
  * - a handful of answers that each need words → THIS
39
58
  *
40
59
  * ── 🔴 Why this exists: the hidden-radio trap (family, 2026-09-26) ──────────
@@ -55,5 +74,5 @@ export interface ChoiceGroupProps<T extends string = string> {
55
74
  * `relative` on the root contains the non-focusable form-bubble input Radix adds
56
75
  * inside a `<form>`, so even that is positioned against this group.
57
76
  */
58
- export declare function ChoiceGroup<T extends string = string>({ options, value, onChange, label, 'aria-label': ariaLabel, description, disabled, disabledReason, name, className, }: ChoiceGroupProps<T>): import("react").JSX.Element;
77
+ export declare function ChoiceGroup<T extends string = string>({ options, value, onChange, label, 'aria-label': ariaLabel, description, disabled, disabledReason, name, layout, tileSize, className, }: ChoiceGroupProps<T>): import("react").JSX.Element;
59
78
  //# sourceMappingURL=ChoiceGroup.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ChoiceGroup.d.ts","sourceRoot":"","sources":["../../../src/react/components/ChoiceGroup.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,SAAS,EAAS,MAAM,OAAO,CAAC;AAI9C,MAAM,WAAW,YAAY,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM;IACrD,2CAA2C;IAC3C,KAAK,EAAE,CAAC,CAAC;IACT,+EAA+E;IAC/E,KAAK,EAAE,SAAS,CAAC;IACjB,6CAA6C;IAC7C,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,gBAAgB,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM;IACzD,OAAO,EAAE,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC;IACpC,KAAK,EAAE,CAAC,GAAG,SAAS,CAAC;IACrB,QAAQ,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CAAC;IAC7B,yEAAyE;IACzE,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,wDAAwD;IACxD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,8BAA8B;IAC9B,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB;6FACyF;IACzF,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,cAAc,CAAC,EAAE,SAAS,CAAC;IAC3B,sDAAsD;IACtD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAgB,WAAW,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,EAAE,EACrD,OAAO,EACP,KAAK,EACL,QAAQ,EACR,KAAK,EACL,YAAY,EAAE,SAAS,EACvB,WAAW,EACX,QAAgB,EAChB,cAAc,EACd,IAAI,EACJ,SAAS,GACV,EAAE,gBAAgB,CAAC,CAAC,CAAC,+BA2DrB"}
1
+ {"version":3,"file":"ChoiceGroup.d.ts","sourceRoot":"","sources":["../../../src/react/components/ChoiceGroup.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,SAAS,EAAS,MAAM,OAAO,CAAC;AAK9C,MAAM,WAAW,YAAY,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM;IACrD,2CAA2C;IAC3C,KAAK,EAAE,CAAC,CAAC;IACT,+EAA+E;IAC/E,KAAK,EAAE,SAAS,CAAC;IACjB,6CAA6C;IAC7C,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;;;OAKG;IACH,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,8EAA8E;IAC9E,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,gBAAgB,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM;IACzD,OAAO,EAAE,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC;IACpC,KAAK,EAAE,CAAC,GAAG,SAAS,CAAC;IACrB,QAAQ,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CAAC;IAC7B,yEAAyE;IACzE,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,wDAAwD;IACxD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,8BAA8B;IAC9B,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB;6FACyF;IACzF,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,cAAc,CAAC,EAAE,SAAS,CAAC;IAC3B,sDAAsD;IACtD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;;;OAKG;IACH,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,sDAAsD;IACtD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,wBAAgB,WAAW,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,EAAE,EACrD,OAAO,EACP,KAAK,EACL,QAAQ,EACR,KAAK,EACL,YAAY,EAAE,SAAS,EACvB,WAAW,EACX,QAAgB,EAChB,cAAc,EACd,IAAI,EACJ,MAAe,EACf,QAAa,EACb,SAAS,GACV,EAAE,gBAAgB,CAAC,CAAC,CAAC,+BA+DrB"}
@@ -3,6 +3,7 @@ import * as RadioGroup from '@radix-ui/react-radio-group';
3
3
  import { useId } from 'react';
4
4
  import { cn } from '../lib/cn.js';
5
5
  import { TAP_TARGET } from '../lib/tapTarget.js';
6
+ import { Tooltip } from './Tooltip.js';
6
7
  /**
7
8
  * Pick ONE of a few options whose labels are sentences — "No — just their own
8
9
  * page" / "Yes — they can edit anyone, like you". The options are all visible at
@@ -12,6 +13,7 @@ import { TAP_TARGET } from '../lib/tapTarget.js';
12
13
  * - a short view/mode switch on one line → `SegmentedControl`
13
14
  * - a long or data-driven list → `SelectField` / `ChoiceMenu`
14
15
  * - a colour → `SwatchPicker`
16
+ * - one picture out of several (a cover, an avatar) → THIS, `layout='picture'`
15
17
  * - a handful of answers that each need words → THIS
16
18
  *
17
19
  * ── 🔴 Why this exists: the hidden-radio trap (family, 2026-09-26) ──────────
@@ -32,12 +34,23 @@ import { TAP_TARGET } from '../lib/tapTarget.js';
32
34
  * `relative` on the root contains the non-focusable form-bubble input Radix adds
33
35
  * inside a `<form>`, so even that is positioned against this group.
34
36
  */
35
- export function ChoiceGroup({ options, value, onChange, label, 'aria-label': ariaLabel, description, disabled = false, disabledReason, name, className, }) {
37
+ export function ChoiceGroup({ options, value, onChange, label, 'aria-label': ariaLabel, description, disabled = false, disabledReason, name, layout = 'text', tileSize = 64, className, }) {
36
38
  const id = useId();
37
39
  const labelId = label != null ? `${id}-label` : undefined;
38
40
  const descriptionId = description != null ? `${id}-desc` : undefined;
39
41
  const reasonId = disabled && disabledReason != null ? `${id}-reason` : undefined;
40
42
  const describedBy = [descriptionId, reasonId].filter(Boolean).join(' ') || undefined;
41
- return (_jsxs("div", { className: cn('flex min-w-0 flex-col gap-1.5', className), "data-cb-choice-group": '', children: [label != null ? (_jsx("span", { id: labelId, className: cn('text-sm font-medium text-foreground', disabled && 'opacity-60'), children: label })) : null, _jsx(RadioGroup.Root, { "aria-labelledby": labelId, "aria-label": labelId ? undefined : ariaLabel, "aria-describedby": describedBy, value: value ?? '', onValueChange: (next) => onChange(next), disabled: disabled, name: name, className: 'relative flex min-w-0 flex-wrap gap-1.5', children: options.map((option) => (_jsxs(RadioGroup.Item, { value: option.value, disabled: option.disabled, className: cn('flex min-w-0 max-w-full flex-col items-start rounded-md border border-border bg-transparent px-2.5 py-1.5 text-left text-sm text-foreground transition-colors', 'hover:border-accent', 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring', 'data-[state=checked]:border-accent data-[state=checked]:bg-accent/10 data-[state=checked]:font-medium', 'disabled:cursor-not-allowed disabled:opacity-50 disabled:hover:border-border', TAP_TARGET), children: [_jsx("span", { className: 'min-w-0 break-words', children: option.label }), option.description != null ? (_jsx("span", { className: 'min-w-0 break-words text-xs font-normal text-muted-foreground', children: option.description })) : null] }, option.value))) }), reasonId ? (_jsx("p", { id: reasonId, className: 'text-xs text-muted-foreground', children: disabledReason })) : null, descriptionId ? (_jsx("p", { id: descriptionId, className: 'text-xs text-muted-foreground', children: description })) : null] }));
43
+ return (_jsxs("div", { className: cn('flex min-w-0 flex-col gap-1.5', className), "data-cb-choice-group": '', children: [label != null ? (_jsx("span", { id: labelId, className: cn('text-sm font-medium text-foreground', disabled && 'opacity-60'), children: label })) : null, _jsx(RadioGroup.Root, { "aria-labelledby": labelId, "aria-label": labelId ? undefined : ariaLabel, "aria-describedby": describedBy, value: value ?? '', onValueChange: (next) => onChange(next), disabled: disabled, name: name, className: cn('relative flex min-w-0', layout === 'picture' ? 'gap-2' : 'flex-wrap gap-1.5'), children: options.map((option) => layout === 'picture' ? (_jsx(PictureTile, { option: option, size: tileSize }, option.value)) : (_jsxs(RadioGroup.Item, { value: option.value, disabled: option.disabled, className: cn('flex min-w-0 max-w-full flex-col items-start rounded-md border border-border bg-transparent px-2.5 py-1.5 text-left text-sm text-foreground transition-colors', 'hover:border-accent', 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring', 'data-[state=checked]:border-accent data-[state=checked]:bg-accent/10 data-[state=checked]:font-medium', 'disabled:cursor-not-allowed disabled:opacity-50 disabled:hover:border-border', TAP_TARGET), children: [_jsx("span", { className: 'min-w-0 break-words', children: option.label }), option.description != null ? (_jsx("span", { className: 'min-w-0 break-words text-xs font-normal text-muted-foreground', children: option.description })) : null] }, option.value))) }), reasonId ? (_jsx("p", { id: reasonId, className: 'text-xs text-muted-foreground', children: disabledReason })) : null, descriptionId ? (_jsx("p", { id: descriptionId, className: 'text-xs text-muted-foreground', children: description })) : null] }));
44
+ }
45
+ /**
46
+ * One square tile of a `layout='picture'` group. Still a Radix radio item — roving
47
+ * tabindex, arrow keys and `aria-checked` come from the group, exactly as for a text
48
+ * option — so a picture picker is never a row of hand-rolled `role="radio"` buttons
49
+ * again (family's cover picker was, until task 2402).
50
+ */
51
+ function PictureTile({ option, size }) {
52
+ const name = option['aria-label'] ?? (typeof option.label === 'string' ? option.label : undefined);
53
+ const item = (_jsx(RadioGroup.Item, { value: option.value, disabled: option.disabled, "aria-label": option.image != null ? name : undefined, style: { width: size, height: size }, className: cn('flex shrink-0 items-center justify-center overflow-hidden rounded-lg border border-border bg-card text-center text-caption leading-tight text-foreground transition-colors', 'hover:border-accent', 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring', 'data-[state=checked]:border-accent data-[state=checked]:ring-2 data-[state=checked]:ring-accent', option.image == null && 'px-1 data-[state=checked]:bg-accent/10', 'disabled:cursor-not-allowed disabled:opacity-50 disabled:hover:border-border'), children: option.image ?? option.label }));
54
+ return option.image != null ? _jsx(Tooltip, { content: option.label, children: item }) : item;
42
55
  }
43
56
  //# sourceMappingURL=ChoiceGroup.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ChoiceGroup.js","sourceRoot":"","sources":["../../../src/react/components/ChoiceGroup.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,UAAU,MAAM,6BAA6B,CAAC;AAC1D,OAAO,EAAkB,KAAK,EAAE,MAAM,OAAO,CAAC;AAC9C,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAClC,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AA+BjD;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,MAAM,UAAU,WAAW,CAA4B,EACrD,OAAO,EACP,KAAK,EACL,QAAQ,EACR,KAAK,EACL,YAAY,EAAE,SAAS,EACvB,WAAW,EACX,QAAQ,GAAG,KAAK,EAChB,cAAc,EACd,IAAI,EACJ,SAAS,GACW;IACpB,MAAM,EAAE,GAAG,KAAK,EAAE,CAAC;IACnB,MAAM,OAAO,GAAG,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;IAC1D,MAAM,aAAa,GAAG,WAAW,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;IACrE,MAAM,QAAQ,GAAG,QAAQ,IAAI,cAAc,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;IACjF,MAAM,WAAW,GAAG,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,SAAS,CAAC;IAErF,OAAO,CACL,eAAK,SAAS,EAAE,EAAE,CAAC,+BAA+B,EAAE,SAAS,CAAC,0BAAuB,EAAE,aACpF,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,CACf,eAAM,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,CAAC,qCAAqC,EAAE,QAAQ,IAAI,YAAY,CAAC,YAC9F,KAAK,GACD,CACR,CAAC,CAAC,CAAC,IAAI,EACR,KAAC,UAAU,CAAC,IAAI,uBACG,OAAO,gBACZ,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,sBACzB,WAAW,EAC7B,KAAK,EAAE,KAAK,IAAI,EAAE,EAClB,aAAa,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAS,CAAC,EAC5C,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAE,IAAI,EACV,SAAS,EAAC,yCAAyC,YAElD,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CACvB,MAAC,UAAU,CAAC,IAAI,IAEd,KAAK,EAAE,MAAM,CAAC,KAAK,EACnB,QAAQ,EAAE,MAAM,CAAC,QAAQ,EACzB,SAAS,EAAE,EAAE,CACX,+JAA+J,EAC/J,qBAAqB,EACrB,yEAAyE,EACzE,uGAAuG,EACvG,8EAA8E,EAC9E,UAAU,CACX,aAED,eAAM,SAAS,EAAC,qBAAqB,YAAE,MAAM,CAAC,KAAK,GAAQ,EAC1D,MAAM,CAAC,WAAW,IAAI,IAAI,CAAC,CAAC,CAAC,CAC5B,eAAM,SAAS,EAAC,+DAA+D,YAC5E,MAAM,CAAC,WAAW,GACd,CACR,CAAC,CAAC,CAAC,IAAI,KAjBH,MAAM,CAAC,KAAK,CAkBD,CACnB,CAAC,GACc,EACjB,QAAQ,CAAC,CAAC,CAAC,CACV,YAAG,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAC,+BAA+B,YACvD,cAAc,GACb,CACL,CAAC,CAAC,CAAC,IAAI,EACP,aAAa,CAAC,CAAC,CAAC,CACf,YAAG,EAAE,EAAE,aAAa,EAAE,SAAS,EAAC,+BAA+B,YAC5D,WAAW,GACV,CACL,CAAC,CAAC,CAAC,IAAI,IACJ,CACP,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"ChoiceGroup.js","sourceRoot":"","sources":["../../../src/react/components/ChoiceGroup.tsx"],"names":[],"mappings":"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"}
@@ -12,6 +12,9 @@ export interface ConfirmDialogProps {
12
12
  destructive?: boolean;
13
13
  /** Spinner on the confirm button while an async `onConfirm` runs (caller-controlled). */
14
14
  loading?: boolean;
15
+ /** Added to the dialog's content box — an app that scopes the belt's preflight under a class
16
+ * (binary-server's admin: `cb-scope`) passes it here, because the dialog portals to <body>. */
17
+ className?: string;
15
18
  }
16
19
  /**
17
20
  * The single confirm/cancel dialog — replaces both cursedbelt's old `ConfirmDialog` and
@@ -21,5 +24,5 @@ export interface ConfirmDialogProps {
21
24
  * Focus lands on the confirm button for a normal confirmation (Enter confirms), but on
22
25
  * Cancel for a destructive one (so a stray Enter can't fire the irreversible action).
23
26
  */
24
- export declare function ConfirmDialog({ open, onConfirm, onCancel, title, message, confirmLabel, cancelLabel, destructive, loading, }: ConfirmDialogProps): import("react").JSX.Element;
27
+ export declare function ConfirmDialog({ open, onConfirm, onCancel, title, message, confirmLabel, cancelLabel, destructive, loading, className, }: ConfirmDialogProps): import("react").JSX.Element;
25
28
  //# sourceMappingURL=ConfirmDialog.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ConfirmDialog.d.ts","sourceRoot":"","sources":["../../../src/react/components/ConfirmDialog.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAU,MAAM,OAAO,CAAC;AAK/C,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,OAAO,CAAC;IACd,SAAS,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACtC,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;yEACqE;IACrE,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,yFAAyF;IACzF,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,EAC5B,IAAI,EACJ,SAAS,EACT,QAAQ,EACR,KAAK,EACL,OAAO,EACP,YAAwB,EACxB,WAAsB,EACtB,WAAmB,EACnB,OAAe,GAChB,EAAE,kBAAkB,+BAiEpB"}
1
+ {"version":3,"file":"ConfirmDialog.d.ts","sourceRoot":"","sources":["../../../src/react/components/ConfirmDialog.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAU,MAAM,OAAO,CAAC;AAK/C,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,OAAO,CAAC;IACd,SAAS,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACtC,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;yEACqE;IACrE,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,yFAAyF;IACzF,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;oGACgG;IAChG,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,EAC5B,IAAI,EACJ,SAAS,EACT,QAAQ,EACR,KAAK,EACL,OAAO,EACP,YAAwB,EACxB,WAAsB,EACtB,WAAmB,EACnB,OAAe,EACf,SAAS,GACV,EAAE,kBAAkB,+BAkEpB"}
@@ -11,12 +11,12 @@ import { Dialog, DialogContent, DialogDescription, DialogTitle } from './dialog.
11
11
  * Focus lands on the confirm button for a normal confirmation (Enter confirms), but on
12
12
  * Cancel for a destructive one (so a stray Enter can't fire the irreversible action).
13
13
  */
14
- export function ConfirmDialog({ open, onConfirm, onCancel, title, message, confirmLabel = 'Confirm', cancelLabel = 'Cancel', destructive = false, loading = false, }) {
14
+ export function ConfirmDialog({ open, onConfirm, onCancel, title, message, confirmLabel = 'Confirm', cancelLabel = 'Cancel', destructive = false, loading = false, className, }) {
15
15
  const contentRef = useRef(null);
16
16
  return (_jsx(Dialog, { open: open, onOpenChange: (v) => {
17
17
  if (!v)
18
18
  onCancel();
19
- }, children: _jsxs(DialogContent, { ref: contentRef, className: cn('fixed top-1/2 left-1/2 flex w-[calc(100vw-2rem)] max-w-sm -translate-x-1/2 -translate-y-1/2 flex-col gap-4', 'rounded-xl border border-border bg-popover p-6 text-popover-foreground shadow-overlay', 'data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95', 'data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95'),
19
+ }, children: _jsxs(DialogContent, { ref: contentRef, className: cn('fixed top-1/2 left-1/2 flex w-[calc(100vw-2rem)] max-w-sm -translate-x-1/2 -translate-y-1/2 flex-col gap-4', 'rounded-xl border border-border bg-popover p-6 text-popover-foreground shadow-overlay', 'data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95', 'data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95', className),
20
20
  // Land focus on the safe button for destructive actions; otherwise on confirm.
21
21
  // Button isn't a forwardRef component, so target it by data attribute.
22
22
  onOpenAutoFocus: (e) => {
@@ -1 +1 @@
1
- {"version":3,"file":"ConfirmDialog.js","sourceRoot":"","sources":["../../../src/react/components/ConfirmDialog.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAkB,MAAM,EAAE,MAAM,OAAO,CAAC;AAC/C,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAClC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAiBpF;;;;;;;GAOG;AACH,MAAM,UAAU,aAAa,CAAC,EAC5B,IAAI,EACJ,SAAS,EACT,QAAQ,EACR,KAAK,EACL,OAAO,EACP,YAAY,GAAG,SAAS,EACxB,WAAW,GAAG,QAAQ,EACtB,WAAW,GAAG,KAAK,EACnB,OAAO,GAAG,KAAK,GACI;IACnB,MAAM,UAAU,GAAG,MAAM,CAAiB,IAAI,CAAC,CAAC;IAEhD,OAAO,CACL,KAAC,MAAM,IACL,IAAI,EAAE,IAAI,EACV,YAAY,EAAE,CAAC,CAAC,EAAE,EAAE;YAClB,IAAI,CAAC,CAAC;gBAAE,QAAQ,EAAE,CAAC;QACrB,CAAC,YAED,MAAC,aAAa,IACZ,GAAG,EAAE,UAAU,EACf,SAAS,EAAE,EAAE,CACX,4GAA4G,EAC5G,uFAAuF,EACvF,uFAAuF,EACvF,gGAAgG,CACjG;YACD,+EAA+E;YAC/E,uEAAuE;YACvE,eAAe,EAAE,CAAC,CAAC,EAAE,EAAE;gBACrB,CAAC,CAAC,cAAc,EAAE,CAAC;gBACnB,UAAU,CAAC,OAAO;oBAChB,EAAE,aAAa,CACb,WAAW,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,mBAAmB,CACvD;oBACD,EAAE,KAAK,EAAE,CAAC;YACd,CAAC,aAED,eAAK,SAAS,EAAC,+BAA+B,aAC5C,KAAC,WAAW,IAAC,SAAS,EAAC,iDAAiD,YACrE,KAAK,GACM,EACb,OAAO,CAAC,CAAC,CAAC,CACT,KAAC,iBAAiB,IAAC,SAAS,EAAC,+BAA+B,YACzD,OAAO,GACU,CACrB,CAAC,CAAC,CAAC,IAAI,IACJ,EACN,eAAK,SAAS,EAAC,wBAAwB,aACrC,KAAC,MAAM,4BAEL,OAAO,EAAC,WAAW,EACnB,OAAO,EAAE,QAAQ,EACjB,QAAQ,EAAE,OAAO,EACjB,OAAO,EAAE,WAAW,YAEnB,WAAW,GACL,EACT,KAAC,MAAM;4BAEL,uEAAuE;4BACvE,0EAA0E;4BAC1E,uEAAuE;4BACvE,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,SAAS,EACtD,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,SAAS,EAAE,EAC/B,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,YAAY,YAEpB,YAAY,GACN,IACL,IACQ,GACT,CACV,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"ConfirmDialog.js","sourceRoot":"","sources":["../../../src/react/components/ConfirmDialog.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAkB,MAAM,EAAE,MAAM,OAAO,CAAC;AAC/C,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAClC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAoBpF;;;;;;;GAOG;AACH,MAAM,UAAU,aAAa,CAAC,EAC5B,IAAI,EACJ,SAAS,EACT,QAAQ,EACR,KAAK,EACL,OAAO,EACP,YAAY,GAAG,SAAS,EACxB,WAAW,GAAG,QAAQ,EACtB,WAAW,GAAG,KAAK,EACnB,OAAO,GAAG,KAAK,EACf,SAAS,GACU;IACnB,MAAM,UAAU,GAAG,MAAM,CAAiB,IAAI,CAAC,CAAC;IAEhD,OAAO,CACL,KAAC,MAAM,IACL,IAAI,EAAE,IAAI,EACV,YAAY,EAAE,CAAC,CAAC,EAAE,EAAE;YAClB,IAAI,CAAC,CAAC;gBAAE,QAAQ,EAAE,CAAC;QACrB,CAAC,YAED,MAAC,aAAa,IACZ,GAAG,EAAE,UAAU,EACf,SAAS,EAAE,EAAE,CACX,4GAA4G,EAC5G,uFAAuF,EACvF,uFAAuF,EACvF,gGAAgG,EAChG,SAAS,CACV;YACD,+EAA+E;YAC/E,uEAAuE;YACvE,eAAe,EAAE,CAAC,CAAC,EAAE,EAAE;gBACrB,CAAC,CAAC,cAAc,EAAE,CAAC;gBACnB,UAAU,CAAC,OAAO;oBAChB,EAAE,aAAa,CACb,WAAW,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,mBAAmB,CACvD;oBACD,EAAE,KAAK,EAAE,CAAC;YACd,CAAC,aAED,eAAK,SAAS,EAAC,+BAA+B,aAC5C,KAAC,WAAW,IAAC,SAAS,EAAC,iDAAiD,YACrE,KAAK,GACM,EACb,OAAO,CAAC,CAAC,CAAC,CACT,KAAC,iBAAiB,IAAC,SAAS,EAAC,+BAA+B,YACzD,OAAO,GACU,CACrB,CAAC,CAAC,CAAC,IAAI,IACJ,EACN,eAAK,SAAS,EAAC,wBAAwB,aACrC,KAAC,MAAM,4BAEL,OAAO,EAAC,WAAW,EACnB,OAAO,EAAE,QAAQ,EACjB,QAAQ,EAAE,OAAO,EACjB,OAAO,EAAE,WAAW,YAEnB,WAAW,GACL,EACT,KAAC,MAAM;4BAEL,uEAAuE;4BACvE,0EAA0E;4BAC1E,uEAAuE;4BACvE,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,SAAS,EACtD,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,SAAS,EAAE,EAC/B,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,YAAY,YAEpB,YAAY,GACN,IACL,IACQ,GACT,CACV,CAAC;AACJ,CAAC"}
@@ -1,4 +1,5 @@
1
1
  import type { ReactNode } from 'react';
2
+ import { type ClipboardWriter } from '../hooks/useCopyToClipboard.js';
2
3
  import type { TooltipPlacement } from './Tooltip.js';
3
4
  export interface CopyButtonProps {
4
5
  /** Text written to the clipboard (or a resolver called on click). */
@@ -22,6 +23,14 @@ export interface CopyButtonProps {
22
23
  copyIcon?: ReactNode;
23
24
  copiedIcon?: ReactNode;
24
25
  iconSize?: number;
26
+ /**
27
+ * Take over the clipboard write — resolve `false` for a failed copy. The ✓, the
28
+ * toast, `onCopied` and `onError` all still happen here. The vault copies a secret
29
+ * through a writer that wipes the clipboard ~45s later, which is why it can use
30
+ * this button instead of a hand-rolled one (task 2402; `SecretInput` has the same
31
+ * `onCopy` seam).
32
+ */
33
+ onCopy?: ClipboardWriter;
25
34
  onCopied?: (text: string) => void;
26
35
  onError?: () => void;
27
36
  /** Stop the click bubbling (e.g. inside a clickable row). */
@@ -36,5 +45,5 @@ export interface CopyButtonProps {
36
45
  }
37
46
  /** A copy-to-clipboard button: a transient inline ✓ plus a sonner success toast
38
47
  * (the single, app-wide copy confirmation — no Redux, no hand-rolled toast). */
39
- export declare function CopyButton({ value, label, copiedLabel, children, copiedText, confirmToast, showIcon, copyIcon, copiedIcon, iconSize, onCopied, onError, stopPropagation, tooltip, tooltipPlacement, resetMs, className, disabled, }: CopyButtonProps): import("react").JSX.Element;
48
+ export declare function CopyButton({ value, label, copiedLabel, children, copiedText, confirmToast, showIcon, copyIcon, copiedIcon, iconSize, onCopy, onCopied, onError, stopPropagation, tooltip, tooltipPlacement, resetMs, className, disabled, }: CopyButtonProps): import("react").JSX.Element;
40
49
  //# sourceMappingURL=CopyButton.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"CopyButton.d.ts","sourceRoot":"","sources":["../../../src/react/components/CopyButton.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAc,SAAS,EAAE,MAAM,OAAO,CAAC;AAKnD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAGrD,MAAM,WAAW,eAAe;IAC9B,qEAAqE;IACrE,KAAK,EAAE,MAAM,GAAG,CAAC,MAAM,MAAM,CAAC,CAAC;IAC/B,oEAAoE;IACpE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,4EAA4E;IAC5E,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,8DAA8D;IAC9D,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,gFAAgF;IAChF,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;OAIG;IACH,YAAY,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAChC,8CAA8C;IAC9C,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,6DAA6D;IAC7D,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,iDAAiD;IACjD,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC,sEAAsE;IACtE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;iFACiF;AACjF,wBAAgB,UAAU,CAAC,EACzB,KAAK,EACL,KAA2B,EAC3B,WAAsB,EACtB,QAAQ,EACR,UAAqB,EACrB,YAAmB,EACnB,QAAe,EACf,QAAQ,EACR,UAAU,EACV,QAAa,EACb,QAAQ,EACR,OAAO,EACP,eAAe,EACf,OAAO,EACP,gBAAgB,EAChB,OAAO,EACP,SAAS,EACT,QAAQ,GACT,EAAE,eAAe,+BAsCjB"}
1
+ {"version":3,"file":"CopyButton.d.ts","sourceRoot":"","sources":["../../../src/react/components/CopyButton.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAc,SAAS,EAAE,MAAM,OAAO,CAAC;AAEnD,OAAO,EAAE,KAAK,eAAe,EAAsB,MAAM,gCAAgC,CAAC;AAG1F,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAGrD,MAAM,WAAW,eAAe;IAC9B,qEAAqE;IACrE,KAAK,EAAE,MAAM,GAAG,CAAC,MAAM,MAAM,CAAC,CAAC;IAC/B,oEAAoE;IACpE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,4EAA4E;IAC5E,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,8DAA8D;IAC9D,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,gFAAgF;IAChF,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;OAIG;IACH,YAAY,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAChC,8CAA8C;IAC9C,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;;;OAMG;IACH,MAAM,CAAC,EAAE,eAAe,CAAC;IACzB,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,6DAA6D;IAC7D,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,iDAAiD;IACjD,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC,sEAAsE;IACtE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;iFACiF;AACjF,wBAAgB,UAAU,CAAC,EACzB,KAAK,EACL,KAA2B,EAC3B,WAAsB,EACtB,QAAQ,EACR,UAAqB,EACrB,YAAmB,EACnB,QAAe,EACf,QAAQ,EACR,UAAU,EACV,QAAa,EACb,MAAM,EACN,QAAQ,EACR,OAAO,EACP,eAAe,EACf,OAAO,EACP,gBAAgB,EAChB,OAAO,EACP,SAAS,EACT,QAAQ,GACT,EAAE,eAAe,+BAsCjB"}
@@ -7,8 +7,8 @@ import { Button } from './Button.js';
7
7
  import { TAP_TARGET } from '../lib/tapTarget.js';
8
8
  /** A copy-to-clipboard button: a transient inline ✓ plus a sonner success toast
9
9
  * (the single, app-wide copy confirmation — no Redux, no hand-rolled toast). */
10
- export function CopyButton({ value, label = 'Copy to clipboard', copiedLabel = 'Copied', children, copiedText = 'Copied', confirmToast = true, showIcon = true, copyIcon, copiedIcon, iconSize = 16, onCopied, onError, stopPropagation, tooltip, tooltipPlacement, resetMs, className, disabled, }) {
11
- const { copied, copy } = useCopyToClipboard(resetMs);
10
+ export function CopyButton({ value, label = 'Copy to clipboard', copiedLabel = 'Copied', children, copiedText = 'Copied', confirmToast = true, showIcon = true, copyIcon, copiedIcon, iconSize = 16, onCopy, onCopied, onError, stopPropagation, tooltip, tooltipPlacement, resetMs, className, disabled, }) {
11
+ const { copied, copy } = useCopyToClipboard(resetMs, onCopy);
12
12
  const onClick = async (e) => {
13
13
  if (stopPropagation)
14
14
  e.stopPropagation();
@@ -1 +1 @@
1
- {"version":3,"file":"CopyButton.js","sourceRoot":"","sources":["../../../src/react/components/CopyButton.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAE3C,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAC/B,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAClC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAqCjD;iFACiF;AACjF,MAAM,UAAU,UAAU,CAAC,EACzB,KAAK,EACL,KAAK,GAAG,mBAAmB,EAC3B,WAAW,GAAG,QAAQ,EACtB,QAAQ,EACR,UAAU,GAAG,QAAQ,EACrB,YAAY,GAAG,IAAI,EACnB,QAAQ,GAAG,IAAI,EACf,QAAQ,EACR,UAAU,EACV,QAAQ,GAAG,EAAE,EACb,QAAQ,EACR,OAAO,EACP,eAAe,EACf,OAAO,EACP,gBAAgB,EAChB,OAAO,EACP,SAAS,EACT,QAAQ,GACQ;IAChB,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;IAErD,MAAM,OAAO,GAAG,KAAK,EAAE,CAAgC,EAAE,EAAE;QACzD,IAAI,eAAe;YAAE,CAAC,CAAC,eAAe,EAAE,CAAC;QACzC,MAAM,IAAI,GAAG,OAAO,KAAK,KAAK,UAAU,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;QAC3D,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5B,IAAI,EAAE,EAAE,CAAC;YACP,IAAI,YAAY,KAAK,KAAK,EAAE,CAAC;gBAC3B,KAAK,CAAC,OAAO,CAAC,OAAO,YAAY,KAAK,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC;YACzF,CAAC;YACD,QAAQ,EAAE,CAAC,IAAI,CAAC,CAAC;QACnB,CAAC;aAAM,CAAC;YACN,OAAO,EAAE,EAAE,CAAC;QACd,CAAC;IACH,CAAC,CAAC;IAEF,OAAO,CACL,MAAC,MAAM,IACL,OAAO,EAAC,OAAO,gBACH,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,EACxC,OAAO,EAAE,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,EAClD,WAAW,EAAE,gBAAgB,EAC7B,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,EAAE,CACX,oLAAoL,UAAU,EAAE,EAChM,SAAS,CACV,aAEA,QAAQ;gBACP,CAAC,CAAC,MAAM;oBACN,CAAC,CAAC,CAAC,UAAU,IAAI,KAAC,KAAK,IAAC,IAAI,EAAE,QAAQ,GAAI,CAAC;oBAC3C,CAAC,CAAC,CAAC,QAAQ,IAAI,KAAC,IAAI,IAAC,IAAI,EAAE,QAAQ,GAAI,CAAC;gBAC1C,CAAC,CAAC,IAAI,EACP,OAAO,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,IACpE,CACV,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"CopyButton.js","sourceRoot":"","sources":["../../../src/react/components/CopyButton.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAE3C,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAC/B,OAAO,EAAwB,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAC1F,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAClC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AA6CjD;iFACiF;AACjF,MAAM,UAAU,UAAU,CAAC,EACzB,KAAK,EACL,KAAK,GAAG,mBAAmB,EAC3B,WAAW,GAAG,QAAQ,EACtB,QAAQ,EACR,UAAU,GAAG,QAAQ,EACrB,YAAY,GAAG,IAAI,EACnB,QAAQ,GAAG,IAAI,EACf,QAAQ,EACR,UAAU,EACV,QAAQ,GAAG,EAAE,EACb,MAAM,EACN,QAAQ,EACR,OAAO,EACP,eAAe,EACf,OAAO,EACP,gBAAgB,EAChB,OAAO,EACP,SAAS,EACT,QAAQ,GACQ;IAChB,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,kBAAkB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAE7D,MAAM,OAAO,GAAG,KAAK,EAAE,CAAgC,EAAE,EAAE;QACzD,IAAI,eAAe;YAAE,CAAC,CAAC,eAAe,EAAE,CAAC;QACzC,MAAM,IAAI,GAAG,OAAO,KAAK,KAAK,UAAU,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;QAC3D,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5B,IAAI,EAAE,EAAE,CAAC;YACP,IAAI,YAAY,KAAK,KAAK,EAAE,CAAC;gBAC3B,KAAK,CAAC,OAAO,CAAC,OAAO,YAAY,KAAK,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC;YACzF,CAAC;YACD,QAAQ,EAAE,CAAC,IAAI,CAAC,CAAC;QACnB,CAAC;aAAM,CAAC;YACN,OAAO,EAAE,EAAE,CAAC;QACd,CAAC;IACH,CAAC,CAAC;IAEF,OAAO,CACL,MAAC,MAAM,IACL,OAAO,EAAC,OAAO,gBACH,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,EACxC,OAAO,EAAE,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,EAClD,WAAW,EAAE,gBAAgB,EAC7B,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,EAAE,CACX,oLAAoL,UAAU,EAAE,EAChM,SAAS,CACV,aAEA,QAAQ;gBACP,CAAC,CAAC,MAAM;oBACN,CAAC,CAAC,CAAC,UAAU,IAAI,KAAC,KAAK,IAAC,IAAI,EAAE,QAAQ,GAAI,CAAC;oBAC3C,CAAC,CAAC,CAAC,QAAQ,IAAI,KAAC,IAAI,IAAC,IAAI,EAAE,QAAQ,GAAI,CAAC;gBAC1C,CAAC,CAAC,IAAI,EACP,OAAO,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,IACpE,CACV,CAAC;AACJ,CAAC"}
@@ -5,6 +5,7 @@ import type { DropdownMenuItem } from '../DropdownMenu.js';
5
5
  import { type FilterQuery } from './filterQuery.js';
6
6
  import { type RowDragPayload } from './rowDrag.js';
7
7
  import type { ColDef, DataTableHandle, DataTableRowProps, DataTableSelectAll, DataTableServerWindow, TableViewMode } from './types.js';
8
+ import { AUTO_TRACK_FLOOR_PX } from './columnPriority.js';
8
9
  import type { TableToolbarProps } from './Toolbar.js';
9
10
  /**
10
11
  * Load the table's lazy parts — the toolbar, the pager, the row kebab's menu — now,
@@ -113,6 +114,9 @@ export interface DataTableProps<TRow extends Record<string, unknown>> {
113
114
  /** Extra per-row operations behind a trailing kebab (`⋯`) menu — return the items for
114
115
  * one row (empty array ⇒ no kebab on that row). Renders the actions column. */
115
116
  rowMenu?: (row: TRow) => DropdownMenuItem[];
117
+ /** The kebab's accessible name for one row — `(row) => \`More for ${row.title}\``. Default
118
+ * `Row actions`, identical on every row. */
119
+ rowMenuLabel?: (row: TRow) => string;
116
120
  loading?: boolean;
117
121
  /** Shown when there are no rows (default: a plain "No results"). */
118
122
  emptyState?: ReactNode;
@@ -223,10 +227,27 @@ export interface DataTableProps<TRow extends Record<string, unknown>> {
223
227
  * sized from the server's count, pages loading as they scroll into view, a scrollbar
224
228
  * that can be dragged to a row nobody has fetched — is {@link serverWindow}, which
225
229
  * implies this.
230
+ *
231
+ * ── `scroll: 'window'` — the PAGE is the scroller (forge task 2403) ────────
232
+ * The default above needs a height-bounded parent. A page-scrolling shell (`min-h-dvh` and
233
+ * a `sticky` header — apps/flix, and every satellite shaped like it) bounds nothing, so an
234
+ * own scroller simply grows to its content and the virtualizer mounts every row: measured in
235
+ * flix, a 97,512px "scroller" holding 1,740 rows while every unit test passed. With
236
+ * `'window'` the table owns NO scroller (`scrollBody` is not implied), the virtualizer
237
+ * measures the viewport, and its `scrollMargin` is the table body's distance down the
238
+ * document, re-read on every render and every resize. Not with {@link serverWindow}, which
239
+ * needs its own scroller to measure. `stickyHeader` pins to the viewport's top, so under a
240
+ * sticky app header leave it off.
241
+ *
242
+ * `onNearEnd` fires when the last rendered row is within `nearEndCount` (default 8) of the
243
+ * end of `data` — infinite paging over rows the caller appends, in either scroll mode.
226
244
  */
227
245
  virtualize?: boolean | {
228
246
  estimateRowHeight?: number;
229
247
  overscan?: number;
248
+ scroll?: 'self' | 'window';
249
+ onNearEnd?: () => void;
250
+ nearEndCount?: number;
230
251
  };
231
252
  /**
232
253
  * SERVER-WINDOWED rows: `data` is only a WINDOW of a result set the server holds —
@@ -288,6 +309,10 @@ export interface DataTableProps<TRow extends Record<string, unknown>> {
288
309
  *
289
310
  * Default `true`; pass `false` only for tables that are genuinely narrow
290
311
  * enough to fit anywhere.
312
+ *
313
+ * Under {@link virtualize} / {@link serverWindow} the table reads which tier its width
314
+ * shows and windows THAT one — the other two mount no rows (forge task 2404). A
315
+ * server window's fixed `rowHeight` is the grid's; the cards and the list are measured.
291
316
  */
292
317
  mobileCards?: boolean;
293
318
  /** Server-driven sort/filter/pagination: the table renders `data` verbatim and reports
@@ -528,7 +553,7 @@ export interface DataTableProps<TRow extends Record<string, unknown>> {
528
553
  * zero — this is the share below which the division stops and the table
529
554
  * overflows its wrapper instead.
530
555
  */
531
- export declare const AUTO_TRACK_FLOOR_PX = 120;
556
+ export { AUTO_TRACK_FLOOR_PX };
532
557
  /**
533
558
  * The narrowest width at which a `fixedLayout` table still honors the tracks its
534
559
  * columns declared: the sum of every visible column's floor (`minWidth`, else a
@@ -618,5 +643,5 @@ export declare function mergeRowProps<T extends Record<string, unknown>>(own: T,
618
643
  * full-width accordion detail row that never breaks column alignment, and an automatic
619
644
  * stacked-card layout under `sm` so phones are never handed a clipped grid.
620
645
  */
621
- 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, toolbarOptions, multiSort, filterQuery: filterQueryProp, onFilterQueryChange, getRowDrag, dragSourceId, selectedIds, onSelectionChange, isRowSelectable, unselectableReason, selectionLabel, selectionSummary, selectAll, getRowProps, columnVisibility: columnVisibilityProp, onColumnVisibilityChange, columnsPersistKey, }: DataTableProps<TRow>): import("react").JSX.Element;
646
+ export declare function DataTable<TRow extends Record<string, unknown>>({ columns, data, getRowId, onRowClick, onRowEdit, onRowDelete, rowMenu, rowMenuLabel, 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, toolbarOptions, multiSort, filterQuery: filterQueryProp, onFilterQueryChange, getRowDrag, dragSourceId, selectedIds, onSelectionChange, isRowSelectable, unselectableReason, selectionLabel, selectionSummary, selectAll, getRowProps, columnVisibility: columnVisibilityProp, onColumnVisibilityChange, columnsPersistKey, }: DataTableProps<TRow>): import("react").JSX.Element;
622
647
  //# 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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"}