@cascivo/react 0.12.0 → 0.13.1

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 (237) hide show
  1. package/dist/accordion/accordion.js +46 -44
  2. package/dist/action-sheet/action-sheet.js +16 -16
  3. package/dist/alert-dialog/alert-dialog.js +34 -34
  4. package/dist/app-shell/app-shell.css +1 -1
  5. package/dist/app-shell/app-shell.js +36 -33
  6. package/dist/app-shell/app-shell.module.js +8 -8
  7. package/dist/avatar-group/avatar-group.js +6 -6
  8. package/dist/badge/badge.js +17 -10
  9. package/dist/bottom-sheet/bottom-sheet.js +18 -18
  10. package/dist/button/button.css +1 -1
  11. package/dist/button/button.js +15 -12
  12. package/dist/button/button.module.js +1 -1
  13. package/dist/button-group/button-group.js +8 -8
  14. package/dist/card/card.css +1 -1
  15. package/dist/card/card.module.js +8 -8
  16. package/dist/carousel/carousel.js +20 -20
  17. package/dist/checkbox/checkbox.js +21 -21
  18. package/dist/checkbox-card/checkbox-card.js +15 -13
  19. package/dist/collapsible/collapsible.js +7 -7
  20. package/dist/color-picker/color-picker.js +26 -26
  21. package/dist/combobox/combobox.css +1 -1
  22. package/dist/combobox/combobox.js +86 -86
  23. package/dist/combobox/combobox.module.js +15 -15
  24. package/dist/command-menu/command-menu.js +111 -111
  25. package/dist/comparison/comparison.js +10 -10
  26. package/dist/context-menu/context-menu.js +9 -9
  27. package/dist/copy-button/copy-button.js +18 -16
  28. package/dist/data-table/data-table.css +1 -1
  29. package/dist/data-table/data-table.js +8 -2
  30. package/dist/data-table/data-table.module.js +29 -29
  31. package/dist/date-picker/date-picker.css +1 -1
  32. package/dist/date-picker/date-picker.js +25 -25
  33. package/dist/date-picker/date-picker.module.js +19 -19
  34. package/dist/date-range-picker/date-range-picker.js +26 -26
  35. package/dist/drawer/drawer.css +1 -1
  36. package/dist/drawer/drawer.js +18 -17
  37. package/dist/drawer/drawer.module.js +9 -9
  38. package/dist/dropdown/dropdown.js +48 -48
  39. package/dist/editable/editable.js +11 -11
  40. package/dist/fab/fab.js +53 -53
  41. package/dist/field/field.js +8 -8
  42. package/dist/file-uploader/file-uploader.css +1 -1
  43. package/dist/file-uploader/file-uploader.js +19 -19
  44. package/dist/file-uploader/file-uploader.module.js +14 -14
  45. package/dist/filter/filter.js +10 -9
  46. package/dist/header-panel/header-panel.js +31 -31
  47. package/dist/hover-card/hover-card.js +21 -21
  48. package/dist/icon-button/icon-button.css +1 -1
  49. package/dist/icon-button/icon-button.js +5 -5
  50. package/dist/icon-button/icon-button.module.js +1 -1
  51. package/dist/index.d.ts +1475 -251
  52. package/dist/input/input.css +1 -1
  53. package/dist/input/input.js +22 -21
  54. package/dist/input/input.module.js +5 -5
  55. package/dist/item/item.css +1 -1
  56. package/dist/item/item.module.js +6 -6
  57. package/dist/layouts/src/page-header/page-header.css +1 -0
  58. package/dist/layouts/src/page-header/page-header.js +33 -0
  59. package/dist/layouts/src/page-header/page-header.module.js +13 -0
  60. package/dist/link/link.js +14 -12
  61. package/dist/log-viewer/log-viewer.js +26 -26
  62. package/dist/menu/menu.js +20 -20
  63. package/dist/menu-button/menu-button.js +48 -48
  64. package/dist/menubar/menubar.js +42 -42
  65. package/dist/modal/modal.css +1 -1
  66. package/dist/modal/modal.js +41 -35
  67. package/dist/modal/modal.module.js +8 -7
  68. package/dist/multi-select/multi-select.css +1 -1
  69. package/dist/multi-select/multi-select.js +57 -57
  70. package/dist/multi-select/multi-select.module.js +11 -11
  71. package/dist/native-select/native-select.js +13 -11
  72. package/dist/navigation-menu/navigation-menu.js +46 -46
  73. package/dist/node/accordion/accordion.js +46 -44
  74. package/dist/node/action-sheet/action-sheet.js +16 -16
  75. package/dist/node/alert-dialog/alert-dialog.js +34 -34
  76. package/dist/node/app-shell/app-shell.js +36 -33
  77. package/dist/node/app-shell/app-shell.module.js +8 -8
  78. package/dist/node/avatar-group/avatar-group.js +6 -6
  79. package/dist/node/badge/badge.js +17 -10
  80. package/dist/node/bottom-sheet/bottom-sheet.js +18 -18
  81. package/dist/node/button/button.js +15 -12
  82. package/dist/node/button/button.module.js +1 -1
  83. package/dist/node/button-group/button-group.js +8 -8
  84. package/dist/node/card/card.module.js +8 -8
  85. package/dist/node/carousel/carousel.js +20 -20
  86. package/dist/node/checkbox/checkbox.js +21 -21
  87. package/dist/node/checkbox-card/checkbox-card.js +15 -13
  88. package/dist/node/collapsible/collapsible.js +7 -7
  89. package/dist/node/color-picker/color-picker.js +26 -26
  90. package/dist/node/combobox/combobox.js +86 -86
  91. package/dist/node/combobox/combobox.module.js +15 -15
  92. package/dist/node/command-menu/command-menu.js +111 -111
  93. package/dist/node/comparison/comparison.js +10 -10
  94. package/dist/node/context-menu/context-menu.js +9 -9
  95. package/dist/node/copy-button/copy-button.js +18 -16
  96. package/dist/node/data-table/data-table.js +8 -2
  97. package/dist/node/data-table/data-table.module.js +29 -29
  98. package/dist/node/date-picker/date-picker.js +25 -25
  99. package/dist/node/date-picker/date-picker.module.js +19 -19
  100. package/dist/node/date-range-picker/date-range-picker.js +26 -26
  101. package/dist/node/drawer/drawer.js +18 -17
  102. package/dist/node/drawer/drawer.module.js +9 -9
  103. package/dist/node/dropdown/dropdown.js +48 -48
  104. package/dist/node/editable/editable.js +11 -11
  105. package/dist/node/fab/fab.js +53 -53
  106. package/dist/node/field/field.js +8 -8
  107. package/dist/node/file-uploader/file-uploader.js +19 -19
  108. package/dist/node/file-uploader/file-uploader.module.js +14 -14
  109. package/dist/node/filter/filter.js +10 -9
  110. package/dist/node/header-panel/header-panel.js +31 -31
  111. package/dist/node/hover-card/hover-card.js +21 -21
  112. package/dist/node/icon-button/icon-button.js +5 -5
  113. package/dist/node/icon-button/icon-button.module.js +1 -1
  114. package/dist/node/input/input.js +22 -21
  115. package/dist/node/input/input.module.js +5 -5
  116. package/dist/node/item/item.module.js +6 -6
  117. package/dist/node/layouts/src/page-header/page-header.js +33 -0
  118. package/dist/node/layouts/src/page-header/page-header.module.js +12 -0
  119. package/dist/node/link/link.js +14 -12
  120. package/dist/node/log-viewer/log-viewer.js +26 -26
  121. package/dist/node/menu/menu.js +20 -20
  122. package/dist/node/menu-button/menu-button.js +48 -48
  123. package/dist/node/menubar/menubar.js +42 -42
  124. package/dist/node/modal/modal.js +41 -35
  125. package/dist/node/modal/modal.module.js +8 -7
  126. package/dist/node/multi-select/multi-select.js +57 -57
  127. package/dist/node/multi-select/multi-select.module.js +11 -11
  128. package/dist/node/native-select/native-select.js +13 -11
  129. package/dist/node/navigation-menu/navigation-menu.js +46 -46
  130. package/dist/node/notification/notification.js +50 -44
  131. package/dist/node/notification/notification.module.js +7 -7
  132. package/dist/node/number-input/number-input.js +52 -50
  133. package/dist/node/number-input/number-input.module.js +8 -8
  134. package/dist/node/otp-input/otp-input.js +8 -8
  135. package/dist/node/otp-input/otp-input.module.js +2 -2
  136. package/dist/node/overflow-menu/overflow-menu.js +18 -13
  137. package/dist/node/password-input/password-input.js +28 -27
  138. package/dist/node/password-input/password-input.module.js +7 -7
  139. package/dist/node/popover/popover.js +26 -24
  140. package/dist/node/progress/progress.js +3 -2
  141. package/dist/node/pull-to-refresh/pull-to-refresh.js +13 -13
  142. package/dist/node/radial-progress/radial-progress.js +5 -5
  143. package/dist/node/radio/radio.js +23 -22
  144. package/dist/node/radio-card/radio-card.js +27 -26
  145. package/dist/node/react/src/index.js +4 -3
  146. package/dist/node/react/src/theme.js +30 -19
  147. package/dist/node/resizable/resizable.js +11 -11
  148. package/dist/node/scroll-area/scroll-area.js +4 -4
  149. package/dist/node/search/search.js +49 -49
  150. package/dist/node/search/search.module.js +5 -5
  151. package/dist/node/select/select.js +27 -26
  152. package/dist/node/sheet/sheet.js +11 -10
  153. package/dist/node/sheet/sheet.module.js +5 -5
  154. package/dist/node/side-nav/side-nav.js +91 -91
  155. package/dist/node/skip-nav/skip-nav.js +12 -12
  156. package/dist/node/slider/slider.js +13 -11
  157. package/dist/node/stat/stat.js +6 -5
  158. package/dist/node/stat/stat.module.js +7 -7
  159. package/dist/node/status/status.js +18 -11
  160. package/dist/node/steps/steps.js +23 -23
  161. package/dist/node/structured-list/structured-list.js +33 -32
  162. package/dist/node/tabs/tabs.js +49 -47
  163. package/dist/node/tag/tag.js +22 -15
  164. package/dist/node/tags-input/tags-input.js +35 -35
  165. package/dist/node/tags-input/tags-input.module.js +4 -4
  166. package/dist/node/textarea/textarea.js +22 -21
  167. package/dist/node/tile/tile.module.js +3 -3
  168. package/dist/node/time-picker/time-picker.js +22 -21
  169. package/dist/node/time-picker/time-picker.module.js +5 -5
  170. package/dist/node/timeline/timeline.js +22 -16
  171. package/dist/node/toast/toast.js +15 -15
  172. package/dist/node/toc/toc.js +8 -8
  173. package/dist/node/toggle/toggle.js +15 -13
  174. package/dist/node/toggle-group/toggle-group.js +10 -10
  175. package/dist/node/toggletip/toggletip.js +9 -9
  176. package/dist/node/tooltip/tooltip.js +5 -5
  177. package/dist/node/tree-view/tree-view.js +32 -32
  178. package/dist/notification/notification.css +1 -1
  179. package/dist/notification/notification.js +50 -44
  180. package/dist/notification/notification.module.js +7 -7
  181. package/dist/number-input/number-input.css +1 -1
  182. package/dist/number-input/number-input.js +52 -50
  183. package/dist/number-input/number-input.module.js +8 -8
  184. package/dist/otp-input/otp-input.css +1 -1
  185. package/dist/otp-input/otp-input.js +8 -8
  186. package/dist/otp-input/otp-input.module.js +2 -2
  187. package/dist/overflow-menu/overflow-menu.js +18 -13
  188. package/dist/password-input/password-input.css +1 -1
  189. package/dist/password-input/password-input.js +28 -27
  190. package/dist/password-input/password-input.module.js +7 -7
  191. package/dist/popover/popover.js +26 -24
  192. package/dist/progress/progress.js +3 -2
  193. package/dist/pull-to-refresh/pull-to-refresh.js +13 -13
  194. package/dist/radial-progress/radial-progress.js +5 -5
  195. package/dist/radio/radio.js +23 -22
  196. package/dist/radio-card/radio-card.js +27 -26
  197. package/dist/react/src/index.js +4 -3
  198. package/dist/react/src/theme.js +30 -19
  199. package/dist/resizable/resizable.js +11 -11
  200. package/dist/scroll-area/scroll-area.js +4 -4
  201. package/dist/search/search.css +1 -1
  202. package/dist/search/search.js +49 -49
  203. package/dist/search/search.module.js +5 -5
  204. package/dist/select/select.js +27 -26
  205. package/dist/sheet/sheet.css +1 -1
  206. package/dist/sheet/sheet.js +11 -10
  207. package/dist/sheet/sheet.module.js +5 -5
  208. package/dist/side-nav/side-nav.js +91 -91
  209. package/dist/skip-nav/skip-nav.js +12 -12
  210. package/dist/slider/slider.js +13 -11
  211. package/dist/stat/stat.css +1 -1
  212. package/dist/stat/stat.js +6 -5
  213. package/dist/stat/stat.module.js +7 -7
  214. package/dist/status/status.js +18 -11
  215. package/dist/steps/steps.js +23 -23
  216. package/dist/structured-list/structured-list.js +33 -32
  217. package/dist/styles.css +87 -23
  218. package/dist/tabs/tabs.js +49 -47
  219. package/dist/tag/tag.js +22 -15
  220. package/dist/tags-input/tags-input.css +1 -1
  221. package/dist/tags-input/tags-input.js +35 -35
  222. package/dist/tags-input/tags-input.module.js +4 -4
  223. package/dist/textarea/textarea.js +22 -21
  224. package/dist/tile/tile.css +1 -1
  225. package/dist/tile/tile.module.js +3 -3
  226. package/dist/time-picker/time-picker.css +1 -1
  227. package/dist/time-picker/time-picker.js +22 -21
  228. package/dist/time-picker/time-picker.module.js +5 -5
  229. package/dist/timeline/timeline.js +22 -16
  230. package/dist/toast/toast.js +15 -15
  231. package/dist/toc/toc.js +8 -8
  232. package/dist/toggle/toggle.js +15 -13
  233. package/dist/toggle-group/toggle-group.js +10 -10
  234. package/dist/toggletip/toggletip.js +9 -9
  235. package/dist/tooltip/tooltip.js +5 -5
  236. package/dist/tree-view/tree-view.js +32 -32
  237. package/package.json +10 -4
package/dist/index.d.ts CHANGED
@@ -21,12 +21,24 @@
21
21
  * Docs: https://cascivo.com/llms.txt — or fully offline, no website needed:
22
22
  * npx -y @cascivo/docs (index; `npx @cascivo/docs <component>` for one doc)
23
23
  */
24
- import { DismissableLayer, DismissableLayerProps, ErrorBoundary, FocusScope, LinkComponent, LinkComponentProps, Machine, MachineConfig, Portal, Presence, RovingOrientation, Signal, Slot, SlotProps, SpaceStep, SuspenseBoundary, UseClipboardOptions, UseClipboardReturn, UseControllableSignalOptions, UseDisclosureOptions, UseDisclosureReturn, VisuallyHidden, VisuallyHiddenProps, batch, cn, composeRefs, computePosition, computed, createMachine, createScope, createStreamBuffer, effect, getLinkComponent, mergeProps, setLinkComponent, signal, useAnchorPosition, useClipboard, useComputed, useControllableSignal, useDisclosure, useEffectPropSignal, useId, useMachine, useMediaQuery, useRovingFocus, useScope, useScrollLock, useSignal, useSignalEffect, useSignals, useStreamBuffer, useTypeahead } from "@cascivo/core";
24
+ import { DismissableLayer, DismissableLayerProps, ErrorBoundary, FocusScope, LinkComponent, LinkComponentProps, Machine, MachineConfig, Portal, Presence, ProgressInput, RovingOrientation, Signal, Slot, SlotProps, SpaceStep, SuspenseBoundary, ToneInput, UseClipboardOptions, UseClipboardReturn, UseControllableSignalOptions, UseDisclosureOptions, UseDisclosureReturn, VisuallyHidden, VisuallyHiddenProps, batch, cn, composeRefs, computePosition, computed, createMachine, createScope, createStreamBuffer, effect, getLinkComponent, mergeProps, setLinkComponent, signal, useAnchorPosition, useClipboard, useComputed, useControllableSignal, useDisclosure, useEffectPropSignal, useId, useMachine, useMediaQuery, useRovingFocus, useScope, useScrollLock, useSignal, useSignalEffect, useSignals, useStreamBuffer, useTypeahead } from "@cascivo/core";
25
25
  import { AnchorHTMLAttributes, ButtonHTMLAttributes, FormHTMLAttributes, HTMLAttributes, ImgHTMLAttributes, InputHTMLAttributes, LabelHTMLAttributes, LiHTMLAttributes, MouseEvent, ReactElement, ReactNode, RefObject, SelectHTMLAttributes, TextareaHTMLAttributes, TimeHTMLAttributes } from "react";
26
26
 
27
27
  interface ButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {
28
+ /**
29
+ * Selects the visual style variant.
30
+ *
31
+ * @defaultValue `primary`
32
+ * @see the component manifest
33
+ */
28
34
  variant?: 'primary' | 'secondary' | 'ghost' | 'destructive';
29
35
  size?: 'sm' | 'md' | 'lg';
36
+ /**
37
+ * When true, shows a loading state.
38
+ *
39
+ * @defaultValue `false`
40
+ * @see the component manifest
41
+ */
30
42
  loading?: boolean;
31
43
  /**
32
44
  * Render the single child element instead of a native `<button>` so the button
@@ -35,35 +47,42 @@ interface ButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {
35
47
  */
36
48
  asChild?: boolean;
37
49
  }
38
- declare function Button({
39
- variant,
40
- size,
41
- loading,
42
- asChild,
43
- className,
44
- disabled,
45
- children,
46
- ...props
47
- }: ButtonProps): import("react").JSX.Element;
50
+ /**
51
+ * `forwardRef` so `ref` reaches the underlying `<button>` — and so it is TYPED. See
52
+ * `textarea.tsx` for the full rationale (2026-07-28 report C10).
53
+ *
54
+ * Under `asChild` the ref goes to `Slot`, which composes it onto the child element, so a
55
+ * consumer's ref lands on whatever they rendered rather than being dropped.
56
+ */
57
+ declare const Button: import("react").ForwardRefExoticComponent<ButtonProps & import("react").RefAttributes<HTMLButtonElement>>;
48
58
  interface InputProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'size'> {
49
59
  label?: string;
50
60
  hint?: string;
51
61
  error?: string;
52
62
  size?: 'sm' | 'md' | 'lg';
53
63
  }
54
- declare function Input({
55
- label,
56
- hint,
57
- error,
58
- size,
59
- className,
60
- id,
61
- onFocus,
62
- onBlur,
63
- ...props
64
- }: InputProps): import("react").JSX.Element;
64
+ /**
65
+ * `forwardRef` so `ref` reaches the underlying `<input>` — and so it is TYPED. See
66
+ * `textarea.tsx` for the full rationale (2026-07-28 report C10): the ref already worked at
67
+ * runtime under React 19, but nothing declared it, so passing one was a `ts(2322)` and every
68
+ * consumer had to cast. `forwardRef` rather than a bare `ref?: Ref<T>` prop keeps the
69
+ * `react >= 18` peer floor honest, since ref-as-prop does not work there.
70
+ */
71
+ declare const Input: import("react").ForwardRefExoticComponent<InputProps & import("react").RefAttributes<HTMLInputElement>>;
65
72
  interface CardProps extends HTMLAttributes<HTMLDivElement> {
73
+ /**
74
+ * Selects the visual style variant.
75
+ *
76
+ * @defaultValue `default`
77
+ * @see the component manifest
78
+ */
66
79
  variant?: 'default' | 'outlined' | 'elevated';
80
+ /**
81
+ * Inner padding of the component.
82
+ *
83
+ * @defaultValue `md`
84
+ * @see the component manifest
85
+ */
67
86
  padding?: 'none' | 'sm' | 'md' | 'lg';
68
87
  }
69
88
  declare function Card({
@@ -109,8 +128,16 @@ declare function CardFooter({
109
128
  children,
110
129
  ...props
111
130
  }: CardFooterProps): import("react").JSX.Element;
131
+ /** Badge-only looks that aren't a severity tone. */
132
+ type BadgeShape = 'secondary' | 'outline' | 'primary';
112
133
  interface BadgeProps extends HTMLAttributes<HTMLSpanElement> {
113
- variant?: 'default' | 'secondary' | 'success' | 'warning' | 'destructive' | 'outline';
134
+ /**
135
+ * Severity tone or badge-specific look. Accepts the catalog-wide `Tone` vocabulary
136
+ * (`neutral | info | success | warning | danger`) as well as Badge's historical spellings
137
+ * (`default`, `destructive`, `error`) — they are aliases of the same tones, so one domain
138
+ * enum can drive `Badge`, `Tag`, `Status` and `Notification` with no lookup table.
139
+ */
140
+ variant?: ToneInput | BadgeShape;
114
141
  size?: 'sm' | 'md';
115
142
  }
116
143
  declare function Badge({
@@ -121,14 +148,41 @@ declare function Badge({
121
148
  ...props
122
149
  }: BadgeProps): import("react").JSX.Element;
123
150
  interface ModalProps {
151
+ /**
152
+ * Whether the component is open (controlled).
153
+ *
154
+ * @defaultValue `false`
155
+ * @see the component manifest
156
+ */
124
157
  open?: boolean;
125
158
  onClose?: () => void;
126
159
  title?: string;
127
160
  description?: string;
128
161
  children?: ReactNode;
162
+ /**
163
+ * Dialog actions, rendered in a right-aligned row below the body and separated from it
164
+ * by a divider. Every consumer hand-rolled this before it existed.
165
+ *
166
+ * ```tsx
167
+ * <Modal open={open} title="Delete project" footer={
168
+ * <>
169
+ * <Button variant="ghost" onClick={close}>Cancel</Button>
170
+ * <Button variant="destructive" onClick={remove}>Delete</Button>
171
+ * </>
172
+ * }>
173
+ * …
174
+ * </Modal>
175
+ * ```
176
+ */
177
+ footer?: ReactNode;
129
178
  className?: string;
130
179
  size?: 'sm' | 'md' | 'lg';
131
- /** Allow dragging the dialog by its header (opt-in; CSS translate, no animation library). */
180
+ /**
181
+ * Allow dragging the dialog by its header
182
+ *
183
+ * @defaultValue `false`
184
+ * @see the component manifest
185
+ */
132
186
  draggable?: boolean;
133
187
  }
134
188
  declare function Modal({
@@ -137,12 +191,19 @@ declare function Modal({
137
191
  title,
138
192
  description,
139
193
  children,
194
+ footer,
140
195
  className,
141
196
  size,
142
197
  draggable
143
198
  }: ModalProps): import("react").JSX.Element;
144
199
  interface SpinnerProps extends HTMLAttributes<HTMLSpanElement> {
145
200
  size?: 'sm' | 'md' | 'lg';
201
+ /**
202
+ * Accessible label announced by screen readers
203
+ *
204
+ * @defaultValue `Loading`
205
+ * @see the component manifest
206
+ */
146
207
  label?: string;
147
208
  }
148
209
  declare function Spinner({
@@ -152,7 +213,19 @@ declare function Spinner({
152
213
  ...props
153
214
  }: SpinnerProps): import("react").JSX.Element;
154
215
  interface SeparatorProps extends HTMLAttributes<HTMLElement> {
216
+ /**
217
+ * Layout orientation of the component.
218
+ *
219
+ * @defaultValue `horizontal`
220
+ * @see the component manifest
221
+ */
155
222
  orientation?: 'horizontal' | 'vertical';
223
+ /**
224
+ * When true, the separator is purely visual and hidden from assistive tech
225
+ *
226
+ * @defaultValue `false`
227
+ * @see the component manifest
228
+ */
156
229
  decorative?: boolean;
157
230
  }
158
231
  declare function Separator({
@@ -162,9 +235,21 @@ declare function Separator({
162
235
  ...props
163
236
  }: SeparatorProps): import("react").JSX.Element;
164
237
  interface AlertProps extends Omit<HTMLAttributes<HTMLDivElement>, 'title'> {
238
+ /**
239
+ * Selects the visual style variant.
240
+ *
241
+ * @defaultValue `default`
242
+ * @see the component manifest
243
+ */
165
244
  variant?: 'default' | 'info' | 'success' | 'warning' | 'destructive';
166
245
  title?: string;
167
246
  icon?: ReactNode;
247
+ /**
248
+ * When true, shows a control to dismiss the component.
249
+ *
250
+ * @defaultValue `false`
251
+ * @see the component manifest
252
+ */
168
253
  dismissible?: boolean;
169
254
  onDismiss?: () => void;
170
255
  action?: {
@@ -185,6 +270,12 @@ declare function Alert({
185
270
  }: AlertProps): import("react").JSX.Element | null;
186
271
  interface AvatarProps extends HTMLAttributes<HTMLSpanElement> {
187
272
  src?: string;
273
+ /**
274
+ * Alternative text describing the image.
275
+ *
276
+ * @defaultValue ``
277
+ * @see the component manifest
278
+ */
188
279
  alt?: string;
189
280
  /** Full name — used to derive initials for the fallback and as the accessible label. */
190
281
  name?: string;
@@ -212,9 +303,19 @@ interface AvatarGroupProps extends HTMLAttributes<HTMLDivElement> {
212
303
  max?: number;
213
304
  /** Override the total count used for the +N chip (when more exist than rendered). */
214
305
  total?: number;
215
- /** Overlap amount. */
306
+ /**
307
+ * Spacing between items.
308
+ *
309
+ * @defaultValue `md`
310
+ * @see the component manifest
311
+ */
216
312
  spacing?: 'sm' | 'md' | 'lg';
217
- /** Wrap into a grid instead of an overlapping row. */
313
+ /**
314
+ * When true, lays the avatars out in a grid instead of an overlapping stack.
315
+ *
316
+ * @defaultValue `false`
317
+ * @see the component manifest
318
+ */
218
319
  isGrid?: boolean;
219
320
  labels?: AvatarGroupLabels;
220
321
  /** The <Avatar> children. */
@@ -252,17 +353,38 @@ declare function User({
252
353
  }: UserProps): import("react").JSX.Element;
253
354
  interface ImageProps extends Omit<ImgHTMLAttributes<HTMLImageElement>, 'placeholder'> {
254
355
  src?: string;
356
+ /**
357
+ * Alternative text describing the image.
358
+ *
359
+ * @defaultValue ``
360
+ * @see the component manifest
361
+ */
255
362
  alt?: string;
256
363
  /** Image shown if `src` fails to load. Without it, a neutral fallback box renders. */
257
364
  fallbackSrc?: string;
258
365
  width?: string | number;
259
366
  height?: string | number;
260
367
  radius?: 'none' | 'sm' | 'md' | 'lg' | 'full';
261
- /** Hover-zoom the image (reduced-motion-safe). */
368
+ /**
369
+ * When true, zooms the image on hover.
370
+ *
371
+ * @defaultValue `false`
372
+ * @see the component manifest
373
+ */
262
374
  zoom?: boolean;
263
- /** Render a bare <img> with no wrapper, placeholder, or zoom (HeroUI parity). */
375
+ /**
376
+ * Render a bare <img> with no wrapper, placeholder, or zoom
377
+ *
378
+ * @defaultValue `false`
379
+ * @see the component manifest
380
+ */
264
381
  removeWrapper?: boolean;
265
- /** Show a blurred placeholder while loading. */
382
+ /**
383
+ * When true, renders a blurred backdrop behind the image.
384
+ *
385
+ * @defaultValue `false`
386
+ * @see the component manifest
387
+ */
266
388
  isBlurred?: boolean;
267
389
  }
268
390
  declare function Image({
@@ -285,21 +407,30 @@ interface TextareaProps extends TextareaHTMLAttributes<HTMLTextAreaElement> {
285
407
  error?: string;
286
408
  resize?: 'none' | 'vertical' | 'both';
287
409
  }
288
- declare function Textarea({
289
- label,
290
- hint,
291
- error,
292
- resize,
293
- rows,
294
- className,
295
- id,
296
- onFocus,
297
- onBlur,
298
- ...props
299
- }: TextareaProps): import("react").JSX.Element;
410
+ /**
411
+ * `forwardRef` so `ref` reaches the underlying `<textarea>` — and so it is TYPED.
412
+ *
413
+ * Under React 19 the ref already arrived at runtime (it is passed as an ordinary prop and
414
+ * spread onto the element), but no component declared it, so `<Textarea ref={r} />` was a
415
+ * `ts(2322)` and every consumer needing the element had to cast. One needed it for caret
416
+ * restoration in a collaborative editor and kept the cast quarantined in its own file
417
+ * (2026-07-28 report C10).
418
+ *
419
+ * `forwardRef` rather than adding `ref?: Ref<T>` to the props interface: the peer floor is
420
+ * `react >= 18`, where ref-as-prop does NOT work — a bare type declaration would compile
421
+ * and silently hand back `null` there. This keeps the floor honest on both majors, and
422
+ * matches `IconButton`, which already used it.
423
+ */
424
+ declare const Textarea: import("react").ForwardRefExoticComponent<TextareaProps & import("react").RefAttributes<HTMLTextAreaElement>>;
300
425
  interface SelectOption {
301
426
  value: string;
302
427
  label: string;
428
+ /**
429
+ * When true, disables the control and removes it from the tab order.
430
+ *
431
+ * @defaultValue `false`
432
+ * @see the component manifest
433
+ */
303
434
  disabled?: boolean;
304
435
  }
305
436
  interface SelectProps extends Omit<SelectHTMLAttributes<HTMLSelectElement>, 'size'> {
@@ -310,45 +441,44 @@ interface SelectProps extends Omit<SelectHTMLAttributes<HTMLSelectElement>, 'siz
310
441
  options: SelectOption[];
311
442
  size?: 'sm' | 'md' | 'lg';
312
443
  }
313
- declare function Select({
314
- label,
315
- hint,
316
- error,
317
- placeholder,
318
- options,
319
- size,
320
- className,
321
- id,
322
- defaultValue,
323
- value,
324
- onFocus,
325
- onBlur,
326
- ...props
327
- }: SelectProps): import("react").JSX.Element;
444
+ /**
445
+ * `forwardRef` so `ref` reaches the underlying `<select>` — and so it is TYPED. See
446
+ * `textarea.tsx` for the full rationale (2026-07-28 report C10). `forwardRef` rather than a
447
+ * bare `ref?: Ref<T>` prop keeps the `react >= 18` peer floor honest, since ref-as-prop does
448
+ * not work there.
449
+ */
450
+ declare const Select: import("react").ForwardRefExoticComponent<SelectProps & import("react").RefAttributes<HTMLSelectElement>>;
328
451
  interface CheckboxProps extends InputHTMLAttributes<HTMLInputElement> {
329
452
  label?: string;
453
+ /**
454
+ * When true, renders the mixed/indeterminate state.
455
+ *
456
+ * @defaultValue `false`
457
+ * @see the component manifest
458
+ */
330
459
  indeterminate?: boolean;
331
460
  }
332
- declare function Checkbox({
333
- label,
334
- indeterminate,
335
- className,
336
- id,
337
- disabled,
338
- ...props
339
- }: CheckboxProps): import("react").JSX.Element;
461
+ /**
462
+ * `forwardRef` so `ref` reaches the underlying `<input>` — and so it is TYPED. See
463
+ * `textarea.tsx` for the full rationale (2026-07-28 report C10): the ref already worked at
464
+ * runtime under React 19, but nothing declared it, so passing one was a `ts(2322)` and every
465
+ * consumer had to cast. `forwardRef` rather than a bare `ref?: Ref<T>` prop keeps the
466
+ * `react >= 18` peer floor honest, since ref-as-prop does not work there.
467
+ */
468
+ declare const Checkbox: import("react").ForwardRefExoticComponent<CheckboxProps & import("react").RefAttributes<HTMLInputElement>>;
340
469
  interface RadioProps extends InputHTMLAttributes<HTMLInputElement> {
341
470
  label?: string;
342
471
  value: string;
343
472
  }
344
- declare function Radio({
345
- label,
346
- className,
347
- id,
348
- disabled,
349
- value,
350
- ...props
351
- }: RadioProps): import("react").JSX.Element;
473
+ /**
474
+ * `forwardRef` so `ref` reaches the underlying `<input>` — and so it is TYPED. See
475
+ * `textarea.tsx` for the full rationale (2026-07-28 report C10). `forwardRef` rather than a
476
+ * bare `ref?: Ref<T>` prop keeps the `react >= 18` peer floor honest, since ref-as-prop does
477
+ * not work there.
478
+ *
479
+ * Only `Radio` is wrapped; `RadioGroup` below is a layout container with no single host.
480
+ */
481
+ declare const Radio: import("react").ForwardRefExoticComponent<RadioProps & import("react").RefAttributes<HTMLInputElement>>;
352
482
  interface RadioGroupProps {
353
483
  name: string;
354
484
  value?: string;
@@ -369,6 +499,12 @@ declare function RadioGroup({
369
499
  }: RadioGroupProps): import("react").JSX.Element;
370
500
  interface ToggleProps extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, 'onChange'> {
371
501
  checked?: boolean;
502
+ /**
503
+ * Whether the control is checked on first render (uncontrolled).
504
+ *
505
+ * @defaultValue `false`
506
+ * @see the component manifest
507
+ */
372
508
  defaultChecked?: boolean;
373
509
  /** Called with the new checked state when the switch is toggled. */
374
510
  onValueChange?: (checked: boolean) => void;
@@ -383,34 +519,39 @@ interface ToggleProps extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, 'onC
383
519
  label?: string;
384
520
  size?: 'sm' | 'md';
385
521
  }
386
- declare function Toggle({
387
- checked,
388
- defaultChecked,
389
- onValueChange,
390
- onChange,
391
- label,
392
- size,
393
- className,
394
- disabled,
395
- ...props
396
- }: ToggleProps): import("react").JSX.Element;
522
+ /**
523
+ * `forwardRef` so `ref` reaches the underlying `<button>` — and so it is TYPED. See
524
+ * `textarea.tsx` for the full rationale (2026-07-28 report C10). `forwardRef` rather than a
525
+ * bare `ref?: Ref<T>` prop keeps the `react >= 18` peer floor honest, since ref-as-prop does
526
+ * not work there.
527
+ */
528
+ declare const Toggle: import("react").ForwardRefExoticComponent<ToggleProps & import("react").RefAttributes<HTMLButtonElement>>;
397
529
  interface SliderProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'type'> {
398
530
  label?: string;
399
531
  }
400
- declare function Slider({
401
- label,
402
- className,
403
- id,
404
- min,
405
- max,
406
- step,
407
- disabled,
408
- ...props
409
- }: SliderProps): import("react").JSX.Element;
532
+ /**
533
+ * `forwardRef` so `ref` reaches the underlying `<input>` — and so it is TYPED. See
534
+ * `textarea.tsx` for the full rationale (2026-07-28 report C10). `forwardRef` rather than a
535
+ * bare `ref?: Ref<T>` prop keeps the `react >= 18` peer floor honest, since ref-as-prop does
536
+ * not work there.
537
+ */
538
+ declare const Slider: import("react").ForwardRefExoticComponent<SliderProps & import("react").RefAttributes<HTMLInputElement>>;
410
539
  interface TooltipProps {
411
540
  content: ReactNode;
541
+ /**
542
+ * Placement relative to the trigger.
543
+ *
544
+ * @defaultValue `top`
545
+ * @see the component manifest
546
+ */
412
547
  placement?: 'top' | 'right' | 'bottom' | 'left';
413
548
  children: ReactElement;
549
+ /**
550
+ * Milliseconds to wait before showing
551
+ *
552
+ * @defaultValue `200`
553
+ * @see the component manifest
554
+ */
414
555
  delay?: number;
415
556
  }
416
557
  declare function Tooltip({
@@ -430,6 +571,12 @@ interface DropdownProps {
430
571
  trigger: ReactElement;
431
572
  items: DropdownItem[];
432
573
  onSelect?: (value: string) => void;
574
+ /**
575
+ * Placement relative to the trigger.
576
+ *
577
+ * @defaultValue `bottom-start`
578
+ * @see the component manifest
579
+ */
433
580
  placement?: 'bottom-start' | 'bottom-end';
434
581
  open?: boolean;
435
582
  onOpenChange?: (open: boolean) => void;
@@ -446,7 +593,19 @@ type ToastVariant = 'default' | 'success' | 'warning' | 'destructive';
446
593
  interface ToastOptions {
447
594
  title: string;
448
595
  description?: string;
596
+ /**
597
+ * Selects the visual style variant.
598
+ *
599
+ * @defaultValue `default`
600
+ * @see the component manifest
601
+ */
449
602
  variant?: ToastVariant;
603
+ /**
604
+ * How long (ms) the toast stays visible before auto-dismiss.
605
+ *
606
+ * @defaultValue `5000`
607
+ * @see the component manifest
608
+ */
450
609
  duration?: number;
451
610
  }
452
611
  declare function enqueue(options: ToastOptions): void;
@@ -494,7 +653,12 @@ interface TabsTriggerProps extends HTMLAttributes<HTMLButtonElement> {
494
653
  value: string;
495
654
  disabled?: boolean;
496
655
  }
497
- declare function TabsTrigger(props: TabsTriggerProps): import("react").JSX.Element;
656
+ /**
657
+ * `forwardRef` so `ref` reaches the tab `<button>` — see `textarea.tsx` for the full
658
+ * rationale (2026-07-28 report C10). Threaded through the private Inner, which owns the
659
+ * button. Roving-focus navs need a real element here, so this is not cosmetic.
660
+ */
661
+ declare const TabsTrigger: import("react").ForwardRefExoticComponent<TabsTriggerProps & import("react").RefAttributes<HTMLButtonElement>>;
498
662
  interface TabsContentProps extends HTMLAttributes<HTMLDivElement> {
499
663
  value: string;
500
664
  }
@@ -524,7 +688,12 @@ declare function AccordionItem({
524
688
  children,
525
689
  ...props
526
690
  }: AccordionItemProps): import("react").JSX.Element;
527
- declare function AccordionTrigger(props: HTMLAttributes<HTMLButtonElement>): import("react").JSX.Element;
691
+ /**
692
+ * `forwardRef` so `ref` reaches the trigger `<button>` — see `textarea.tsx` for the full
693
+ * rationale (2026-07-28 report C10). The ref is threaded through the private Inner, which is
694
+ * where the button actually lives.
695
+ */
696
+ declare const AccordionTrigger: import("react").ForwardRefExoticComponent<HTMLAttributes<HTMLButtonElement> & import("react").RefAttributes<HTMLButtonElement>>;
528
697
  declare function AccordionContent(props: HTMLAttributes<HTMLDivElement>): import("react").JSX.Element;
529
698
  interface ActionSheetAction {
530
699
  label: ReactNode;
@@ -546,7 +715,12 @@ interface ActionSheetProps {
546
715
  title?: ReactNode;
547
716
  /** Optional supporting message under the title. */
548
717
  description?: ReactNode;
549
- /** Show the separate Cancel button. Default true. */
718
+ /**
719
+ * When true, shows a cancel button below the actions.
720
+ *
721
+ * @defaultValue `true`
722
+ * @see the component manifest
723
+ */
550
724
  showCancel?: boolean;
551
725
  labels?: {
552
726
  cancel?: string;
@@ -582,18 +756,39 @@ declare function Kbd({
582
756
  ...props
583
757
  }: KbdProps): import("react").JSX.Element;
584
758
  interface LinkProps extends AnchorHTMLAttributes<HTMLAnchorElement> {
759
+ /**
760
+ * `standalone` (default) owns its own typography and underlines on hover;
761
+ * `inline` inherits the surrounding prose font and is always underlined.
762
+ */
585
763
  variant?: 'standalone' | 'inline';
586
764
  size?: 'sm' | 'md' | 'lg';
765
+ /**
766
+ * When true, treats the link as external (opens in a new tab with rel safety).
767
+ *
768
+ * @defaultValue `false`
769
+ * @see the component manifest
770
+ */
587
771
  external?: boolean;
772
+ /**
773
+ * Render the single child element instead of cascivo's own `<a>`, so the link
774
+ * styling lands on your router's `Link`. **This is the supported way to style an
775
+ * in-content router link** — `setLinkComponent` only covers the config-driven nav
776
+ * components (SideNav, ShellHeader, Breadcrumb, …), not links you write in page
777
+ * content. See `docs/USING-WITH-A-ROUTER.md`.
778
+ *
779
+ * ```tsx
780
+ * <Link asChild><RouterLink to="/projects/a">Project A</RouterLink></Link>
781
+ * ```
782
+ */
783
+ asChild?: boolean;
588
784
  }
589
- declare function Link({
590
- variant,
591
- size,
592
- external,
593
- className,
594
- children,
595
- ...props
596
- }: LinkProps): import("react").JSX.Element;
785
+ /**
786
+ * `forwardRef` so `ref` reaches the underlying `<a>` — and so it is TYPED. See
787
+ * `textarea.tsx` for the full rationale (2026-07-28 report C10). `forwardRef` rather than a
788
+ * bare `ref?: Ref<T>` prop keeps the `react >= 18` peer floor honest, since ref-as-prop does
789
+ * not work there.
790
+ */
791
+ declare const Link: import("react").ForwardRefExoticComponent<LinkProps & import("react").RefAttributes<HTMLAnchorElement>>;
597
792
  interface BreadcrumbItem {
598
793
  label: string;
599
794
  href?: string;
@@ -602,7 +797,12 @@ interface BreadcrumbProps {
602
797
  items: BreadcrumbItem[];
603
798
  maxVisible?: number;
604
799
  className?: string;
605
- /** Accessible label for the nav landmark */
800
+ /**
801
+ * Accessible label for the component.
802
+ *
803
+ * @defaultValue `Breadcrumb`
804
+ * @see the component manifest
805
+ */
606
806
  ariaLabel?: string;
607
807
  }
608
808
  declare function Breadcrumb({
@@ -664,6 +864,12 @@ interface HeaderProps extends HTMLAttributes<HTMLElement> {
664
864
  brand?: ReactNode;
665
865
  links?: HeaderLink[];
666
866
  actions?: ReactNode;
867
+ /**
868
+ * When true, the header sticks to the top on scroll.
869
+ *
870
+ * @defaultValue `false`
871
+ * @see the component manifest
872
+ */
667
873
  sticky?: boolean;
668
874
  labels?: HeaderLabels;
669
875
  }
@@ -763,12 +969,48 @@ interface SideNavProps {
763
969
  items?: SideNavItem[];
764
970
  groups?: SideNavGroup[];
765
971
  collapsed?: boolean;
972
+ /**
973
+ * Whether the rail is collapsed on first render (uncontrolled).
974
+ *
975
+ * @defaultValue `false`
976
+ * @see the component manifest
977
+ */
766
978
  defaultCollapsed?: boolean;
767
979
  onCollapsedChange?: (collapsed: boolean) => void;
980
+ /**
981
+ * Accessible label for the component.
982
+ *
983
+ * @defaultValue `Side navigation`
984
+ * @see the component manifest
985
+ */
768
986
  ariaLabel?: string;
987
+ /**
988
+ * Accessible label for the collapse control.
989
+ *
990
+ * @defaultValue `Collapse navigation`
991
+ * @see the component manifest
992
+ */
769
993
  collapseLabel?: string;
994
+ /**
995
+ * Accessible label for the expand control.
996
+ *
997
+ * @defaultValue `Expand navigation`
998
+ * @see the component manifest
999
+ */
770
1000
  expandLabel?: string;
1001
+ /**
1002
+ * Widens the rail as an overlay on hover/focus-within; suppresses tooltips/flyouts
1003
+ *
1004
+ * @defaultValue `false`
1005
+ * @see the component manifest
1006
+ */
771
1007
  expandOnHover?: boolean;
1008
+ /**
1009
+ * Show the collapse/expand toggle control.
1010
+ *
1011
+ * @defaultValue `true`
1012
+ * @see the component manifest
1013
+ */
772
1014
  showCollapseToggle?: boolean;
773
1015
  /** Content rendered above the items, inside the item padding context. */
774
1016
  header?: ReactNode;
@@ -804,6 +1046,12 @@ interface PaginationProps {
804
1046
  totalItems: number;
805
1047
  onPageChange: (page: number) => void;
806
1048
  onPageSizeChange?: (size: number) => void;
1049
+ /**
1050
+ * Options for the page size select
1051
+ *
1052
+ * @defaultValue `[10, 25, 50, 100]`
1053
+ * @see the component manifest
1054
+ */
807
1055
  pageSizeOptions?: number[];
808
1056
  labels?: PaginationLabels;
809
1057
  className?: string;
@@ -825,6 +1073,12 @@ interface ProgressStep {
825
1073
  interface ProgressIndicatorProps {
826
1074
  steps: ProgressStep[];
827
1075
  currentIndex: number;
1076
+ /**
1077
+ * When true, lays the steps out vertically.
1078
+ *
1079
+ * @defaultValue `false`
1080
+ * @see the component manifest
1081
+ */
828
1082
  vertical?: boolean;
829
1083
  className?: string;
830
1084
  }
@@ -835,9 +1089,20 @@ declare function ProgressIndicator({
835
1089
  className
836
1090
  }: ProgressIndicatorProps): import("react").JSX.Element;
837
1091
  interface TagProps extends HTMLAttributes<HTMLSpanElement> {
838
- variant?: 'default' | 'info' | 'success' | 'warning' | 'error';
1092
+ /**
1093
+ * Severity tone. Accepts the catalog-wide `Tone` vocabulary
1094
+ * (`neutral | info | success | warning | danger`) plus Tag's historical spellings
1095
+ * (`default`, `error`, `destructive`).
1096
+ */
1097
+ variant?: ToneInput;
839
1098
  size?: 'sm' | 'md';
840
1099
  onDismiss?: () => void;
1100
+ /**
1101
+ * Accessible label for the dismiss button.
1102
+ *
1103
+ * @defaultValue `Remove`
1104
+ * @see the component manifest
1105
+ */
841
1106
  dismissLabel?: string;
842
1107
  }
843
1108
  declare function Tag({
@@ -850,9 +1115,21 @@ declare function Tag({
850
1115
  ...props
851
1116
  }: TagProps): import("react").JSX.Element;
852
1117
  interface SkeletonProps extends HTMLAttributes<HTMLDivElement> {
1118
+ /**
1119
+ * Selects the visual style variant.
1120
+ *
1121
+ * @defaultValue `text`
1122
+ * @see the component manifest
1123
+ */
853
1124
  variant?: 'text' | 'circle' | 'rect';
854
1125
  width?: string;
855
1126
  height?: string;
1127
+ /**
1128
+ * Number of bars for the text variant; the last bar renders shorter
1129
+ *
1130
+ * @defaultValue `1`
1131
+ * @see the component manifest
1132
+ */
856
1133
  lines?: number;
857
1134
  }
858
1135
  declare function Skeleton({
@@ -867,10 +1144,22 @@ declare function Skeleton({
867
1144
  interface ProgressBarProps {
868
1145
  /** Current value from 0 to max. Omit for an indeterminate bar. */
869
1146
  value?: number;
1147
+ /**
1148
+ * Maximum allowed value.
1149
+ *
1150
+ * @defaultValue `100`
1151
+ * @see the component manifest
1152
+ */
870
1153
  max?: number;
871
1154
  label?: string;
872
1155
  helperText?: string;
873
1156
  size?: 'sm' | 'md';
1157
+ /**
1158
+ * success/error tint the fill and show a glyph next to the label
1159
+ *
1160
+ * @defaultValue `active`
1161
+ * @see the component manifest
1162
+ */
874
1163
  status?: 'active' | 'success' | 'error';
875
1164
  className?: string;
876
1165
  }
@@ -917,7 +1206,12 @@ interface FabProps {
917
1206
  onClick?: () => void;
918
1207
  /** Speed-dial actions revealed above the button when opened. */
919
1208
  actions?: FabAction[];
920
- /** Screen corner to anchor to. */
1209
+ /**
1210
+ * Position of the component.
1211
+ *
1212
+ * @defaultValue `bottom-end`
1213
+ * @see the component manifest
1214
+ */
921
1215
  position?: 'bottom-end' | 'bottom-start';
922
1216
  /** Controlled speed-dial open state. */
923
1217
  open?: boolean;
@@ -947,15 +1241,41 @@ declare function Fab({
947
1241
  }: FabProps): import("react").JSX.Element;
948
1242
  interface OverflowMenuItem {
949
1243
  label: string;
950
- value: string;
1244
+ /**
1245
+ * Item identity — what `onSelect` receives. `value` is the catalog convention for the
1246
+ * identity of an item in a collection (see the accessible-name/item-identity table in
1247
+ * `docs/AI-RULES.md`); `id` is accepted as an alias because `CommandMenu`-shaped `id`
1248
+ * is the common wrong guess and cost an adopter a compile round-trip. Pass either.
1249
+ */
1250
+ value?: string;
1251
+ /** Alias of {@link OverflowMenuItem.value}. Exactly one of the two is required. */
1252
+ id?: string;
951
1253
  icon?: ReactNode;
1254
+ /**
1255
+ * When true, disables the control and removes it from the tab order.
1256
+ *
1257
+ * @defaultValue `false`
1258
+ * @see the component manifest
1259
+ */
952
1260
  disabled?: boolean;
953
1261
  destructive?: boolean;
954
1262
  }
955
1263
  interface OverflowMenuProps {
956
1264
  items: OverflowMenuItem[];
957
1265
  onSelect?: (value: string) => void;
1266
+ /**
1267
+ * Placement relative to the trigger.
1268
+ *
1269
+ * @defaultValue `bottom-end`
1270
+ * @see the component manifest
1271
+ */
958
1272
  placement?: 'bottom-start' | 'bottom-end';
1273
+ /**
1274
+ * Accessible label for the component.
1275
+ *
1276
+ * @defaultValue `More actions`
1277
+ * @see the component manifest
1278
+ */
959
1279
  ariaLabel?: string;
960
1280
  size?: 'sm' | 'md';
961
1281
  disabled?: boolean;
@@ -978,11 +1298,44 @@ interface SearchProps {
978
1298
  /** @deprecated Use `onValueChange` — it receives the same string. */
979
1299
  onChange?: (value: string) => void;
980
1300
  onSearch?: (value: string) => void;
1301
+ /**
1302
+ * Debounce delay (ms) before onSearch fires.
1303
+ *
1304
+ * @defaultValue `300`
1305
+ * @see the component manifest
1306
+ */
981
1307
  debounceMs?: number;
1308
+ /**
1309
+ * Placeholder text shown when the field is empty.
1310
+ *
1311
+ * @defaultValue `Search`
1312
+ * @see the component manifest
1313
+ */
982
1314
  placeholder?: string;
983
1315
  size?: 'sm' | 'md' | 'lg';
1316
+ /**
1317
+ * Accessible name for the control. Rendered as a real `<label>` that is **visually
1318
+ * hidden** by design — it changes the accessible name, not the visible UI. If you can see
1319
+ * it, the component stylesheet did not load (import `@cascivo/react/styles.css` or the
1320
+ * per-component CSS).
1321
+ *
1322
+ * @defaultValue `Search`
1323
+ * @see the component manifest
1324
+ */
984
1325
  label?: string;
1326
+ /**
1327
+ * When true, disables the control and removes it from the tab order.
1328
+ *
1329
+ * @defaultValue `false`
1330
+ * @see the component manifest
1331
+ */
985
1332
  disabled?: boolean;
1333
+ /**
1334
+ * Accessible label for the clear button.
1335
+ *
1336
+ * @defaultValue `Clear search`
1337
+ * @see the component manifest
1338
+ */
986
1339
  clearLabel?: string;
987
1340
  id?: string;
988
1341
  className?: string;
@@ -1011,6 +1364,12 @@ interface NumberInputProps extends Omit<InputHTMLAttributes<HTMLInputElement>, '
1011
1364
  onChange?: (value: number | null) => void;
1012
1365
  min?: number;
1013
1366
  max?: number;
1367
+ /**
1368
+ * Increment between allowed values.
1369
+ *
1370
+ * @defaultValue `1`
1371
+ * @see the component manifest
1372
+ */
1014
1373
  step?: number;
1015
1374
  precision?: number;
1016
1375
  formatOptions?: Intl.NumberFormatOptions;
@@ -1018,40 +1377,51 @@ interface NumberInputProps extends Omit<InputHTMLAttributes<HTMLInputElement>, '
1018
1377
  hint?: string;
1019
1378
  error?: string;
1020
1379
  size?: 'sm' | 'md' | 'lg';
1380
+ /**
1381
+ * Accessible label for the increment button.
1382
+ *
1383
+ * @defaultValue `Increment`
1384
+ * @see the component manifest
1385
+ */
1021
1386
  incrementLabel?: string;
1022
- decrementLabel?: string;
1023
- }
1024
- declare function NumberInput({
1025
- value,
1026
- defaultValue,
1027
- onValueChange,
1028
- onChange,
1029
- min,
1030
- max,
1031
- step,
1032
- precision,
1033
- formatOptions,
1034
- label,
1035
- hint,
1036
- error,
1037
- size,
1038
- disabled,
1039
- incrementLabel,
1040
- decrementLabel,
1041
- className,
1042
- id,
1043
- onFocus,
1044
- onBlur,
1045
- onKeyDown,
1046
- ...props
1047
- }: NumberInputProps): import("react").JSX.Element;
1387
+ /**
1388
+ * Accessible label for the decrement button.
1389
+ *
1390
+ * @defaultValue `Decrement`
1391
+ * @see the component manifest
1392
+ */
1393
+ decrementLabel?: string;
1394
+ }
1395
+ /**
1396
+ * `forwardRef` so `ref` reaches the underlying `<input>` — and so it is TYPED. See
1397
+ * `textarea.tsx` for the full rationale (2026-07-28 report C10). Enforced by
1398
+ * `ref-parity.test.ts`, which found this component: the plan's own list of 16 was itself
1399
+ * incomplete, which is why the rule is a guard and not a checklist.
1400
+ */
1401
+ declare const NumberInput: import("react").ForwardRefExoticComponent<NumberInputProps & import("react").RefAttributes<HTMLInputElement>>;
1048
1402
  interface Column<Row> {
1049
1403
  key: string;
1050
1404
  header: string;
1051
1405
  sortable?: boolean;
1052
1406
  render?: (row: Row) => ReactNode;
1053
1407
  align?: 'start' | 'end';
1408
+ /**
1409
+ * Preferred column width, any CSS length (`'8rem'`, `'120px'`, `'12%'`). Set it on
1410
+ * identifier-shaped columns (commit hashes, IDs, timestamps) — default sizing doesn't
1411
+ * consider content shape, so a hash wraps mid-hash.
1412
+ *
1413
+ * **Mixing sized and unsized columns is supported**: unsized columns absorb the
1414
+ * remaining width and never collapse below their content. Only when *every* column
1415
+ * declares a width does the table switch to a fixed layout (which keeps widths
1416
+ * identical across pages); otherwise widths are preferred sizes, not hard ones.
1417
+ */
1054
1418
  width?: string;
1419
+ /**
1420
+ * Floor for the column's width, any CSS length. Use it on a free-form column
1421
+ * (a commit message, a description) that must stay readable when the table is narrow —
1422
+ * the table then scrolls horizontally rather than squeezing the column to nothing.
1423
+ */
1424
+ minWidth?: string;
1055
1425
  }
1056
1426
  type SortDirection = 'asc' | 'desc';
1057
1427
  interface SortState {
@@ -1076,6 +1446,12 @@ interface DataTableProps<Row> {
1076
1446
  defaultSort?: SortState;
1077
1447
  sortMode?: 'client' | 'server';
1078
1448
  onSortChange?: (sort: SortState | undefined) => void;
1449
+ /**
1450
+ * When true, shows a search/filter input.
1451
+ *
1452
+ * @defaultValue `false`
1453
+ * @see the component manifest
1454
+ */
1079
1455
  searchable?: boolean;
1080
1456
  pagination?: {
1081
1457
  pageSize: number;
@@ -1093,17 +1469,59 @@ interface DataTableProps<Row> {
1093
1469
  }[];
1094
1470
  renderExpandedRow?: (row: Row) => ReactNode;
1095
1471
  density?: 'compact' | 'normal' | 'relaxed';
1472
+ /**
1473
+ * When true, applies alternating row striping.
1474
+ *
1475
+ * @defaultValue `false`
1476
+ * @see the component manifest
1477
+ */
1096
1478
  zebra?: boolean;
1479
+ /**
1480
+ * When true, the header stays fixed while the body scrolls.
1481
+ *
1482
+ * @defaultValue `false`
1483
+ * @see the component manifest
1484
+ */
1097
1485
  stickyHeader?: boolean;
1486
+ /**
1487
+ * When true, shows a loading state.
1488
+ *
1489
+ * @defaultValue `false`
1490
+ * @see the component manifest
1491
+ */
1098
1492
  loading?: boolean;
1099
1493
  emptyState?: ReactNode;
1100
1494
  title?: string;
1101
1495
  description?: string;
1102
1496
  labels?: DataTableLabels;
1103
1497
  className?: string;
1498
+ /**
1499
+ * Render only the visible row window for large datasets.
1500
+ *
1501
+ * @defaultValue `false`
1502
+ * @see the component manifest
1503
+ */
1104
1504
  virtualized?: boolean;
1505
+ /**
1506
+ * Fixed row height in px, used to compute the virtualized window.
1507
+ *
1508
+ * @defaultValue `40`
1509
+ * @see the component manifest
1510
+ */
1105
1511
  rowHeight?: number;
1512
+ /**
1513
+ * Number of rows rendered in the virtualized window.
1514
+ *
1515
+ * @defaultValue `20`
1516
+ * @see the component manifest
1517
+ */
1106
1518
  windowSize?: number;
1519
+ /**
1520
+ * Extra rows rendered above/below the window to smooth scrolling.
1521
+ *
1522
+ * @defaultValue `3`
1523
+ * @see the component manifest
1524
+ */
1107
1525
  overscan?: number;
1108
1526
  }
1109
1527
  declare function DataTable<Row>({
@@ -1134,6 +1552,12 @@ declare function DataTable<Row>({
1134
1552
  overscan
1135
1553
  }: DataTableProps<Row>): import("react").JSX.Element;
1136
1554
  interface CommandPage {
1555
+ /**
1556
+ * Placeholder text shown when the field is empty.
1557
+ *
1558
+ * @defaultValue `Type a command or search…`
1559
+ * @see the component manifest
1560
+ */
1137
1561
  placeholder?: string;
1138
1562
  groups: CommandGroup[];
1139
1563
  }
@@ -1188,12 +1612,43 @@ interface CommandMenuProps {
1188
1612
  onOpenChange: (open: boolean) => void;
1189
1613
  groups: CommandGroup[];
1190
1614
  placeholder?: string;
1615
+ /**
1616
+ * Text shown when no commands match the query.
1617
+ *
1618
+ * @defaultValue `No results found`
1619
+ * @see the component manifest
1620
+ */
1191
1621
  emptyLabel?: string;
1622
+ /**
1623
+ * Global Cmd/Ctrl+K toggles the menu via onOpenChange
1624
+ *
1625
+ * @defaultValue `true`
1626
+ * @see the component manifest
1627
+ */
1192
1628
  hotkey?: boolean;
1629
+ /**
1630
+ * Text label for the control.
1631
+ *
1632
+ * @defaultValue `Command menu`
1633
+ * @see the component manifest
1634
+ */
1193
1635
  label?: string;
1636
+ /**
1637
+ * Shows a loading spinner in place of the empty state (for async items)
1638
+ *
1639
+ * @defaultValue `false`
1640
+ * @see the component manifest
1641
+ */
1194
1642
  loading?: boolean;
1195
1643
  onQueryChange?: (query: string) => void;
1196
- /** Selectable filter scopes; enables the scope bar, chip, prefixes, and Tab cycling. */
1644
+ /**
1645
+ * Selectable filter scopes. Renders a scope bar + chip; a scope activates by clicking its
1646
+ * pill, typing its prefix (c:/c ), or cycling with Tab, and filters to groups tagged with
1647
+ * a matching scope (plus untagged groups).
1648
+ *
1649
+ * @defaultValue `[]`
1650
+ * @see the component manifest
1651
+ */
1197
1652
  scopes?: CommandScope[];
1198
1653
  className?: string;
1199
1654
  }
@@ -1296,6 +1751,12 @@ declare function Form<T extends Record<string, unknown>>({
1296
1751
  interface ComboboxOption {
1297
1752
  value: string;
1298
1753
  label: string;
1754
+ /**
1755
+ * When true, disables the control and removes it from the tab order.
1756
+ *
1757
+ * @defaultValue `false`
1758
+ * @see the component manifest
1759
+ */
1299
1760
  disabled?: boolean;
1300
1761
  }
1301
1762
  interface ComboboxLabels {
@@ -1312,7 +1773,19 @@ interface ComboboxProps {
1312
1773
  onValueChange?: (value: string | undefined) => void;
1313
1774
  /** @deprecated Use `onValueChange` — it receives the same `string | undefined`. */
1314
1775
  onChange?: (value: string | undefined) => void;
1776
+ /**
1777
+ * When true, shows a control to clear the selected value.
1778
+ *
1779
+ * @defaultValue `false`
1780
+ * @see the component manifest
1781
+ */
1315
1782
  clearable?: boolean;
1783
+ /**
1784
+ * When true, shows a search/filter input.
1785
+ *
1786
+ * @defaultValue `true`
1787
+ * @see the component manifest
1788
+ */
1316
1789
  searchable?: boolean;
1317
1790
  label?: string;
1318
1791
  hint?: string;
@@ -1355,11 +1828,29 @@ interface DatePickerProps {
1355
1828
  onChange?: (value: string | undefined) => void;
1356
1829
  min?: string;
1357
1830
  max?: string;
1831
+ /**
1832
+ * Shows a clear button
1833
+ *
1834
+ * @defaultValue `false`
1835
+ * @see the component manifest
1836
+ */
1358
1837
  clearable?: boolean;
1359
1838
  label?: string;
1360
1839
  hint?: string;
1361
1840
  error?: string;
1841
+ /**
1842
+ * Field size
1843
+ *
1844
+ * @defaultValue `md`
1845
+ * @see the component manifest
1846
+ */
1362
1847
  size?: 'sm' | 'md' | 'lg';
1848
+ /**
1849
+ * Disables the picker
1850
+ *
1851
+ * @defaultValue `false`
1852
+ * @see the component manifest
1853
+ */
1363
1854
  disabled?: boolean;
1364
1855
  labels?: DatePickerLabels;
1365
1856
  className?: string;
@@ -1398,9 +1889,21 @@ interface FileUploaderLabels {
1398
1889
  error?: string;
1399
1890
  }
1400
1891
  interface FileUploaderProps {
1892
+ /**
1893
+ * Controlled file list
1894
+ *
1895
+ * @defaultValue `[]`
1896
+ * @see the component manifest
1897
+ */
1401
1898
  files?: UploaderFile[];
1402
1899
  onFilesAdded?: (files: File[]) => void;
1403
1900
  onRemove?: (id: string) => void;
1901
+ /**
1902
+ * Allow multiple files
1903
+ *
1904
+ * @defaultValue `false`
1905
+ * @see the component manifest
1906
+ */
1404
1907
  multiple?: boolean;
1405
1908
  accept?: string;
1406
1909
  maxSize?: number;
@@ -1408,6 +1911,12 @@ interface FileUploaderProps {
1408
1911
  label?: string;
1409
1912
  hint?: string;
1410
1913
  labels?: FileUploaderLabels;
1914
+ /**
1915
+ * Disables the upload zone
1916
+ *
1917
+ * @defaultValue `false`
1918
+ * @see the component manifest
1919
+ */
1411
1920
  disabled?: boolean;
1412
1921
  className?: string;
1413
1922
  }
@@ -1440,24 +1949,13 @@ interface TimePickerProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 's
1440
1949
  error?: string;
1441
1950
  size?: 'sm' | 'md' | 'lg';
1442
1951
  }
1443
- declare function TimePicker({
1444
- value,
1445
- defaultValue,
1446
- onValueChange,
1447
- onChange,
1448
- min,
1449
- max,
1450
- step,
1451
- label,
1452
- hint,
1453
- error,
1454
- size,
1455
- className,
1456
- id,
1457
- onFocus,
1458
- onBlur,
1459
- ...props
1460
- }: TimePickerProps): import("react").JSX.Element;
1952
+ /**
1953
+ * `forwardRef` so `ref` reaches the underlying `<input>` — and so it is TYPED. See
1954
+ * `textarea.tsx` for the full rationale (2026-07-28 report C10). Enforced by
1955
+ * `ref-parity.test.ts`, which found this component: the plan's own list of 16 was itself
1956
+ * incomplete, which is why the rule is a guard and not a checklist.
1957
+ */
1958
+ declare const TimePicker: import("react").ForwardRefExoticComponent<TimePickerProps & import("react").RefAttributes<HTMLInputElement>>;
1461
1959
  interface UsePopoverOptions {
1462
1960
  open?: boolean;
1463
1961
  onOpenChange?: (open: boolean) => void;
@@ -1483,10 +1981,24 @@ declare function Popover({
1483
1981
  }: PopoverProps): import("react").JSX.Element;
1484
1982
  interface PopoverTriggerProps {
1485
1983
  children: ReactNode;
1984
+ /**
1985
+ * Render the single child element as the trigger instead of wrapping it in
1986
+ * `PopoverTrigger`'s own `<button>` — the Slot pattern. Use this whenever the child is
1987
+ * already an interactive element (`Button`, `IconButton`, a router link): nesting a
1988
+ * `<button>` inside a `<button>` is invalid HTML, and it orphans the inner element's
1989
+ * `aria-label` on a node the accessibility tree does not expect there.
1990
+ *
1991
+ * ```tsx
1992
+ * <PopoverTrigger asChild>
1993
+ * <IconButton label="Theme" icon={<Palette />} />
1994
+ * </PopoverTrigger>
1995
+ * ```
1996
+ */
1486
1997
  asChild?: boolean;
1487
1998
  }
1488
1999
  declare function PopoverTrigger({
1489
- children
2000
+ children,
2001
+ asChild
1490
2002
  }: PopoverTriggerProps): import("react").JSX.Element;
1491
2003
  interface PopoverContentProps {
1492
2004
  children: ReactNode;
@@ -1532,6 +2044,12 @@ interface AlertDialogProps {
1532
2044
  onConfirm: () => void;
1533
2045
  onCancel: () => void;
1534
2046
  labels?: AlertDialogLabels;
2047
+ /**
2048
+ * Selects the visual style variant.
2049
+ *
2050
+ * @defaultValue `default`
2051
+ * @see the component manifest
2052
+ */
1535
2053
  variant?: 'destructive' | 'default';
1536
2054
  }
1537
2055
  declare function AlertDialog({
@@ -1549,6 +2067,12 @@ interface SheetProps {
1549
2067
  /** Optional heading. Accepts rich nodes; when present it labels the dialog via `aria-labelledby`. */
1550
2068
  title?: ReactNode;
1551
2069
  children: ReactNode;
2070
+ /**
2071
+ * Edge the component is anchored to.
2072
+ *
2073
+ * @defaultValue `end`
2074
+ * @see the component manifest
2075
+ */
1552
2076
  side?: 'start' | 'end' | 'top' | 'bottom';
1553
2077
  }
1554
2078
  declare function Sheet({
@@ -1572,7 +2096,12 @@ interface BottomSheetProps {
1572
2096
  snapPoints?: number[];
1573
2097
  /** Controlled active detent index into `snapPoints`. */
1574
2098
  activeSnap?: number;
1575
- /** Initial active detent index for uncontrolled use. Defaults to the lowest detent. */
2099
+ /**
2100
+ * The initial snap-point index when uncontrolled.
2101
+ *
2102
+ * @defaultValue `0`
2103
+ * @see the component manifest
2104
+ */
1576
2105
  defaultSnap?: number;
1577
2106
  /** Called when the active detent changes via drag. */
1578
2107
  onSnapChange?: (index: number) => void;
@@ -1631,11 +2160,27 @@ interface ComparisonProps extends Omit<HTMLAttributes<HTMLDivElement>, 'onChange
1631
2160
  before: ReactNode;
1632
2161
  /** Divider position as a percentage 0–100. Controlled when provided. */
1633
2162
  position?: number;
1634
- /** Initial divider position for uncontrolled use. Default 50. */
2163
+ /**
2164
+ * The initial divider position (0–100) when uncontrolled.
2165
+ *
2166
+ * @defaultValue `50`
2167
+ * @see the component manifest
2168
+ */
1635
2169
  defaultPosition?: number;
1636
2170
  onPositionChange?: (position: number) => void;
2171
+ /**
2172
+ * Layout orientation of the component.
2173
+ *
2174
+ * @defaultValue `horizontal`
2175
+ * @see the component manifest
2176
+ */
1637
2177
  orientation?: 'horizontal' | 'vertical';
1638
- /** Percentage the Arrow keys move the divider. Default 5. */
2178
+ /**
2179
+ * How far the divider moves per arrow-key press.
2180
+ *
2181
+ * @defaultValue `5`
2182
+ * @see the component manifest
2183
+ */
1639
2184
  keyboardStep?: number;
1640
2185
  /** Accessible label for the divider slider. */
1641
2186
  label?: string;
@@ -1654,7 +2199,19 @@ declare function Comparison({
1654
2199
  }: ComparisonProps): import("react").JSX.Element;
1655
2200
  interface HoverCardProps {
1656
2201
  children: ReactNode;
2202
+ /**
2203
+ * Delay (ms) before the card opens on hover/focus.
2204
+ *
2205
+ * @defaultValue `300`
2206
+ * @see the component manifest
2207
+ */
1657
2208
  openDelay?: number;
2209
+ /**
2210
+ * Delay (ms) before the card closes after hover/focus leaves.
2211
+ *
2212
+ * @defaultValue `100`
2213
+ * @see the component manifest
2214
+ */
1658
2215
  closeDelay?: number;
1659
2216
  }
1660
2217
  declare function HoverCard({
@@ -1682,24 +2239,32 @@ interface PasswordInputLabels {
1682
2239
  strengthLabel?: (level: string) => string;
1683
2240
  }
1684
2241
  interface PasswordInputProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'type' | 'size'> {
2242
+ /**
2243
+ * When true, shows a password-strength meter.
2244
+ *
2245
+ * @defaultValue `false`
2246
+ * @see the component manifest
2247
+ */
1685
2248
  showStrengthMeter?: boolean;
1686
2249
  size?: 'sm' | 'md' | 'lg';
1687
2250
  labels?: PasswordInputLabels;
1688
2251
  }
1689
- declare function PasswordInput({
1690
- showStrengthMeter,
1691
- size,
1692
- labels,
1693
- className,
1694
- id,
1695
- value,
1696
- defaultValue,
1697
- onChange,
1698
- ...props
1699
- }: PasswordInputProps): import("react").JSX.Element;
2252
+ /**
2253
+ * `forwardRef` so `ref` reaches the underlying `<input>` — and so it is TYPED. See
2254
+ * `textarea.tsx` for the full rationale (2026-07-28 report C10). Enforced by
2255
+ * `ref-parity.test.ts`, which found this component: the plan's own list of 16 was itself
2256
+ * incomplete, which is why the rule is a guard and not a checklist.
2257
+ */
2258
+ declare const PasswordInput: import("react").ForwardRefExoticComponent<PasswordInputProps & import("react").RefAttributes<HTMLInputElement>>;
1700
2259
  interface MultiSelectOption {
1701
2260
  label: string;
1702
2261
  value: string;
2262
+ /**
2263
+ * When true, disables the control and removes it from the tab order.
2264
+ *
2265
+ * @defaultValue `false`
2266
+ * @see the component manifest
2267
+ */
1703
2268
  disabled?: boolean;
1704
2269
  }
1705
2270
  interface MultiSelectLabels {
@@ -1733,6 +2298,12 @@ interface TagsInputProps extends Omit<HTMLAttributes<HTMLDivElement>, 'onChange'
1733
2298
  placeholder?: string;
1734
2299
  validate?: (tag: string) => boolean;
1735
2300
  max?: number;
2301
+ /**
2302
+ * When true, disables the control and removes it from the tab order.
2303
+ *
2304
+ * @defaultValue `false`
2305
+ * @see the component manifest
2306
+ */
1736
2307
  disabled?: boolean;
1737
2308
  }
1738
2309
  declare function TagsInput({
@@ -1746,9 +2317,21 @@ declare function TagsInput({
1746
2317
  ...props
1747
2318
  }: TagsInputProps): import("react").JSX.Element;
1748
2319
  interface OtpInputProps extends Omit<HTMLAttributes<HTMLDivElement>, 'onChange'> {
2320
+ /**
2321
+ * Number of input cells.
2322
+ *
2323
+ * @defaultValue `6`
2324
+ * @see the component manifest
2325
+ */
1749
2326
  length?: number;
1750
2327
  value: string;
1751
2328
  onValueChange: (v: string) => void;
2329
+ /**
2330
+ * When true, disables the control and removes it from the tab order.
2331
+ *
2332
+ * @defaultValue `false`
2333
+ * @see the component manifest
2334
+ */
1752
2335
  disabled?: boolean;
1753
2336
  type?: 'numeric' | 'alphanumeric';
1754
2337
  }
@@ -1764,6 +2347,12 @@ declare function OtpInput({
1764
2347
  interface SegmentedControlOption {
1765
2348
  label: string;
1766
2349
  value: string;
2350
+ /**
2351
+ * When true, disables the control and removes it from the tab order.
2352
+ *
2353
+ * @defaultValue `false`
2354
+ * @see the component manifest
2355
+ */
1767
2356
  disabled?: boolean;
1768
2357
  }
1769
2358
  interface SegmentedControlProps extends Omit<HTMLAttributes<HTMLDivElement>, 'onChange'> {
@@ -1812,9 +2401,27 @@ interface RatingGroupLabels {
1812
2401
  interface RatingGroupProps extends Omit<HTMLAttributes<HTMLDivElement>, 'onChange'> {
1813
2402
  value: number;
1814
2403
  onValueChange?: (v: number) => void;
2404
+ /**
2405
+ * Maximum allowed value.
2406
+ *
2407
+ * @defaultValue `5`
2408
+ * @see the component manifest
2409
+ */
1815
2410
  max?: number;
1816
2411
  size?: 'sm' | 'md' | 'lg';
2412
+ /**
2413
+ * When true, disables the control and removes it from the tab order.
2414
+ *
2415
+ * @defaultValue `false`
2416
+ * @see the component manifest
2417
+ */
1817
2418
  disabled?: boolean;
2419
+ /**
2420
+ * When true, the value is shown but cannot be edited.
2421
+ *
2422
+ * @defaultValue `false`
2423
+ * @see the component manifest
2424
+ */
1818
2425
  readOnly?: boolean;
1819
2426
  labels?: RatingGroupLabels;
1820
2427
  }
@@ -1833,7 +2440,19 @@ interface EditableProps extends Omit<HTMLAttributes<HTMLDivElement>, 'onChange'>
1833
2440
  value: string;
1834
2441
  onValueChange: (v: string) => void;
1835
2442
  placeholder?: string;
2443
+ /**
2444
+ * When true, disables the control and removes it from the tab order.
2445
+ *
2446
+ * @defaultValue `false`
2447
+ * @see the component manifest
2448
+ */
1836
2449
  disabled?: boolean;
2450
+ /**
2451
+ * When true, commits the edit when the field loses focus.
2452
+ *
2453
+ * @defaultValue `true`
2454
+ * @see the component manifest
2455
+ */
1837
2456
  submitOnBlur?: boolean;
1838
2457
  onCancel?: () => void;
1839
2458
  }
@@ -1872,14 +2491,14 @@ interface RadioCardProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'na
1872
2491
  disabled?: boolean;
1873
2492
  hideIndicator?: boolean;
1874
2493
  }
1875
- declare function RadioCard({
1876
- value,
1877
- title,
1878
- description,
1879
- disabled,
1880
- hideIndicator,
1881
- ...props
1882
- }: RadioCardProps): import("react").JSX.Element;
2494
+ /**
2495
+ * `forwardRef` so `ref` reaches the underlying `<input>` — and so it is TYPED. See
2496
+ * `textarea.tsx` for the rationale (2026-07-28 report C10).
2497
+ *
2498
+ * `RadioCard` (the item), not `RadioCardGroup` (the container): the group renders a <div>
2499
+ * and only the card owns a focusable control.
2500
+ */
2501
+ declare const RadioCard: import("react").ForwardRefExoticComponent<RadioCardProps & import("react").RefAttributes<HTMLInputElement>>;
1883
2502
  interface ShellHeaderBrand {
1884
2503
  prefix?: string;
1885
2504
  name: string;
@@ -1973,6 +2592,12 @@ type SwitcherEntry = SwitcherLink | {
1973
2592
  };
1974
2593
  interface SwitcherProps {
1975
2594
  items: SwitcherEntry[];
2595
+ /**
2596
+ * Text label for the control.
2597
+ *
2598
+ * @defaultValue `Switch application`
2599
+ * @see the component manifest
2600
+ */
1976
2601
  label?: string;
1977
2602
  className?: string | undefined;
1978
2603
  }
@@ -1987,16 +2612,13 @@ interface CheckboxCardProps extends Omit<InputHTMLAttributes<HTMLInputElement>,
1987
2612
  onCheckedChange?: (checked: boolean) => void;
1988
2613
  className?: string | undefined;
1989
2614
  }
1990
- declare function CheckboxCard({
1991
- title,
1992
- description,
1993
- checked,
1994
- defaultChecked,
1995
- disabled,
1996
- onCheckedChange,
1997
- className,
1998
- ...props
1999
- }: CheckboxCardProps): import("react").JSX.Element;
2615
+ /**
2616
+ * `forwardRef` so `ref` reaches the underlying `<input>` — and so it is TYPED. See
2617
+ * `textarea.tsx` for the full rationale (2026-07-28 report C10). Enforced by
2618
+ * `ref-parity.test.ts`, which found this component: the plan's own list of 16 was itself
2619
+ * incomplete, which is why the rule is a guard and not a checklist.
2620
+ */
2621
+ declare const CheckboxCard: import("react").ForwardRefExoticComponent<CheckboxCardProps & import("react").RefAttributes<HTMLInputElement>>;
2000
2622
  interface CopyButtonProps extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, 'value'> {
2001
2623
  /** The text written to the clipboard on click. */
2002
2624
  value: string;
@@ -2006,19 +2628,27 @@ interface CopyButtonProps extends Omit<ButtonHTMLAttributes<HTMLButtonElement>,
2006
2628
  copied?: string;
2007
2629
  };
2008
2630
  }
2009
- declare function CopyButton({
2010
- value,
2011
- size,
2012
- labels,
2013
- className,
2014
- ...props
2015
- }: CopyButtonProps): import("react").JSX.Element;
2631
+ /**
2632
+ * `forwardRef` so `ref` reaches the underlying `<button>` — and so it is TYPED. See
2633
+ * `textarea.tsx` for the full rationale (2026-07-28 report C10). Enforced by
2634
+ * `ref-parity.test.ts`, which found this component: the plan's own list of 16 was itself
2635
+ * incomplete, which is why the rule is a guard and not a checklist.
2636
+ */
2637
+ declare const CopyButton: import("react").ForwardRefExoticComponent<CopyButtonProps & import("react").RefAttributes<HTMLButtonElement>>;
2016
2638
  interface StatProps extends Omit<HTMLAttributes<HTMLDivElement>, 'children'> {
2017
2639
  label: string;
2018
2640
  value: string | number;
2019
2641
  delta?: string;
2020
2642
  trend?: 'up' | 'down' | 'flat';
2021
2643
  helpText?: string;
2644
+ /**
2645
+ * Wrap the tile in the same card chrome (surface, border, radius, padding) that
2646
+ * `@cascivo/charts`' `Kpi` ships. `Stat` is layout-only by default so it can sit inside
2647
+ * a `Card` you control; `Kpi` always brings its own chrome, which made a `Stat` row and
2648
+ * a `Kpi` row on adjacent pages of one dashboard look like different products. Set this
2649
+ * when you are mixing the two, or use it instead of hand-wrapping every `Stat` in a `Card`.
2650
+ */
2651
+ card?: boolean;
2022
2652
  /** Trailing visual, e.g. a `Sparkline` from the separate `@cascivo/charts` package (not exported from `@cascivo/react`; `pnpm add @cascivo/charts`). Purely decorative — mark it `aria-hidden` yourself if it duplicates the value/delta already announced. */
2023
2653
  visual?: ReactNode;
2024
2654
  }
@@ -2028,13 +2658,24 @@ declare function Stat({
2028
2658
  delta,
2029
2659
  trend,
2030
2660
  helpText,
2661
+ card,
2031
2662
  visual,
2032
2663
  className,
2033
2664
  ...props
2034
2665
  }: StatProps): import("react").JSX.Element;
2035
2666
  interface StatusProps extends HTMLAttributes<HTMLSpanElement> {
2036
- status?: 'success' | 'warning' | 'error' | 'info' | 'neutral';
2037
- /** Pulses the dot — only when the user allows motion. */
2667
+ /**
2668
+ * Severity tone. Accepts the catalog-wide `Tone` vocabulary
2669
+ * (`neutral | info | success | warning | danger`) plus Status's historical spellings
2670
+ * (`error`, `destructive`, `default`).
2671
+ */
2672
+ status?: ToneInput;
2673
+ /**
2674
+ * Pulses the dot — gated behind prefers-reduced-motion: no-preference
2675
+ *
2676
+ * @defaultValue `false`
2677
+ * @see the component manifest
2678
+ */
2038
2679
  pulse?: boolean;
2039
2680
  }
2040
2681
  declare function Status({
@@ -2045,19 +2686,32 @@ declare function Status({
2045
2686
  ...props
2046
2687
  }: StatusProps): import("react").JSX.Element;
2047
2688
  interface SkipNavLinkProps extends Omit<AnchorHTMLAttributes<HTMLAnchorElement>, 'href'> {
2689
+ /**
2690
+ * SkipNavLink: id of the SkipNavTarget to jump to
2691
+ *
2692
+ * @defaultValue `cascade-skip-target`
2693
+ * @see the component manifest
2694
+ */
2048
2695
  targetId?: string;
2049
2696
  labels?: {
2050
2697
  label?: string;
2051
2698
  };
2052
2699
  }
2053
2700
  /** Render as the FIRST focusable element on the page — visually hidden until focused. */
2054
- declare function SkipNavLink({
2055
- targetId,
2056
- labels,
2057
- className,
2058
- ...props
2059
- }: SkipNavLinkProps): import("react").JSX.Element;
2701
+ /**
2702
+ * `forwardRef` so `ref` reaches the underlying `<a>` — and so it is TYPED. See
2703
+ * `textarea.tsx` for the full rationale (2026-07-28 report C10). Enforced by
2704
+ * `ref-parity.test.ts`, which found this component: the plan's own list of 16 was itself
2705
+ * incomplete, which is why the rule is a guard and not a checklist.
2706
+ */
2707
+ declare const SkipNavLink: import("react").ForwardRefExoticComponent<SkipNavLinkProps & import("react").RefAttributes<HTMLAnchorElement>>;
2060
2708
  interface SkipNavTargetProps extends HTMLAttributes<HTMLDivElement> {
2709
+ /**
2710
+ * SkipNavTarget: anchor id — must match the link targetId
2711
+ *
2712
+ * @defaultValue `cascade-skip-target`
2713
+ * @see the component manifest
2714
+ */
2061
2715
  id?: string;
2062
2716
  }
2063
2717
  /** Place where the main content starts; the link's hash navigation moves focus here. */
@@ -2070,8 +2724,22 @@ type ProgressSize = 'sm' | 'md' | 'lg';
2070
2724
  interface ProgressProps {
2071
2725
  /** 0–100. Omit for indeterminate state. */
2072
2726
  value?: number;
2727
+ /**
2728
+ * Selects the visual style variant.
2729
+ *
2730
+ * @defaultValue `primary`
2731
+ * @see the component manifest
2732
+ */
2073
2733
  variant?: ProgressVariant;
2074
2734
  size?: ProgressSize;
2735
+ /**
2736
+ * Invisible accessible name. `ariaLabel` is the catalog convention (see the
2737
+ * accessible-name table in `docs/AI-RULES.md`); the DOM spelling `aria-label` is accepted
2738
+ * too, so either guess compiles. Two spellings of one idea inside a package was a coin
2739
+ * flip on every component.
2740
+ */
2741
+ ariaLabel?: string;
2742
+ /** DOM-spelled alias of {@link ariaLabel}. */
2075
2743
  'aria-label'?: string;
2076
2744
  'aria-describedby'?: string;
2077
2745
  className?: string;
@@ -2081,14 +2749,26 @@ declare function Progress({
2081
2749
  variant,
2082
2750
  size,
2083
2751
  className,
2752
+ ariaLabel,
2084
2753
  ...aria
2085
2754
  }: ProgressProps): import("react").JSX.Element;
2086
2755
  interface ProgressCircleProps extends HTMLAttributes<HTMLDivElement> {
2087
2756
  /** Current value from 0 to max — clamped. */
2088
2757
  value: number;
2758
+ /**
2759
+ * Maximum allowed value.
2760
+ *
2761
+ * @defaultValue `100`
2762
+ * @see the component manifest
2763
+ */
2089
2764
  max?: number;
2090
2765
  size?: 'sm' | 'md' | 'lg';
2091
- /** Renders the rounded percentage in the center — pairs best with md and lg. */
2766
+ /**
2767
+ * Renders the rounded percentage in the center — pairs best with md and lg
2768
+ *
2769
+ * @defaultValue `false`
2770
+ * @see the component manifest
2771
+ */
2092
2772
  showValue?: boolean;
2093
2773
  /** Accessible name for the progressbar. */
2094
2774
  label?: string;
@@ -2105,6 +2785,12 @@ declare function ProgressCircle({
2105
2785
  type HeadingLevel = 1 | 2 | 3 | 4 | 5 | 6;
2106
2786
  type HeadingSize = 'sm' | 'md' | 'lg' | 'xl' | '2xl';
2107
2787
  interface HeadingProps extends HTMLAttributes<HTMLHeadingElement> {
2788
+ /**
2789
+ * Heading level (1–6) mapping to h1–h6.
2790
+ *
2791
+ * @defaultValue `2`
2792
+ * @see the component manifest
2793
+ */
2108
2794
  level?: HeadingLevel;
2109
2795
  size?: HeadingSize;
2110
2796
  }
@@ -2116,9 +2802,21 @@ declare function Heading({
2116
2802
  ...props
2117
2803
  }: HeadingProps): import("react").JSX.Element;
2118
2804
  interface TextProps extends HTMLAttributes<HTMLElement> {
2805
+ /**
2806
+ * The HTML element to render as.
2807
+ *
2808
+ * @defaultValue `p`
2809
+ * @see the component manifest
2810
+ */
2119
2811
  as?: 'p' | 'span' | 'div';
2120
2812
  size?: 'sm' | 'md' | 'lg';
2121
2813
  weight?: 'normal' | 'medium' | 'semibold';
2814
+ /**
2815
+ * When true, renders in a muted/subtle color.
2816
+ *
2817
+ * @defaultValue `false`
2818
+ * @see the component manifest
2819
+ */
2122
2820
  muted?: boolean;
2123
2821
  }
2124
2822
  declare function Text({
@@ -2140,6 +2838,12 @@ declare function Code({
2140
2838
  ...props
2141
2839
  }: CodeProps): import("react").JSX.Element;
2142
2840
  interface BlockquoteProps extends HTMLAttributes<HTMLQuoteElement> {
2841
+ /**
2842
+ * URL of the quote’s source (sets the HTML cite attribute).
2843
+ *
2844
+ * @defaultValue `undefined`
2845
+ * @see the component manifest
2846
+ */
2143
2847
  cite?: string;
2144
2848
  }
2145
2849
  declare function Blockquote({
@@ -2149,6 +2853,12 @@ declare function Blockquote({
2149
2853
  ...props
2150
2854
  }: BlockquoteProps): import("react").JSX.Element;
2151
2855
  interface ListProps extends HTMLAttributes<HTMLElement> {
2856
+ /**
2857
+ * The HTML element to render as.
2858
+ *
2859
+ * @defaultValue `ul`
2860
+ * @see the component manifest
2861
+ */
2152
2862
  as?: 'ul' | 'ol';
2153
2863
  marker?: 'disc' | 'decimal' | 'none';
2154
2864
  }
@@ -2189,14 +2899,29 @@ interface LogViewerProps extends Omit<HTMLAttributes<HTMLDivElement>, 'children'
2189
2899
  lines: {
2190
2900
  readonly value: readonly LogLine[];
2191
2901
  } | readonly LogLine[];
2192
- /** Pixel height of one row. Default 20. */
2902
+ /**
2903
+ * Height of each row in pixels, used for virtualization.
2904
+ *
2905
+ * @defaultValue `20`
2906
+ * @see the component manifest
2907
+ */
2193
2908
  rowHeight?: number;
2194
- /** Extra rows rendered above/below the viewport. Default 8. */
2909
+ /**
2910
+ * Number of extra rows rendered above and below the viewport.
2911
+ *
2912
+ * @defaultValue `8`
2913
+ * @see the component manifest
2914
+ */
2195
2915
  overscan?: number;
2196
2916
  /** Controlled pin-to-bottom. Omit for uncontrolled (defaults to following). */
2197
2917
  follow?: boolean;
2198
2918
  onFollowChange?: (follow: boolean) => void;
2199
- /** Parse ANSI SGR color escapes. Default false (use `level` instead). */
2919
+ /**
2920
+ * When true, parses ANSI color escape codes into colored spans.
2921
+ *
2922
+ * @defaultValue `false`
2923
+ * @see the component manifest
2924
+ */
2200
2925
  ansi?: boolean;
2201
2926
  /** Seed the search/highlight box. */
2202
2927
  search?: string;
@@ -2233,8 +2958,19 @@ interface PullToRefreshProps {
2233
2958
  /** Invoked when the pull passes the threshold; the spinner shows until it settles. */
2234
2959
  onRefresh: () => Promise<unknown> | unknown;
2235
2960
  children: ReactNode;
2236
- /** Pull distance (px) required to trigger a refresh. Default 64. */
2961
+ /**
2962
+ * Pull distance (px) required to trigger a refresh.
2963
+ *
2964
+ * @defaultValue `64`
2965
+ * @see the component manifest
2966
+ */
2237
2967
  threshold?: number;
2968
+ /**
2969
+ * When true, disables the control and removes it from the tab order.
2970
+ *
2971
+ * @defaultValue `false`
2972
+ * @see the component manifest
2973
+ */
2238
2974
  disabled?: boolean;
2239
2975
  labels?: {
2240
2976
  pull?: string;
@@ -2272,13 +3008,28 @@ interface QrCodeProps extends Omit<HTMLAttributes<HTMLDivElement>, 'children'> {
2272
3008
  value: string;
2273
3009
  /** Rendered size in pixels (width and height). Default 128. */
2274
3010
  size?: number;
2275
- /** Error-correction level. Higher tolerates more damage but holds less data. Default 'M'. */
3011
+ /**
3012
+ * Higher levels tolerate more damage but hold less data
3013
+ *
3014
+ * @defaultValue `M`
3015
+ * @see the component manifest
3016
+ */
2276
3017
  errorCorrection?: ErrorCorrection;
2277
3018
  /** CSS length rounding the code's corners (applied to the container). */
2278
3019
  radius?: string;
2279
- /** Module color. Default `currentColor` so the code inherits text color. */
3020
+ /**
3021
+ * Foreground color of the QR modules.
3022
+ *
3023
+ * @defaultValue `currentColor`
3024
+ * @see the component manifest
3025
+ */
2280
3026
  fill?: string;
2281
- /** Background color behind the modules. Default `transparent`. */
3027
+ /**
3028
+ * Background color behind the QR code.
3029
+ *
3030
+ * @defaultValue `transparent`
3031
+ * @see the component manifest
3032
+ */
2282
3033
  background?: string;
2283
3034
  /** Accessible label. Defaults to the i18n built-in "QR code". */
2284
3035
  label?: string;
@@ -2298,7 +3049,12 @@ declare function QrCode({
2298
3049
  interface RelativeTimeProps extends Omit<TimeHTMLAttributes<HTMLTimeElement>, 'dateTime'> {
2299
3050
  /** The instant to describe relative to now. */
2300
3051
  date: Date | number | string;
2301
- /** Auto-update as time passes. Default true. */
3052
+ /**
3053
+ * When true, updates the relative time as it elapses.
3054
+ *
3055
+ * @defaultValue `true`
3056
+ * @see the component manifest
3057
+ */
2302
3058
  sync?: boolean;
2303
3059
  /** Override "now" (ms since epoch). Mainly for deterministic tests; disables the interval. */
2304
3060
  now?: number;
@@ -2314,11 +3070,27 @@ declare function RelativeTime({
2314
3070
  ...props
2315
3071
  }: RelativeTimeProps): import("react").JSX.Element;
2316
3072
  interface LabelProps extends LabelHTMLAttributes<HTMLLabelElement> {
2317
- /** Renders into the child element (Slot composition) instead of a native `<label>`. */
3073
+ /**
3074
+ * When true, renders the child element as the root via Slot, merging props (polymorphic
3075
+ * rendering).
3076
+ *
3077
+ * @defaultValue `false`
3078
+ * @see the component manifest
3079
+ */
2318
3080
  asChild?: boolean;
2319
- /** Shows a required marker after the label text. */
3081
+ /**
3082
+ * When true, marks the field as required.
3083
+ *
3084
+ * @defaultValue `false`
3085
+ * @see the component manifest
3086
+ */
2320
3087
  required?: boolean;
2321
- /** Dims the label to match an associated disabled control. */
3088
+ /**
3089
+ * When true, disables the control and removes it from the tab order.
3090
+ *
3091
+ * @defaultValue `false`
3092
+ * @see the component manifest
3093
+ */
2322
3094
  disabled?: boolean;
2323
3095
  children: ReactNode;
2324
3096
  /** Override built-in strings (e.g. the required-marker accessible text). */
@@ -2342,9 +3114,19 @@ interface FieldProps {
2342
3114
  description?: ReactNode;
2343
3115
  /** Error message; sets aria-invalid on the control and is announced via role="alert". */
2344
3116
  error?: ReactNode;
2345
- /** Marks the field required (forwarded to the Label marker). */
3117
+ /**
3118
+ * When true, marks the field as required.
3119
+ *
3120
+ * @defaultValue `false`
3121
+ * @see the component manifest
3122
+ */
2346
3123
  required?: boolean;
2347
- /** Dims the label and is forwarded to the cloned control. */
3124
+ /**
3125
+ * When true, disables the control and removes it from the tab order.
3126
+ *
3127
+ * @defaultValue `false`
3128
+ * @see the component manifest
3129
+ */
2348
3130
  disabled?: boolean;
2349
3131
  /** Explicit id for the control; auto-generated when omitted. */
2350
3132
  id?: string;
@@ -2375,13 +3157,39 @@ interface FilterOption {
2375
3157
  interface FilterProps {
2376
3158
  options: FilterOption[];
2377
3159
  value?: string[];
3160
+ /**
3161
+ * Initial selected values for uncontrolled use
3162
+ *
3163
+ * @defaultValue `[]`
3164
+ * @see the component manifest
3165
+ */
2378
3166
  defaultValue?: string[];
2379
3167
  /** Called with the selected values whenever the selection changes. */
2380
3168
  onValueChange?: (selected: string[]) => void;
2381
3169
  /** @deprecated Use `onValueChange` — it receives the same `string[]`. */
2382
3170
  onChange?: (selected: string[]) => void;
3171
+ /**
3172
+ * Allow multiple items to be selected simultaneously
3173
+ *
3174
+ * @defaultValue `false`
3175
+ * @see the component manifest
3176
+ */
2383
3177
  multi?: boolean;
3178
+ /**
3179
+ * Selects the visual style variant.
3180
+ *
3181
+ * @defaultValue `pill`
3182
+ * @see the component manifest
3183
+ */
2384
3184
  variant?: FilterVariant;
3185
+ /**
3186
+ * Invisible accessible name. `ariaLabel` is the catalog convention (see the
3187
+ * accessible-name table in `docs/AI-RULES.md`); the DOM spelling `aria-label` is accepted
3188
+ * too, so either guess compiles. Two spellings of one idea inside a package was a coin
3189
+ * flip on every component.
3190
+ */
3191
+ ariaLabel?: string;
3192
+ /** DOM-spelled alias of {@link ariaLabel}. */
2385
3193
  'aria-label'?: string;
2386
3194
  className?: string;
2387
3195
  }
@@ -2394,6 +3202,7 @@ declare function Filter({
2394
3202
  multi,
2395
3203
  variant,
2396
3204
  className,
3205
+ ariaLabel,
2397
3206
  ...aria
2398
3207
  }: FilterProps): import("react").JSX.Element;
2399
3208
  interface IconButtonBaseProps extends ButtonHTMLAttributes<HTMLButtonElement> {
@@ -2401,8 +3210,20 @@ interface IconButtonBaseProps extends ButtonHTMLAttributes<HTMLButtonElement> {
2401
3210
  * ships ~440 ready-made SVG icon components, or pass your own. */
2402
3211
  icon?: ReactNode;
2403
3212
  size?: 'sm' | 'md' | 'lg';
3213
+ /**
3214
+ * Selects the visual style variant.
3215
+ *
3216
+ * @defaultValue `ghost`
3217
+ * @see the component manifest
3218
+ */
2404
3219
  variant?: 'ghost' | 'outline' | 'filled';
2405
- /** Render the single child element instead of a `<button>` (composition). */
3220
+ /**
3221
+ * When true, renders the child element as the root via Slot, merging props (polymorphic
3222
+ * rendering).
3223
+ *
3224
+ * @defaultValue `false`
3225
+ * @see the component manifest
3226
+ */
2406
3227
  asChild?: boolean;
2407
3228
  }
2408
3229
  /**
@@ -2420,10 +3241,27 @@ type IconButtonProps = IconButtonBaseProps & ({
2420
3241
  });
2421
3242
  declare const IconButton: import("react").ForwardRefExoticComponent<IconButtonProps & import("react").RefAttributes<HTMLButtonElement>>;
2422
3243
  interface ButtonGroupProps extends HTMLAttributes<HTMLDivElement> {
3244
+ /**
3245
+ * Layout orientation of the component.
3246
+ *
3247
+ * @defaultValue `horizontal`
3248
+ * @see the component manifest
3249
+ */
2423
3250
  orientation?: 'horizontal' | 'vertical';
2424
3251
  size?: 'sm' | 'md' | 'lg';
2425
- /** Enable arrow-key roving focus across the group's focusable buttons. */
3252
+ /**
3253
+ * When true, uses roving tabindex so arrow keys move focus between buttons.
3254
+ *
3255
+ * @defaultValue `false`
3256
+ * @see the component manifest
3257
+ */
2426
3258
  roving?: boolean;
3259
+ /**
3260
+ * When true, navigation wraps around from end to start.
3261
+ *
3262
+ * @defaultValue `false`
3263
+ * @see the component manifest
3264
+ */
2427
3265
  loop?: boolean;
2428
3266
  }
2429
3267
  declare const ButtonGroup: import("react").ForwardRefExoticComponent<ButtonGroupProps & import("react").RefAttributes<HTMLDivElement>>;
@@ -2431,6 +3269,12 @@ interface ToggleGroupItem {
2431
3269
  value: string;
2432
3270
  label?: string;
2433
3271
  icon?: ReactNode;
3272
+ /**
3273
+ * When true, disables the control and removes it from the tab order.
3274
+ *
3275
+ * @defaultValue `false`
3276
+ * @see the component manifest
3277
+ */
2434
3278
  disabled?: boolean;
2435
3279
  }
2436
3280
  interface ToggleGroupProps extends Omit<HTMLAttributes<HTMLDivElement>, 'onChange' | 'defaultValue'> {
@@ -2439,6 +3283,12 @@ interface ToggleGroupProps extends Omit<HTMLAttributes<HTMLDivElement>, 'onChang
2439
3283
  defaultValue?: string | string[];
2440
3284
  onValueChange?: (value: string | string[]) => void;
2441
3285
  items: ToggleGroupItem[];
3286
+ /**
3287
+ * Layout orientation of the component.
3288
+ *
3289
+ * @defaultValue `horizontal`
3290
+ * @see the component manifest
3291
+ */
2442
3292
  orientation?: 'horizontal' | 'vertical';
2443
3293
  size?: 'sm' | 'md' | 'lg';
2444
3294
  disabled?: boolean;
@@ -2461,11 +3311,23 @@ declare function InlineLoading({
2461
3311
  className,
2462
3312
  ...props
2463
3313
  }: InlineLoadingProps): import("react").JSX.Element;
2464
- type NotificationVariant = 'info' | 'success' | 'warning' | 'error';
3314
+ /** The value Notification's stylesheet and icon set key on. */
3315
+ type NotificationVariant = 'neutral' | 'info' | 'success' | 'warning' | 'error';
2465
3316
  interface NotificationProps extends Omit<HTMLAttributes<HTMLDivElement>, 'title'> {
2466
3317
  title: ReactNode;
2467
3318
  description?: ReactNode;
2468
- variant?: NotificationVariant;
3319
+ /**
3320
+ * Severity tone. Accepts the catalog-wide `Tone` vocabulary
3321
+ * (`neutral | info | success | warning | danger`) plus Notification's historical
3322
+ * spellings (`error`, `destructive`).
3323
+ */
3324
+ variant?: ToneInput;
3325
+ /**
3326
+ * When true, shows a control to dismiss the component.
3327
+ *
3328
+ * @defaultValue `false`
3329
+ * @see the component manifest
3330
+ */
2469
3331
  dismissible?: boolean;
2470
3332
  onDismiss?: () => void;
2471
3333
  actions?: ReactNode;
@@ -2477,7 +3339,7 @@ interface NotificationProps extends Omit<HTMLAttributes<HTMLDivElement>, 'title'
2477
3339
  declare function Notification({
2478
3340
  title,
2479
3341
  description,
2480
- variant,
3342
+ variant: variantProp,
2481
3343
  dismissible,
2482
3344
  onDismiss,
2483
3345
  actions,
@@ -2491,9 +3353,19 @@ interface ScrollAreaProps extends HTMLAttributes<HTMLDivElement> {
2491
3353
  height?: string;
2492
3354
  /** Max inline size of the scroll container (any CSS length). */
2493
3355
  width?: string;
2494
- /** Which axes may scroll. */
3356
+ /**
3357
+ * Which axes may scroll
3358
+ *
3359
+ * @defaultValue `vertical`
3360
+ * @see the component manifest
3361
+ */
2495
3362
  orientation?: 'vertical' | 'horizontal' | 'both';
2496
- /** Edge affordance: box-shadow (default), a mask-image fade (HeroUI ScrollShadow), or none. */
3363
+ /**
3364
+ * Edge affordance: box-shadow, a mask-image fade, or none
3365
+ *
3366
+ * @defaultValue `shadow`
3367
+ * @see the component manifest
3368
+ */
2497
3369
  edges?: 'shadow' | 'mask' | 'none';
2498
3370
  children?: ReactNode;
2499
3371
  }
@@ -2510,13 +3382,23 @@ declare function ScrollArea({
2510
3382
  interface CollapsibleProps {
2511
3383
  /** Controlled open state. */
2512
3384
  open?: boolean;
2513
- /** Initial open state for uncontrolled use. */
3385
+ /**
3386
+ * Initial open state for uncontrolled use
3387
+ *
3388
+ * @defaultValue `false`
3389
+ * @see the component manifest
3390
+ */
2514
3391
  defaultOpen?: boolean;
2515
3392
  /** Called whenever the open state should change. */
2516
3393
  onOpenChange?: (open: boolean) => void;
2517
3394
  /** Content rendered inside the trigger button. */
2518
3395
  trigger: ReactNode;
2519
- /** Disables the trigger. */
3396
+ /**
3397
+ * Disables the trigger button
3398
+ *
3399
+ * @defaultValue `false`
3400
+ * @see the component manifest
3401
+ */
2520
3402
  disabled?: boolean;
2521
3403
  className?: string;
2522
3404
  children?: ReactNode;
@@ -2531,7 +3413,12 @@ declare function Collapsible({
2531
3413
  children
2532
3414
  }: CollapsibleProps): import("react").JSX.Element;
2533
3415
  interface AspectRatioProps extends HTMLAttributes<HTMLDivElement> {
2534
- /** Width-to-height ratio (e.g. 16 / 9). Defaults to 16/9. */
3416
+ /**
3417
+ * Width-to-height ratio applied via the CSS aspect-ratio property
3418
+ *
3419
+ * @defaultValue `16 / 9`
3420
+ * @see the component manifest
3421
+ */
2535
3422
  ratio?: number;
2536
3423
  children?: ReactNode;
2537
3424
  }
@@ -2546,6 +3433,12 @@ interface MenuButtonItem {
2546
3433
  id: string;
2547
3434
  label: ReactNode;
2548
3435
  onSelect?: () => void;
3436
+ /**
3437
+ * Disables the trigger
3438
+ *
3439
+ * @defaultValue `false`
3440
+ * @see the component manifest
3441
+ */
2549
3442
  disabled?: boolean;
2550
3443
  }
2551
3444
  interface MenuButtonProps {
@@ -2577,6 +3470,12 @@ interface ToggletipProps {
2577
3470
  /** The popover content. Interactive and selectable. */
2578
3471
  children: ReactNode;
2579
3472
  placement?: ToggletipPlacement;
3473
+ /**
3474
+ * Initial open state when uncontrolled
3475
+ *
3476
+ * @defaultValue `false`
3477
+ * @see the component manifest
3478
+ */
2580
3479
  defaultOpen?: boolean;
2581
3480
  open?: boolean;
2582
3481
  onOpenChange?: (open: boolean) => void;
@@ -2625,6 +3524,12 @@ interface NavigationMenuItem {
2625
3524
  interface NavigationMenuProps {
2626
3525
  items: NavigationMenuItem[];
2627
3526
  'aria-label'?: string;
3527
+ /**
3528
+ * Layout orientation of the component.
3529
+ *
3530
+ * @defaultValue `horizontal`
3531
+ * @see the component manifest
3532
+ */
2628
3533
  orientation?: RovingOrientation;
2629
3534
  className?: string;
2630
3535
  }
@@ -2677,11 +3582,25 @@ interface StructuredListItem {
2677
3582
  interface StructuredListProps {
2678
3583
  items: StructuredListItem[];
2679
3584
  headers?: ReactNode[];
3585
+ /**
3586
+ * When true, rows can be selected.
3587
+ *
3588
+ * @defaultValue `false`
3589
+ * @see the component manifest
3590
+ */
2680
3591
  selectable?: boolean;
2681
3592
  value?: string;
2682
3593
  defaultValue?: string;
2683
3594
  onSelect?: (id: string) => void;
2684
3595
  className?: string;
3596
+ /**
3597
+ * Invisible accessible name. `ariaLabel` is the catalog convention (see the
3598
+ * accessible-name table in `docs/AI-RULES.md`); the DOM spelling `aria-label` is accepted
3599
+ * too, so either guess compiles. Two spellings of one idea inside a package was a coin
3600
+ * flip on every component.
3601
+ */
3602
+ ariaLabel?: string;
3603
+ /** DOM-spelled alias of {@link ariaLabel}. */
2685
3604
  'aria-label'?: string;
2686
3605
  }
2687
3606
  declare function StructuredList(props: StructuredListProps): import("react").JSX.Element;
@@ -2715,7 +3634,19 @@ interface DataListItem {
2715
3634
  }
2716
3635
  interface DataListProps extends HTMLAttributes<HTMLDListElement> {
2717
3636
  items: DataListItem[];
3637
+ /**
3638
+ * Layout orientation of the component.
3639
+ *
3640
+ * @defaultValue `horizontal`
3641
+ * @see the component manifest
3642
+ */
2718
3643
  orientation?: 'horizontal' | 'vertical';
3644
+ /**
3645
+ * When true, shows dividers between items.
3646
+ *
3647
+ * @defaultValue `false`
3648
+ * @see the component manifest
3649
+ */
2719
3650
  dividers?: boolean;
2720
3651
  size?: 'sm' | 'md';
2721
3652
  }
@@ -2733,10 +3664,22 @@ interface TimelineItem {
2733
3664
  description?: ReactNode;
2734
3665
  time?: string;
2735
3666
  icon?: ReactNode;
2736
- status?: 'complete' | 'current' | 'upcoming';
3667
+ /**
3668
+ * Where this entry sits in the sequence. Accepts the catalog-wide `Progress` vocabulary
3669
+ * (`pending | active | complete | error`) as well as Timeline's own `current` / `upcoming`
3670
+ * — they are aliases of `active` / `pending`, so one status enum drives both `Timeline`
3671
+ * and `Steps` with no translation.
3672
+ */
3673
+ status?: ProgressInput;
2737
3674
  }
2738
3675
  interface TimelineProps extends HTMLAttributes<HTMLOListElement> {
2739
3676
  items: TimelineItem[];
3677
+ /**
3678
+ * Layout orientation of the component.
3679
+ *
3680
+ * @defaultValue `vertical`
3681
+ * @see the component manifest
3682
+ */
2740
3683
  orientation?: 'vertical' | 'horizontal';
2741
3684
  }
2742
3685
  declare function Timeline({
@@ -2746,7 +3689,20 @@ declare function Timeline({
2746
3689
  ...props
2747
3690
  }: TimelineProps): import("react").JSX.Element;
2748
3691
  interface ItemProps extends HTMLAttributes<HTMLDivElement> {
3692
+ /**
3693
+ * When true, renders the child element as the root via Slot, merging props (polymorphic
3694
+ * rendering).
3695
+ *
3696
+ * @defaultValue `false`
3697
+ * @see the component manifest
3698
+ */
2749
3699
  asChild?: boolean;
3700
+ /**
3701
+ * Selects the visual style variant.
3702
+ *
3703
+ * @defaultValue `default`
3704
+ * @see the component manifest
3705
+ */
2750
3706
  variant?: 'default' | 'muted';
2751
3707
  size?: 'sm' | 'md';
2752
3708
  }
@@ -2800,6 +3756,12 @@ interface CalendarProps {
2800
3756
  max?: Date;
2801
3757
  disabled?: (date: Date) => boolean;
2802
3758
  locale?: string;
3759
+ /**
3760
+ * Grid cell size
3761
+ *
3762
+ * @defaultValue `md`
3763
+ * @see the component manifest
3764
+ */
2803
3765
  size?: 'sm' | 'md' | 'lg';
2804
3766
  labels?: CalendarLabels;
2805
3767
  className?: string;
@@ -2819,7 +3781,12 @@ interface CalendarProps {
2819
3781
  month: number;
2820
3782
  year: number;
2821
3783
  }) => void;
2822
- /** Hide the prev/next header nav (parent drives navigation). */
3784
+ /**
3785
+ * Hides the prev/next nav so a parent can drive navigation
3786
+ *
3787
+ * @defaultValue `false`
3788
+ * @see the component manifest
3789
+ */
2823
3790
  hideNav?: boolean;
2824
3791
  }
2825
3792
  declare function Calendar({
@@ -2870,6 +3837,12 @@ interface DateRangePickerProps {
2870
3837
  presets?: DateRangePreset[];
2871
3838
  locale?: string;
2872
3839
  placeholder?: string;
3840
+ /**
3841
+ * Field/grid size
3842
+ *
3843
+ * @defaultValue `md`
3844
+ * @see the component manifest
3845
+ */
2873
3846
  size?: 'sm' | 'md' | 'lg';
2874
3847
  labels?: DateRangePickerLabels;
2875
3848
  className?: string;
@@ -2890,17 +3863,35 @@ declare function DateRangePicker({
2890
3863
  }: DateRangePickerProps): import("react").JSX.Element;
2891
3864
  interface ColorPickerLabels {
2892
3865
  hue?: string;
3866
+ /**
3867
+ * When true, enables alpha (opacity) selection.
3868
+ *
3869
+ * @defaultValue `true`
3870
+ * @see the component manifest
3871
+ */
2893
3872
  alpha?: string;
2894
3873
  colorArea?: string;
2895
3874
  eyedropper?: string;
2896
3875
  }
2897
3876
  interface ColorPickerProps {
2898
3877
  value?: string;
3878
+ /**
3879
+ * The initial value when uncontrolled.
3880
+ *
3881
+ * @defaultValue `#3b82f6`
3882
+ * @see the component manifest
3883
+ */
2899
3884
  defaultValue?: string;
2900
3885
  onValueChange?: (value: string) => void;
2901
3886
  presets?: string[];
2902
3887
  alpha?: boolean;
2903
3888
  label?: string;
3889
+ /**
3890
+ * When true, disables the control and removes it from the tab order.
3891
+ *
3892
+ * @defaultValue `false`
3893
+ * @see the component manifest
3894
+ */
2904
3895
  disabled?: boolean;
2905
3896
  size?: 'sm' | 'md' | 'lg';
2906
3897
  className?: string;
@@ -2927,8 +3918,20 @@ interface CarouselProps {
2927
3918
  children?: ReactNode;
2928
3919
  slides?: ReactNode[];
2929
3920
  index?: number;
3921
+ /**
3922
+ * The initial slide index when uncontrolled.
3923
+ *
3924
+ * @defaultValue `0`
3925
+ * @see the component manifest
3926
+ */
2930
3927
  defaultIndex?: number;
2931
3928
  onIndexChange?: (index: number) => void;
3929
+ /**
3930
+ * When true, navigation wraps around from end to start.
3931
+ *
3932
+ * @defaultValue `false`
3933
+ * @see the component manifest
3934
+ */
2932
3935
  loop?: boolean;
2933
3936
  className?: string;
2934
3937
  labels?: CarouselLabels;
@@ -2945,10 +3948,34 @@ declare function Carousel({
2945
3948
  }: CarouselProps): import("react").JSX.Element;
2946
3949
  interface ResizableProps {
2947
3950
  children: ReactNode;
3951
+ /**
3952
+ * Layout orientation of the component.
3953
+ *
3954
+ * @defaultValue `horizontal`
3955
+ * @see the component manifest
3956
+ */
2948
3957
  orientation?: 'horizontal' | 'vertical';
3958
+ /**
3959
+ * The initial split ratio when uncontrolled.
3960
+ *
3961
+ * @defaultValue `0.5`
3962
+ * @see the component manifest
3963
+ */
2949
3964
  defaultRatio?: number;
2950
3965
  ratio?: number;
3966
+ /**
3967
+ * Minimum allowed split ratio.
3968
+ *
3969
+ * @defaultValue `0.1`
3970
+ * @see the component manifest
3971
+ */
2951
3972
  minRatio?: number;
3973
+ /**
3974
+ * Maximum allowed split ratio.
3975
+ *
3976
+ * @defaultValue `0.9`
3977
+ * @see the component manifest
3978
+ */
2952
3979
  maxRatio?: number;
2953
3980
  onRatioChange?: (ratio: number) => void;
2954
3981
  className?: string;
@@ -2991,7 +4018,12 @@ interface DrawerProps {
2991
4018
  defaultOpen?: boolean;
2992
4019
  /** Called whenever the open state should change. */
2993
4020
  onOpenChange?: (open: boolean) => void;
2994
- /** Edge the panel is anchored to. Drives the slide direction. */
4021
+ /**
4022
+ * Edge the panel is anchored to. Drives the slide direction.
4023
+ *
4024
+ * @defaultValue `end`
4025
+ * @see the component manifest
4026
+ */
2995
4027
  side?: 'start' | 'end' | 'top' | 'bottom';
2996
4028
  /** Panel size along its cross axis (width for start/end, height for top/bottom). */
2997
4029
  size?: string;
@@ -3004,7 +4036,12 @@ interface DrawerProps {
3004
4036
  close?: string;
3005
4037
  };
3006
4038
  className?: string;
3007
- /** Allow dragging the header toward its edge to dismiss (opt-in; CSS translate, no animation library). */
4039
+ /**
4040
+ * Allow dragging the header toward its edge to dismiss (opt-in).
4041
+ *
4042
+ * @defaultValue `false`
4043
+ * @see the component manifest
4044
+ */
3008
4045
  swipeToDismiss?: boolean;
3009
4046
  }
3010
4047
  /**
@@ -3047,23 +4084,24 @@ interface NativeSelectProps extends Omit<SelectHTMLAttributes<HTMLSelectElement>
3047
4084
  * layers on a custom chevron and focus/invalid rings via CSS only. No JS interactivity, so no
3048
4085
  * signals: the browser owns all state. Distinct from the custom-rendered `Select` listbox.
3049
4086
  */
3050
- declare function NativeSelect({
3051
- options,
3052
- children,
3053
- size,
3054
- invalid,
3055
- disabled,
3056
- placeholder,
3057
- value,
3058
- defaultValue,
3059
- className,
3060
- ...props
3061
- }: NativeSelectProps): import("react").JSX.Element;
4087
+ /**
4088
+ * `forwardRef` so `ref` reaches the underlying `<select>` — and so it is TYPED. See
4089
+ * `textarea.tsx` for the full rationale (2026-07-28 report C10): the ref already worked at
4090
+ * runtime under React 19, but nothing declared it, so passing one was a `ts(2322)` and every
4091
+ * consumer had to cast. `forwardRef` rather than a bare `ref?: Ref<T>` prop keeps the
4092
+ * `react >= 18` peer floor honest, since ref-as-prop does not work there.
4093
+ */
4094
+ declare const NativeSelect: import("react").ForwardRefExoticComponent<NativeSelectProps & import("react").RefAttributes<HTMLSelectElement>>;
3062
4095
  type CodeLang = 'bash' | 'css' | 'js' | 'ts';
3063
4096
  interface CodeSnippetProps {
3064
4097
  /** The code to display (and copy). */
3065
4098
  code: string;
3066
- /** inline = a <code> span; single = one-line <pre>; multi = multi-line <pre>. */
4099
+ /**
4100
+ * inline = a <code> span; single = one-line <pre>; multi = multi-line <pre>.
4101
+ *
4102
+ * @defaultValue `single`
4103
+ * @see the component manifest
4104
+ */
3067
4105
  variant?: 'inline' | 'single' | 'multi';
3068
4106
  /**
3069
4107
  * Enables lightweight, dependency-free syntax highlighting for the block
@@ -3105,13 +4143,25 @@ declare function CodeSnippet({
3105
4143
  labels,
3106
4144
  className
3107
4145
  }: CodeSnippetProps): import("react").JSX.Element;
4146
+ /**
4147
+ * The catalog-wide progress vocabulary. `Timeline`'s `current` / `upcoming` are accepted as
4148
+ * aliases of `active` / `pending`, so one status enum drives both components — writing
4149
+ * `state: 'upcoming'` here used to be a type error with no hint that `pending` was the word.
4150
+ */
3108
4151
  type StepState = 'pending' | 'active' | 'complete' | 'error';
3109
4152
  interface Step {
3110
4153
  label: string;
3111
- state?: StepState;
4154
+ /** Accepts `StepState` plus Timeline's `current` / `upcoming` aliases. */
4155
+ state?: ProgressInput;
3112
4156
  }
3113
4157
  interface StepsProps {
3114
4158
  steps: Step[];
4159
+ /**
4160
+ * Index of the currently active step (0-based)
4161
+ *
4162
+ * @defaultValue `0`
4163
+ * @see the component manifest
4164
+ */
3115
4165
  activeStep?: number;
3116
4166
  orientation?: 'horizontal' | 'vertical';
3117
4167
  className?: string;
@@ -3134,7 +4184,12 @@ interface TileProps {
3134
4184
  defaultSelected?: boolean;
3135
4185
  /** Called with this tile's value whenever it is toggled on (or off for multi). */
3136
4186
  onSelect?: (value: string) => void;
3137
- /** Single = radio semantics (toggle on); multi = checkbox semantics (toggle on/off). */
4187
+ /**
4188
+ * Single = radio semantics (toggle on); multi = checkbox semantics (toggle on/off).
4189
+ *
4190
+ * @defaultValue `single`
4191
+ * @see the component manifest
4192
+ */
3138
4193
  selectable?: 'single' | 'multi';
3139
4194
  disabled?: boolean;
3140
4195
  /** Optional leading icon/visual. */
@@ -3164,6 +4219,12 @@ type IndicatorPlacement = 'top-start' | 'top-end' | 'bottom-start' | 'bottom-end
3164
4219
  interface IndicatorProps {
3165
4220
  children: React.ReactNode;
3166
4221
  overlay: React.ReactNode;
4222
+ /**
4223
+ * Placement relative to the trigger.
4224
+ *
4225
+ * @defaultValue `top-end`
4226
+ * @see the component manifest
4227
+ */
3167
4228
  placement?: IndicatorPlacement;
3168
4229
  className?: string;
3169
4230
  }
@@ -3176,6 +4237,12 @@ declare function Indicator({
3176
4237
  type JoinOrientation = 'horizontal' | 'vertical';
3177
4238
  interface JoinProps {
3178
4239
  children: React.ReactNode;
4240
+ /**
4241
+ * Layout orientation of the component.
4242
+ *
4243
+ * @defaultValue `horizontal`
4244
+ * @see the component manifest
4245
+ */
3179
4246
  orientation?: JoinOrientation;
3180
4247
  className?: string;
3181
4248
  }
@@ -3186,6 +4253,13 @@ declare function Join({
3186
4253
  }: JoinProps): import("react").JSX.Element;
3187
4254
  interface StackProps {
3188
4255
  children: React.ReactNode;
4256
+ /**
4257
+ * Pixel offset applied per overlapped layer in both axes. This is NOT a spacing `gap` —
4258
+ * for gap-based vertical/horizontal layout use `Flex`/`Grid` and their `gap` prop.
4259
+ *
4260
+ * @defaultValue `4`
4261
+ * @see the component manifest
4262
+ */
3189
4263
  offset?: number;
3190
4264
  className?: string;
3191
4265
  }
@@ -3194,7 +4268,17 @@ declare function Stack({
3194
4268
  offset,
3195
4269
  className
3196
4270
  }: StackProps): import("react").JSX.Element;
3197
- interface AppShellProps {
4271
+ /**
4272
+ * `AppShell` extends `HTMLAttributes<HTMLDivElement>`, like every other layout primitive,
4273
+ * so `className` **and `style`** pass through to its root element. That matters because the
4274
+ * shell's documented design tokens (`--cascivo-shell-aside-inline-size`,
4275
+ * `--cascivo-shell-panel-inline-size`, `--cascivo-shell-header-block-size`) have to be set
4276
+ * *somewhere*: set them here —
4277
+ * `<AppShell style={{ '--cascivo-shell-aside-inline-size': '15.5rem' }}>` — or on any
4278
+ * ancestor, since they inherit. Before this the props were a closed list with no `style`,
4279
+ * so the tokens had no documented application point and adopters set them on `#root`.
4280
+ */
4281
+ interface AppShellProps extends HTMLAttributes<HTMLDivElement> {
3198
4282
  /**
3199
4283
  * Top bar — typically a `<ShellHeader>`. If it is a React element, AppShell
3200
4284
  * binds its burger (`onMenuClick`/`menuExpanded`) to the nav open state so the
@@ -3227,6 +4311,11 @@ interface AppShellProps {
3227
4311
  * Rail vs full-hide reconcile cleanly: AppShell owns the full show/hide (this
3228
4312
  * `open` state); the SideNav you pass owns its own rail collapse
3229
4313
  * (`showCollapseToggle`). They compose on different axes and never fight.
4314
+ *
4315
+ * **Visual regression note:** the shell is `100dvh` with an internal scroll container (that
4316
+ * is what makes the header sticky and the nav full-height). The page body therefore never
4317
+ * grows, so a Playwright `fullPage: true` screenshot captures only the viewport. To capture
4318
+ * the whole page, screenshot the scroll container element or set a tall viewport.
3230
4319
  */
3231
4320
  declare function AppShell({
3232
4321
  header,
@@ -3236,11 +4325,18 @@ declare function AppShell({
3236
4325
  open,
3237
4326
  defaultOpen,
3238
4327
  onOpenChange,
3239
- className
4328
+ className,
4329
+ ...props
3240
4330
  }: AppShellProps): import("react").JSX.Element;
3241
4331
  type ChatBubbleSide = 'start' | 'end';
3242
4332
  interface ChatBubbleProps {
3243
4333
  children: React.ReactNode;
4334
+ /**
4335
+ * Edge the component is anchored to.
4336
+ *
4337
+ * @defaultValue `start`
4338
+ * @see the component manifest
4339
+ */
3244
4340
  side?: ChatBubbleSide;
3245
4341
  avatar?: React.ReactNode;
3246
4342
  name?: string;
@@ -3260,6 +4356,12 @@ type RadialProgressVariant = 'primary' | 'info' | 'success' | 'warning' | 'error
3260
4356
  interface RadialProgressProps {
3261
4357
  value: number;
3262
4358
  size?: RadialProgressSize;
4359
+ /**
4360
+ * Selects the visual style variant.
4361
+ *
4362
+ * @defaultValue `primary`
4363
+ * @see the component manifest
4364
+ */
3263
4365
  variant?: RadialProgressVariant;
3264
4366
  children?: React.ReactNode;
3265
4367
  'aria-label'?: string;
@@ -3277,6 +4379,12 @@ type SwapMode = 'rotate' | 'flip';
3277
4379
  interface SwapProps {
3278
4380
  on: React.ReactNode;
3279
4381
  off: React.ReactNode;
4382
+ /**
4383
+ * Whether the control is checked (controlled).
4384
+ *
4385
+ * @defaultValue `false`
4386
+ * @see the component manifest
4387
+ */
3280
4388
  checked?: boolean;
3281
4389
  /** Called with the new checked state when the swap is toggled. */
3282
4390
  onValueChange?: (checked: boolean) => void;
@@ -3309,9 +4417,19 @@ interface SwipeAction {
3309
4417
  interface SwipeItemProps {
3310
4418
  /** The row content. */
3311
4419
  children: ReactNode;
3312
- /** Actions revealed by dragging the row toward its end edge (shown on the start edge). */
4420
+ /**
4421
+ * Actions revealed by dragging toward the end edge (shown on the start edge)
4422
+ *
4423
+ * @defaultValue `[]`
4424
+ * @see the component manifest
4425
+ */
3313
4426
  leadingActions?: SwipeAction[];
3314
- /** Actions revealed by dragging the row toward its start edge (shown on the end edge). */
4427
+ /**
4428
+ * Actions revealed by dragging toward the start edge (shown on the end edge)
4429
+ *
4430
+ * @defaultValue `[]`
4431
+ * @see the component manifest
4432
+ */
3315
4433
  trailingActions?: SwipeAction[];
3316
4434
  className?: string;
3317
4435
  }
@@ -3333,8 +4451,21 @@ type Responsive<T> = T | Partial<Record<'base' | 'sm' | 'md' | 'lg' | 'xl', T>>;
3333
4451
  /** Grid track alignment keyword (maps directly to `align-items` / `justify-items`). */
3334
4452
  type GridAlign = 'start' | 'center' | 'end' | 'stretch';
3335
4453
  interface GridProps extends HTMLAttributes<HTMLDivElement> {
3336
- /** Column count. A number, or `{ base, sm, md, lg, xl }` for responsive columns. */
4454
+ /**
4455
+ * Column count — a number, or a per-breakpoint object (base/sm/md/lg/xl) for responsive
4456
+ * columns
4457
+ *
4458
+ * @defaultValue `12`
4459
+ * @see the component manifest
4460
+ */
3337
4461
  cols?: Responsive<number>;
4462
+ /**
4463
+ * Spacing token step. Maps to the --cascivo-space-* scale, which intentionally skips
4464
+ * 7/9/11 — use 6 or 8.
4465
+ *
4466
+ * @defaultValue `4`
4467
+ * @see the component manifest
4468
+ */
3338
4469
  gap?: SpaceStep;
3339
4470
  /** Block-axis alignment of items within their cells (`align-items`). Defaults to `stretch`. */
3340
4471
  align?: GridAlign;
@@ -3362,10 +4493,30 @@ declare function GridItem({
3362
4493
  ...props
3363
4494
  }: GridItemProps): import("react").JSX.Element;
3364
4495
  interface FlexProps extends HTMLAttributes<HTMLDivElement> {
4496
+ /**
4497
+ * Flex direction. ⚠ Defaults to `vertical`, unlike CSS `flex-direction` (and unlike
4498
+ * Chakra/MUI/Radix `Flex`, which default to a row) — `<Flex justify="between">` alone
4499
+ * produces a centered vertical stack.
4500
+ *
4501
+ * @defaultValue `vertical`
4502
+ * @see the component manifest
4503
+ */
3365
4504
  direction?: 'vertical' | 'horizontal';
4505
+ /**
4506
+ * Spacing token step
4507
+ *
4508
+ * @defaultValue `4`
4509
+ * @see the component manifest
4510
+ */
3366
4511
  gap?: SpaceStep;
3367
4512
  align?: 'start' | 'center' | 'end' | 'stretch';
3368
4513
  justify?: 'start' | 'center' | 'end' | 'between';
4514
+ /**
4515
+ * Allow wrapping
4516
+ *
4517
+ * @defaultValue `false`
4518
+ * @see the component manifest
4519
+ */
3369
4520
  wrap?: boolean;
3370
4521
  }
3371
4522
  declare function Flex({
@@ -3379,7 +4530,19 @@ declare function Flex({
3379
4530
  ...props
3380
4531
  }: FlexProps): import("react").JSX.Element;
3381
4532
  interface ColumnsProps extends HTMLAttributes<HTMLDivElement> {
4533
+ /**
4534
+ * Number of equal columns
4535
+ *
4536
+ * @defaultValue `2`
4537
+ * @see the component manifest
4538
+ */
3382
4539
  count?: 2 | 3 | 4;
4540
+ /**
4541
+ * Spacing token step
4542
+ *
4543
+ * @defaultValue `4`
4544
+ * @see the component manifest
4545
+ */
3383
4546
  gap?: SpaceStep;
3384
4547
  }
3385
4548
  declare function Columns({
@@ -3391,6 +4554,12 @@ declare function Columns({
3391
4554
  ...props
3392
4555
  }: ColumnsProps): import("react").JSX.Element;
3393
4556
  interface CenterProps extends HTMLAttributes<HTMLDivElement> {
4557
+ /**
4558
+ * CSS max-width value
4559
+ *
4560
+ * @defaultValue `48rem`
4561
+ * @see the component manifest
4562
+ */
3394
4563
  maxWidth?: string;
3395
4564
  }
3396
4565
  declare function Center({
@@ -3400,6 +4569,12 @@ declare function Center({
3400
4569
  ...props
3401
4570
  }: CenterProps): import("react").JSX.Element;
3402
4571
  interface SpacerProps extends HTMLAttributes<HTMLDivElement> {
4572
+ /**
4573
+ * Spacing token step
4574
+ *
4575
+ * @defaultValue `4`
4576
+ * @see the component manifest
4577
+ */
3403
4578
  size?: SpaceStep;
3404
4579
  }
3405
4580
  declare function Spacer({
@@ -3409,8 +4584,20 @@ declare function Spacer({
3409
4584
  ...props
3410
4585
  }: SpacerProps): import("react").JSX.Element;
3411
4586
  interface AutoGridProps extends HTMLAttributes<HTMLDivElement> {
3412
- /** Minimum track size before items wrap to fewer columns. */
4587
+ /**
4588
+ * Minimum track width before items wrap to fewer columns
4589
+ *
4590
+ * @defaultValue `"16rem"`
4591
+ * @see the component manifest
4592
+ */
3413
4593
  min?: string;
4594
+ /**
4595
+ * Spacing token step. Maps to the --cascivo-space-* scale, which intentionally skips
4596
+ * 7/9/11 — use 6 or 8.
4597
+ *
4598
+ * @defaultValue `4`
4599
+ * @see the component manifest
4600
+ */
3414
4601
  gap?: SpaceStep;
3415
4602
  className?: string | undefined;
3416
4603
  }
@@ -3421,11 +4608,48 @@ declare function AutoGrid({
3421
4608
  style,
3422
4609
  ...props
3423
4610
  }: AutoGridProps): import("react").JSX.Element;
4611
+ interface PageHeaderProps {
4612
+ title: string;
4613
+ description?: string;
4614
+ breadcrumb?: ReactNode;
4615
+ actions?: ReactNode;
4616
+ className?: string;
4617
+ }
4618
+ declare function PageHeader({
4619
+ title,
4620
+ description,
4621
+ breadcrumb,
4622
+ actions,
4623
+ className
4624
+ }: PageHeaderProps): import("react").JSX.Element;
3424
4625
  /**
3425
4626
  * Set the active theme imperatively, from anywhere. Persists the choice and
3426
4627
  * drives the `data-theme` attribute through the mounted {@link ThemeProvider}.
4628
+ *
4629
+ * Requires a mounted {@link ThemeProvider} — this writes the signal, the provider writes
4630
+ * the DOM. Without one, nothing restyles (dev builds warn). To write the attribute
4631
+ * directly, with no provider and no React, use {@link applyTheme}.
3427
4632
  */
3428
4633
  declare function setTheme(next: string): void;
4634
+ /**
4635
+ * Write a theme onto an element directly, with no provider and no React.
4636
+ *
4637
+ * The escape hatch for imperative setups: a theme toggle in a non-React shell, a
4638
+ * pre-hydration inline script, a Storybook decorator, an e2e test. Also updates the theme
4639
+ * signal, so a React tree reading {@link useTheme} stays in sync.
4640
+ *
4641
+ * `setTheme` deliberately does **not** do this itself: it is SSR-callable, and
4642
+ * `ThemeProvider` can scope a theme to any subtree via its `target` ref. A direct document
4643
+ * write inside `setTheme` would break scoped theming and touch `document` on the server.
4644
+ *
4645
+ * ```ts
4646
+ * applyTheme('midnight') // <html data-theme="midnight">
4647
+ * applyTheme('warm', panelRef.current) // scope to a subtree
4648
+ * ```
4649
+ *
4650
+ * No-op on the server (no `document`).
4651
+ */
4652
+ declare function applyTheme(next: string, target?: HTMLElement | null): void;
3429
4653
  /**
3430
4654
  * Read and set the active theme. Returns the current theme **name** (a plain
3431
4655
  * string) and a setter — the component re-renders when the theme changes with no
@@ -3537,4 +4761,4 @@ declare function themePreloadScript(options?: {
3537
4761
  attribute?: string;
3538
4762
  defaultTheme?: string;
3539
4763
  }): string;
3540
- export { Accordion, AccordionContent, AccordionItem, AccordionItemProps, AccordionProps, AccordionTrigger, ActionSheet, ActionSheetAction, ActionSheetProps, Alert, AlertDialog, AlertDialogLabels, AlertDialogProps, AlertProps, AppShell, AppShellProps, AspectRatio, AspectRatioProps, AutoGrid, AutoGridProps, Avatar, AvatarGroup, AvatarGroupLabels, AvatarGroupProps, AvatarProps, Badge, BadgeProps, Blockquote, BlockquoteProps, BottomSheet, BottomSheetProps, Breadcrumb, BreadcrumbItem, BreadcrumbProps, Button, ButtonGroup, ButtonGroupProps, ButtonProps, Calendar, CalendarLabels, CalendarProps, Card, CardContent, CardContentProps, CardFooter, CardFooterProps, CardHeader, CardHeaderProps, CardProps, CardTitle, CardTitleProps, Carousel, CarouselLabels, CarouselProps, Center, CenterProps, ChatBubble, ChatBubbleProps, ChatBubbleSide, Checkbox, CheckboxCard, CheckboxCardProps, CheckboxProps, Code, type CodeLang, CodeProps, CodeSnippet, CodeSnippetProps, Collapsible, CollapsibleProps, ColorPicker, ColorPickerLabels, ColorPickerProps, Column, Columns, ColumnsProps, Combobox, ComboboxLabels, ComboboxOption, ComboboxProps, CommandAction, CommandGroup, CommandItem, CommandMenu, CommandMenuProps, CommandPage, CommandScope, CommandStatus, Comparison, ComparisonProps, ContainedList, ContainedListItem, ContainedListItemProps, ContainedListProps, ContextMenu, ContextMenuItem, ContextMenuItemProps, ContextMenuProps, CopyButton, CopyButtonProps, DataList, DataListItem, DataListProps, DataTable, DataTableLabels, DataTableProps, DatePicker, DatePickerLabels, DatePickerProps, DateRange, DateRangePicker, DateRangePickerLabels, DateRangePickerProps, DateRangePreset, DismissableLayer, type DismissableLayerProps, Dock, DockItem, DockProps, Drawer, DrawerProps, Dropdown, DropdownItem, DropdownProps, Editable, EditableProps, EmptyState, EmptyStateProps, ErrorBoundary, Fab, FabAction, FabProps, Field, FieldProps, FileUploader, FileUploaderLabels, FileUploaderProps, Filter, FilterOption, FilterProps, FilterVariant, Flex, FlexProps, FocusScope, Form, FormConfig, FormProps, FormStore, FuzzyMatch, Grid, GridAlign, GridItem, GridItemProps, GridProps, Header, HeaderLabels, HeaderLink, HeaderPanel, HeaderPanelLabels, HeaderPanelProps, HeaderProps, Heading, HeadingLevel, HeadingProps, HeadingSize, HoverCard, HoverCardContent, HoverCardContentProps, HoverCardProps, HoverCardTrigger, HoverCardTriggerProps, IconButton, IconButtonProps, Image, ImageProps, Indicator, IndicatorPlacement, IndicatorProps, InlineLoading, InlineLoadingProps, InlineLoadingStatus, Input, InputGroup, InputGroupAddon, type InputGroupAddonProps, type InputGroupProps, InputProps, Item, ItemActions, ItemActionsProps, ItemContent, ItemContentProps, ItemDescription, ItemDescriptionProps, ItemMedia, ItemMediaProps, ItemProps, ItemTitle, ItemTitleProps, Join, JoinOrientation, JoinProps, Kbd, KbdProps, Label, LabelProps, Link, type LinkComponent, type LinkComponentProps, LinkProps, List, ListItem, ListItemProps, ListProps, LogLevel, LogLine, LogViewer, LogViewerLabels, LogViewerProps, type Machine, type MachineConfig, Menu, MenuButton, MenuButtonItem, MenuButtonProps, MenuItem, MenuItemProps, MenuProps, MenuSeparator, MenuTrigger, MenuTriggerProps, Menubar, MenubarItem, MenubarMenu, MenubarProps, Modal, ModalProps, MultiSelect, MultiSelectLabels, MultiSelectOption, MultiSelectProps, NativeSelect, NativeSelectOption, NativeSelectProps, NavigationMenu, NavigationMenuItem, NavigationMenuProps, Notification, NotificationProps, NotificationVariant, NumberInput, NumberInputProps, OtpInput, OtpInputProps, OverflowMenu, OverflowMenuItem, OverflowMenuProps, Pagination, PaginationLabels, PaginationProps, PasswordInput, PasswordInputLabels, PasswordInputProps, Popover, PopoverContent, PopoverContentProps, PopoverProps, PopoverTrigger, PopoverTriggerProps, Portal, Presence, Progress, ProgressBar, ProgressBarProps, ProgressCircle, ProgressCircleProps, ProgressIndicator, ProgressIndicatorProps, ProgressProps, ProgressSize, ProgressStep, ProgressVariant, Prose, ProseProps, PullToRefresh, PullToRefreshProps, QrCode, QrCodeProps, RadialProgress, RadialProgressProps, RadialProgressSize, RadialProgressVariant, Radio, RadioCard, RadioCardGroup, RadioCardGroupProps, RadioCardProps, RadioGroup, RadioGroupProps, RadioProps, RatingGroup, RatingGroupLabels, RatingGroupProps, RelativeTime, RelativeTimeProps, Resizable, ResizableProps, Responsive, ScrollArea, ScrollAreaProps, Search, SearchProps, SegmentedControl, SegmentedControlOption, SegmentedControlProps, Select, SelectOption, SelectProps, Separator, SeparatorProps, Sheet, SheetProps, ShellHeader, ShellHeaderAction, ShellHeaderBrand, ShellHeaderLabels, ShellHeaderNavItem, ShellHeaderNavLink, ShellHeaderNavMenu, ShellHeaderNavMenuItem, ShellHeaderProps, SideNav, SideNavGroup, SideNavItem, SideNavLinkProps, SideNavLinkSubItem, SideNavProps, SideNavSubItem, SideNavTone, Skeleton, SkeletonProps, SkipNavLink, SkipNavLinkProps, SkipNavTarget, SkipNavTargetProps, Slider, SliderProps, Slot, type SlotProps, SortDirection, SortState, Spacer, SpacerProps, Spinner, SpinnerProps, Stack, StackProps, type StandardSchemaV1, Stat, StatProps, Status, StatusProps, Step, StepState, Steps, StepsProps, StructuredList, StructuredListItem, StructuredListProps, SuspenseBoundary, Swap, SwapMode, SwapProps, SwipeAction, SwipeItem, SwipeItemProps, Switcher, SwitcherEntry, SwitcherLink, SwitcherProps, Tabs, TabsContent, TabsContentProps, TabsList, TabsProps, TabsTrigger, TabsTriggerProps, Tag, TagProps, TagsInput, TagsInputProps, Text, TextProps, Textarea, TextareaProps, ThemeProvider, type ThemeProviderProps, Tile, TileProps, TimePicker, TimePickerProps, Timeline, TimelineItem, TimelineProps, ToastOptions, ToastProvider, ToastVariant, Toc, TocItem, TocProps, Toggle, ToggleGroup, ToggleGroupItem, ToggleGroupProps, ToggleProps, Toggletip, ToggletipPlacement, ToggletipProps, Tooltip, TooltipProps, TreeNode, TreeView, TreeViewProps, UploaderFile, type UseClipboardOptions, type UseClipboardReturn, type UseControllableSignalOptions, type UseDisclosureOptions, type UseDisclosureReturn, type UsePopoverOptions, type UsePopoverReturn, type UseTocFromRegionOptions, User, UserProps, VisuallyHidden, VisuallyHiddenProps, batch, cn, composeRefs, computePosition, computed, createForm, createMachine, createScope, createStreamBuffer, dismissAllToasts, effect, fuzzyMatch, fuzzyScore, getLinkComponent, mergeProps, setLinkComponent, setTheme, signal, themePreloadScript, themeSignal, treeViewMessages, useAnchorPosition, useClipboard, useComputed, useControllableSignal, useDisclosure, useEffectPropSignal, useForm, useId, useMachine, useMediaQuery, usePopover, useRovingFocus, useScope, useScrollLock, useSignal, useSignalEffect, useSignals, useStreamBuffer, useTheme, useToast, useTocFromRegion, useTypeahead };
4764
+ export { Accordion, AccordionContent, AccordionItem, AccordionItemProps, AccordionProps, AccordionTrigger, ActionSheet, ActionSheetAction, ActionSheetProps, Alert, AlertDialog, AlertDialogLabels, AlertDialogProps, AlertProps, AppShell, AppShellProps, AspectRatio, AspectRatioProps, AutoGrid, AutoGridProps, Avatar, AvatarGroup, AvatarGroupLabels, AvatarGroupProps, AvatarProps, Badge, BadgeProps, Blockquote, BlockquoteProps, BottomSheet, BottomSheetProps, Breadcrumb, BreadcrumbItem, BreadcrumbProps, Button, ButtonGroup, ButtonGroupProps, ButtonProps, Calendar, CalendarLabels, CalendarProps, Card, CardContent, CardContentProps, CardFooter, CardFooterProps, CardHeader, CardHeaderProps, CardProps, CardTitle, CardTitleProps, Carousel, CarouselLabels, CarouselProps, Center, CenterProps, ChatBubble, ChatBubbleProps, ChatBubbleSide, Checkbox, CheckboxCard, CheckboxCardProps, CheckboxProps, Code, type CodeLang, CodeProps, CodeSnippet, CodeSnippetProps, Collapsible, CollapsibleProps, ColorPicker, ColorPickerLabels, ColorPickerProps, Column, Columns, ColumnsProps, Combobox, ComboboxLabels, ComboboxOption, ComboboxProps, CommandAction, CommandGroup, CommandItem, CommandMenu, CommandMenuProps, CommandPage, CommandScope, CommandStatus, Comparison, ComparisonProps, ContainedList, ContainedListItem, ContainedListItemProps, ContainedListProps, ContextMenu, ContextMenuItem, ContextMenuItemProps, ContextMenuProps, CopyButton, CopyButtonProps, DataList, DataListItem, DataListProps, DataTable, DataTableLabels, DataTableProps, DatePicker, DatePickerLabels, DatePickerProps, DateRange, DateRangePicker, DateRangePickerLabels, DateRangePickerProps, DateRangePreset, DismissableLayer, type DismissableLayerProps, Dock, DockItem, DockProps, Drawer, DrawerProps, Dropdown, DropdownItem, DropdownProps, Editable, EditableProps, EmptyState, EmptyStateProps, ErrorBoundary, Fab, FabAction, FabProps, Field, FieldProps, FileUploader, FileUploaderLabels, FileUploaderProps, Filter, FilterOption, FilterProps, FilterVariant, Flex, FlexProps, FocusScope, Form, FormConfig, FormProps, FormStore, FuzzyMatch, Grid, GridAlign, GridItem, GridItemProps, GridProps, Header, HeaderLabels, HeaderLink, HeaderPanel, HeaderPanelLabels, HeaderPanelProps, HeaderProps, Heading, HeadingLevel, HeadingProps, HeadingSize, HoverCard, HoverCardContent, HoverCardContentProps, HoverCardProps, HoverCardTrigger, HoverCardTriggerProps, IconButton, IconButtonProps, Image, ImageProps, Indicator, IndicatorPlacement, IndicatorProps, InlineLoading, InlineLoadingProps, InlineLoadingStatus, Input, InputGroup, InputGroupAddon, type InputGroupAddonProps, type InputGroupProps, InputProps, Item, ItemActions, ItemActionsProps, ItemContent, ItemContentProps, ItemDescription, ItemDescriptionProps, ItemMedia, ItemMediaProps, ItemProps, ItemTitle, ItemTitleProps, Join, JoinOrientation, JoinProps, Kbd, KbdProps, Label, LabelProps, Link, type LinkComponent, type LinkComponentProps, LinkProps, List, ListItem, ListItemProps, ListProps, LogLevel, LogLine, LogViewer, LogViewerLabels, LogViewerProps, type Machine, type MachineConfig, Menu, MenuButton, MenuButtonItem, MenuButtonProps, MenuItem, MenuItemProps, MenuProps, MenuSeparator, MenuTrigger, MenuTriggerProps, Menubar, MenubarItem, MenubarMenu, MenubarProps, Modal, ModalProps, MultiSelect, MultiSelectLabels, MultiSelectOption, MultiSelectProps, NativeSelect, NativeSelectOption, NativeSelectProps, NavigationMenu, NavigationMenuItem, NavigationMenuProps, Notification, NotificationProps, NotificationVariant, NumberInput, NumberInputProps, OtpInput, OtpInputProps, OverflowMenu, OverflowMenuItem, OverflowMenuProps, PageHeader, PageHeaderProps, Pagination, PaginationLabels, PaginationProps, PasswordInput, PasswordInputLabels, PasswordInputProps, Popover, PopoverContent, PopoverContentProps, PopoverProps, PopoverTrigger, PopoverTriggerProps, Portal, Presence, Progress, ProgressBar, ProgressBarProps, ProgressCircle, ProgressCircleProps, ProgressIndicator, ProgressIndicatorProps, ProgressProps, ProgressSize, ProgressStep, ProgressVariant, Prose, ProseProps, PullToRefresh, PullToRefreshProps, QrCode, QrCodeProps, RadialProgress, RadialProgressProps, RadialProgressSize, RadialProgressVariant, Radio, RadioCard, RadioCardGroup, RadioCardGroupProps, RadioCardProps, RadioGroup, RadioGroupProps, RadioProps, RatingGroup, RatingGroupLabels, RatingGroupProps, RelativeTime, RelativeTimeProps, Resizable, ResizableProps, Responsive, ScrollArea, ScrollAreaProps, Search, SearchProps, SegmentedControl, SegmentedControlOption, SegmentedControlProps, Select, SelectOption, SelectProps, Separator, SeparatorProps, Sheet, SheetProps, ShellHeader, ShellHeaderAction, ShellHeaderBrand, ShellHeaderLabels, ShellHeaderNavItem, ShellHeaderNavLink, ShellHeaderNavMenu, ShellHeaderNavMenuItem, ShellHeaderProps, SideNav, SideNavGroup, SideNavItem, SideNavLinkProps, SideNavLinkSubItem, SideNavProps, SideNavSubItem, SideNavTone, Skeleton, SkeletonProps, SkipNavLink, SkipNavLinkProps, SkipNavTarget, SkipNavTargetProps, Slider, SliderProps, Slot, type SlotProps, SortDirection, SortState, Spacer, SpacerProps, Spinner, SpinnerProps, Stack, StackProps, type StandardSchemaV1, Stat, StatProps, Status, StatusProps, Step, StepState, Steps, StepsProps, StructuredList, StructuredListItem, StructuredListProps, SuspenseBoundary, Swap, SwapMode, SwapProps, SwipeAction, SwipeItem, SwipeItemProps, Switcher, SwitcherEntry, SwitcherLink, SwitcherProps, Tabs, TabsContent, TabsContentProps, TabsList, TabsProps, TabsTrigger, TabsTriggerProps, Tag, TagProps, TagsInput, TagsInputProps, Text, TextProps, Textarea, TextareaProps, ThemeProvider, type ThemeProviderProps, Tile, TileProps, TimePicker, TimePickerProps, Timeline, TimelineItem, TimelineProps, ToastOptions, ToastProvider, ToastVariant, Toc, TocItem, TocProps, Toggle, ToggleGroup, ToggleGroupItem, ToggleGroupProps, ToggleProps, Toggletip, ToggletipPlacement, ToggletipProps, Tooltip, TooltipProps, TreeNode, TreeView, TreeViewProps, UploaderFile, type UseClipboardOptions, type UseClipboardReturn, type UseControllableSignalOptions, type UseDisclosureOptions, type UseDisclosureReturn, type UsePopoverOptions, type UsePopoverReturn, type UseTocFromRegionOptions, User, UserProps, VisuallyHidden, VisuallyHiddenProps, applyTheme, batch, cn, composeRefs, computePosition, computed, createForm, createMachine, createScope, createStreamBuffer, dismissAllToasts, effect, fuzzyMatch, fuzzyScore, getLinkComponent, mergeProps, setLinkComponent, setTheme, signal, themePreloadScript, themeSignal, treeViewMessages, useAnchorPosition, useClipboard, useComputed, useControllableSignal, useDisclosure, useEffectPropSignal, useForm, useId, useMachine, useMediaQuery, usePopover, useRovingFocus, useScope, useScrollLock, useSignal, useSignalEffect, useSignals, useStreamBuffer, useTheme, useToast, useTocFromRegion, useTypeahead };