@cascivo/react 0.11.1 → 0.13.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (124) hide show
  1. package/README.md +1 -1
  2. package/dist/alert-dialog/alert-dialog.js +2 -4
  3. package/dist/app-shell/app-shell.js +24 -23
  4. package/dist/badge/badge.js +17 -10
  5. package/dist/button/button.css +1 -1
  6. package/dist/button/button.module.js +1 -1
  7. package/dist/card/card.css +1 -1
  8. package/dist/card/card.js +21 -11
  9. package/dist/card/card.module.js +8 -5
  10. package/dist/checkbox/checkbox.js +2 -2
  11. package/dist/combobox/combobox.css +1 -1
  12. package/dist/combobox/combobox.module.js +15 -15
  13. package/dist/command-menu/command-menu.js +67 -71
  14. package/dist/data-table/data-table.css +1 -1
  15. package/dist/data-table/data-table.js +7 -1
  16. package/dist/data-table/data-table.module.js +29 -29
  17. package/dist/date-picker/date-picker.css +1 -1
  18. package/dist/date-picker/date-picker.module.js +19 -19
  19. package/dist/dropdown/dropdown.js +48 -50
  20. package/dist/file-uploader/file-uploader.css +1 -1
  21. package/dist/file-uploader/file-uploader.module.js +14 -14
  22. package/dist/filter/filter.js +10 -9
  23. package/dist/header-panel/header-panel.js +2 -4
  24. package/dist/icon-button/icon-button.css +1 -1
  25. package/dist/icon-button/icon-button.js +10 -10
  26. package/dist/icon-button/icon-button.module.js +1 -1
  27. package/dist/index.d.ts +1300 -69
  28. package/dist/input/input.css +1 -1
  29. package/dist/input/input.module.js +5 -5
  30. package/dist/item/item.css +1 -1
  31. package/dist/item/item.module.js +6 -6
  32. package/dist/layouts/src/page-header/page-header.css +1 -0
  33. package/dist/layouts/src/page-header/page-header.js +33 -0
  34. package/dist/layouts/src/page-header/page-header.module.js +13 -0
  35. package/dist/link/link.js +12 -12
  36. package/dist/modal/modal.js +4 -4
  37. package/dist/multi-select/multi-select.css +1 -1
  38. package/dist/multi-select/multi-select.module.js +11 -11
  39. package/dist/node/alert-dialog/alert-dialog.js +2 -4
  40. package/dist/node/app-shell/app-shell.js +24 -23
  41. package/dist/node/badge/badge.js +17 -10
  42. package/dist/node/button/button.module.js +1 -1
  43. package/dist/node/card/card.js +21 -11
  44. package/dist/node/card/card.module.js +8 -5
  45. package/dist/node/checkbox/checkbox.js +2 -2
  46. package/dist/node/combobox/combobox.module.js +15 -15
  47. package/dist/node/command-menu/command-menu.js +67 -71
  48. package/dist/node/data-table/data-table.js +7 -1
  49. package/dist/node/data-table/data-table.module.js +29 -29
  50. package/dist/node/date-picker/date-picker.module.js +19 -19
  51. package/dist/node/dropdown/dropdown.js +48 -50
  52. package/dist/node/file-uploader/file-uploader.module.js +14 -14
  53. package/dist/node/filter/filter.js +10 -9
  54. package/dist/node/header-panel/header-panel.js +2 -4
  55. package/dist/node/icon-button/icon-button.js +10 -10
  56. package/dist/node/icon-button/icon-button.module.js +1 -1
  57. package/dist/node/input/input.module.js +5 -5
  58. package/dist/node/item/item.module.js +6 -6
  59. package/dist/node/layouts/src/page-header/page-header.js +33 -0
  60. package/dist/node/layouts/src/page-header/page-header.module.js +12 -0
  61. package/dist/node/link/link.js +12 -12
  62. package/dist/node/modal/modal.js +4 -4
  63. package/dist/node/multi-select/multi-select.module.js +11 -11
  64. package/dist/node/notification/notification.js +50 -44
  65. package/dist/node/notification/notification.module.js +7 -7
  66. package/dist/node/number-input/number-input.module.js +8 -8
  67. package/dist/node/otp-input/otp-input.module.js +2 -2
  68. package/dist/node/overflow-menu/overflow-menu.js +18 -13
  69. package/dist/node/password-input/password-input.module.js +7 -7
  70. package/dist/node/popover/use-popover.js +9 -9
  71. package/dist/node/progress/progress.js +3 -2
  72. package/dist/node/react/src/index.js +63 -62
  73. package/dist/node/search/search.js +19 -22
  74. package/dist/node/search/search.module.js +5 -5
  75. package/dist/node/sheet/sheet.js +2 -4
  76. package/dist/node/stat/stat.js +6 -5
  77. package/dist/node/stat/stat.module.js +7 -7
  78. package/dist/node/status/status.js +18 -11
  79. package/dist/node/steps/steps.js +23 -23
  80. package/dist/node/structured-list/structured-list.js +14 -13
  81. package/dist/node/tag/tag.js +22 -15
  82. package/dist/node/tags-input/tags-input.module.js +4 -4
  83. package/dist/node/tile/tile.module.js +3 -3
  84. package/dist/node/time-picker/time-picker.module.js +5 -5
  85. package/dist/node/timeline/timeline.js +22 -16
  86. package/dist/node/visually-hidden/visually-hidden.js +2 -13
  87. package/dist/notification/notification.css +1 -1
  88. package/dist/notification/notification.js +50 -44
  89. package/dist/notification/notification.module.js +7 -7
  90. package/dist/number-input/number-input.css +1 -1
  91. package/dist/number-input/number-input.module.js +8 -8
  92. package/dist/otp-input/otp-input.css +1 -1
  93. package/dist/otp-input/otp-input.module.js +2 -2
  94. package/dist/overflow-menu/overflow-menu.js +18 -13
  95. package/dist/password-input/password-input.css +1 -1
  96. package/dist/password-input/password-input.module.js +7 -7
  97. package/dist/popover/use-popover.js +9 -9
  98. package/dist/progress/progress.js +3 -2
  99. package/dist/react/src/index.js +63 -62
  100. package/dist/search/search.css +1 -1
  101. package/dist/search/search.js +19 -22
  102. package/dist/search/search.module.js +5 -5
  103. package/dist/sheet/sheet.js +2 -4
  104. package/dist/stat/stat.css +1 -1
  105. package/dist/stat/stat.js +6 -5
  106. package/dist/stat/stat.module.js +7 -7
  107. package/dist/status/status.js +18 -11
  108. package/dist/steps/steps.js +23 -23
  109. package/dist/structured-list/structured-list.js +14 -13
  110. package/dist/styles.css +33 -21
  111. package/dist/tag/tag.js +22 -15
  112. package/dist/tags-input/tags-input.css +1 -1
  113. package/dist/tags-input/tags-input.module.js +4 -4
  114. package/dist/tile/tile.css +1 -1
  115. package/dist/tile/tile.module.js +3 -3
  116. package/dist/time-picker/time-picker.css +1 -1
  117. package/dist/time-picker/time-picker.module.js +5 -5
  118. package/dist/timeline/timeline.js +22 -16
  119. package/dist/visually-hidden/visually-hidden.js +2 -13
  120. package/package.json +4 -4
  121. package/readme.body.md +1 -1
  122. package/dist/node/visually-hidden/visually-hidden.module.js +0 -5
  123. package/dist/visually-hidden/visually-hidden.css +0 -1
  124. package/dist/visually-hidden/visually-hidden.module.js +0 -6
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 { ErrorBoundary, FocusScope, LinkComponent, LinkComponentProps, Portal, RovingOrientation, Signal, SpaceStep, SuspenseBoundary, getLinkComponent, setLinkComponent } 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
@@ -63,7 +75,19 @@ declare function Input({
63
75
  ...props
64
76
  }: InputProps): import("react").JSX.Element;
65
77
  interface CardProps extends HTMLAttributes<HTMLDivElement> {
78
+ /**
79
+ * Selects the visual style variant.
80
+ *
81
+ * @defaultValue `default`
82
+ * @see the component manifest
83
+ */
66
84
  variant?: 'default' | 'outlined' | 'elevated';
85
+ /**
86
+ * Inner padding of the component.
87
+ *
88
+ * @defaultValue `md`
89
+ * @see the component manifest
90
+ */
67
91
  padding?: 'none' | 'sm' | 'md' | 'lg';
68
92
  }
69
93
  declare function Card({
@@ -73,8 +97,20 @@ declare function Card({
73
97
  children,
74
98
  ...props
75
99
  }: CardProps): import("react").JSX.Element;
76
- interface CardHeaderProps extends HTMLAttributes<HTMLDivElement> {}
100
+ interface CardHeaderProps extends HTMLAttributes<HTMLDivElement> {
101
+ /**
102
+ * Trailing content pinned to the inline-end of the header — an overflow menu, a status
103
+ * badge, a link. Without it the header is a column (title over description), which is
104
+ * why `justify-content: space-between` alone does nothing: the most common dashboard
105
+ * card layout is title-left / action-right, and it needs a row.
106
+ *
107
+ * The title column keeps `min-inline-size: 0`, so a long title truncates instead of
108
+ * pushing the actions out of the card.
109
+ */
110
+ actions?: ReactNode;
111
+ }
77
112
  declare function CardHeader({
113
+ actions,
78
114
  className,
79
115
  children,
80
116
  ...props
@@ -97,8 +133,16 @@ declare function CardFooter({
97
133
  children,
98
134
  ...props
99
135
  }: CardFooterProps): import("react").JSX.Element;
136
+ /** Badge-only looks that aren't a severity tone. */
137
+ type BadgeShape = 'secondary' | 'outline' | 'primary';
100
138
  interface BadgeProps extends HTMLAttributes<HTMLSpanElement> {
101
- variant?: 'default' | 'secondary' | 'success' | 'warning' | 'destructive' | 'outline';
139
+ /**
140
+ * Severity tone or badge-specific look. Accepts the catalog-wide `Tone` vocabulary
141
+ * (`neutral | info | success | warning | danger`) as well as Badge's historical spellings
142
+ * (`default`, `destructive`, `error`) — they are aliases of the same tones, so one domain
143
+ * enum can drive `Badge`, `Tag`, `Status` and `Notification` with no lookup table.
144
+ */
145
+ variant?: ToneInput | BadgeShape;
102
146
  size?: 'sm' | 'md';
103
147
  }
104
148
  declare function Badge({
@@ -109,6 +153,12 @@ declare function Badge({
109
153
  ...props
110
154
  }: BadgeProps): import("react").JSX.Element;
111
155
  interface ModalProps {
156
+ /**
157
+ * Whether the component is open (controlled).
158
+ *
159
+ * @defaultValue `false`
160
+ * @see the component manifest
161
+ */
112
162
  open?: boolean;
113
163
  onClose?: () => void;
114
164
  title?: string;
@@ -116,7 +166,12 @@ interface ModalProps {
116
166
  children?: ReactNode;
117
167
  className?: string;
118
168
  size?: 'sm' | 'md' | 'lg';
119
- /** Allow dragging the dialog by its header (opt-in; CSS translate, no animation library). */
169
+ /**
170
+ * Allow dragging the dialog by its header
171
+ *
172
+ * @defaultValue `false`
173
+ * @see the component manifest
174
+ */
120
175
  draggable?: boolean;
121
176
  }
122
177
  declare function Modal({
@@ -131,6 +186,12 @@ declare function Modal({
131
186
  }: ModalProps): import("react").JSX.Element;
132
187
  interface SpinnerProps extends HTMLAttributes<HTMLSpanElement> {
133
188
  size?: 'sm' | 'md' | 'lg';
189
+ /**
190
+ * Accessible label announced by screen readers
191
+ *
192
+ * @defaultValue `Loading`
193
+ * @see the component manifest
194
+ */
134
195
  label?: string;
135
196
  }
136
197
  declare function Spinner({
@@ -140,7 +201,19 @@ declare function Spinner({
140
201
  ...props
141
202
  }: SpinnerProps): import("react").JSX.Element;
142
203
  interface SeparatorProps extends HTMLAttributes<HTMLElement> {
204
+ /**
205
+ * Layout orientation of the component.
206
+ *
207
+ * @defaultValue `horizontal`
208
+ * @see the component manifest
209
+ */
143
210
  orientation?: 'horizontal' | 'vertical';
211
+ /**
212
+ * When true, the separator is purely visual and hidden from assistive tech
213
+ *
214
+ * @defaultValue `false`
215
+ * @see the component manifest
216
+ */
144
217
  decorative?: boolean;
145
218
  }
146
219
  declare function Separator({
@@ -150,9 +223,21 @@ declare function Separator({
150
223
  ...props
151
224
  }: SeparatorProps): import("react").JSX.Element;
152
225
  interface AlertProps extends Omit<HTMLAttributes<HTMLDivElement>, 'title'> {
226
+ /**
227
+ * Selects the visual style variant.
228
+ *
229
+ * @defaultValue `default`
230
+ * @see the component manifest
231
+ */
153
232
  variant?: 'default' | 'info' | 'success' | 'warning' | 'destructive';
154
233
  title?: string;
155
234
  icon?: ReactNode;
235
+ /**
236
+ * When true, shows a control to dismiss the component.
237
+ *
238
+ * @defaultValue `false`
239
+ * @see the component manifest
240
+ */
156
241
  dismissible?: boolean;
157
242
  onDismiss?: () => void;
158
243
  action?: {
@@ -173,6 +258,12 @@ declare function Alert({
173
258
  }: AlertProps): import("react").JSX.Element | null;
174
259
  interface AvatarProps extends HTMLAttributes<HTMLSpanElement> {
175
260
  src?: string;
261
+ /**
262
+ * Alternative text describing the image.
263
+ *
264
+ * @defaultValue ``
265
+ * @see the component manifest
266
+ */
176
267
  alt?: string;
177
268
  /** Full name — used to derive initials for the fallback and as the accessible label. */
178
269
  name?: string;
@@ -200,9 +291,19 @@ interface AvatarGroupProps extends HTMLAttributes<HTMLDivElement> {
200
291
  max?: number;
201
292
  /** Override the total count used for the +N chip (when more exist than rendered). */
202
293
  total?: number;
203
- /** Overlap amount. */
294
+ /**
295
+ * Spacing between items.
296
+ *
297
+ * @defaultValue `md`
298
+ * @see the component manifest
299
+ */
204
300
  spacing?: 'sm' | 'md' | 'lg';
205
- /** Wrap into a grid instead of an overlapping row. */
301
+ /**
302
+ * When true, lays the avatars out in a grid instead of an overlapping stack.
303
+ *
304
+ * @defaultValue `false`
305
+ * @see the component manifest
306
+ */
206
307
  isGrid?: boolean;
207
308
  labels?: AvatarGroupLabels;
208
309
  /** The <Avatar> children. */
@@ -240,17 +341,38 @@ declare function User({
240
341
  }: UserProps): import("react").JSX.Element;
241
342
  interface ImageProps extends Omit<ImgHTMLAttributes<HTMLImageElement>, 'placeholder'> {
242
343
  src?: string;
344
+ /**
345
+ * Alternative text describing the image.
346
+ *
347
+ * @defaultValue ``
348
+ * @see the component manifest
349
+ */
243
350
  alt?: string;
244
351
  /** Image shown if `src` fails to load. Without it, a neutral fallback box renders. */
245
352
  fallbackSrc?: string;
246
353
  width?: string | number;
247
354
  height?: string | number;
248
355
  radius?: 'none' | 'sm' | 'md' | 'lg' | 'full';
249
- /** Hover-zoom the image (reduced-motion-safe). */
356
+ /**
357
+ * When true, zooms the image on hover.
358
+ *
359
+ * @defaultValue `false`
360
+ * @see the component manifest
361
+ */
250
362
  zoom?: boolean;
251
- /** Render a bare <img> with no wrapper, placeholder, or zoom (HeroUI parity). */
363
+ /**
364
+ * Render a bare <img> with no wrapper, placeholder, or zoom
365
+ *
366
+ * @defaultValue `false`
367
+ * @see the component manifest
368
+ */
252
369
  removeWrapper?: boolean;
253
- /** Show a blurred placeholder while loading. */
370
+ /**
371
+ * When true, renders a blurred backdrop behind the image.
372
+ *
373
+ * @defaultValue `false`
374
+ * @see the component manifest
375
+ */
254
376
  isBlurred?: boolean;
255
377
  }
256
378
  declare function Image({
@@ -288,6 +410,12 @@ declare function Textarea({
288
410
  interface SelectOption {
289
411
  value: string;
290
412
  label: string;
413
+ /**
414
+ * When true, disables the control and removes it from the tab order.
415
+ *
416
+ * @defaultValue `false`
417
+ * @see the component manifest
418
+ */
291
419
  disabled?: boolean;
292
420
  }
293
421
  interface SelectProps extends Omit<SelectHTMLAttributes<HTMLSelectElement>, 'size'> {
@@ -315,6 +443,12 @@ declare function Select({
315
443
  }: SelectProps): import("react").JSX.Element;
316
444
  interface CheckboxProps extends InputHTMLAttributes<HTMLInputElement> {
317
445
  label?: string;
446
+ /**
447
+ * When true, renders the mixed/indeterminate state.
448
+ *
449
+ * @defaultValue `false`
450
+ * @see the component manifest
451
+ */
318
452
  indeterminate?: boolean;
319
453
  }
320
454
  declare function Checkbox({
@@ -357,6 +491,12 @@ declare function RadioGroup({
357
491
  }: RadioGroupProps): import("react").JSX.Element;
358
492
  interface ToggleProps extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, 'onChange'> {
359
493
  checked?: boolean;
494
+ /**
495
+ * Whether the control is checked on first render (uncontrolled).
496
+ *
497
+ * @defaultValue `false`
498
+ * @see the component manifest
499
+ */
360
500
  defaultChecked?: boolean;
361
501
  /** Called with the new checked state when the switch is toggled. */
362
502
  onValueChange?: (checked: boolean) => void;
@@ -397,8 +537,20 @@ declare function Slider({
397
537
  }: SliderProps): import("react").JSX.Element;
398
538
  interface TooltipProps {
399
539
  content: ReactNode;
540
+ /**
541
+ * Placement relative to the trigger.
542
+ *
543
+ * @defaultValue `top`
544
+ * @see the component manifest
545
+ */
400
546
  placement?: 'top' | 'right' | 'bottom' | 'left';
401
547
  children: ReactElement;
548
+ /**
549
+ * Milliseconds to wait before showing
550
+ *
551
+ * @defaultValue `200`
552
+ * @see the component manifest
553
+ */
402
554
  delay?: number;
403
555
  }
404
556
  declare function Tooltip({
@@ -418,6 +570,12 @@ interface DropdownProps {
418
570
  trigger: ReactElement;
419
571
  items: DropdownItem[];
420
572
  onSelect?: (value: string) => void;
573
+ /**
574
+ * Placement relative to the trigger.
575
+ *
576
+ * @defaultValue `bottom-start`
577
+ * @see the component manifest
578
+ */
421
579
  placement?: 'bottom-start' | 'bottom-end';
422
580
  open?: boolean;
423
581
  onOpenChange?: (open: boolean) => void;
@@ -434,7 +592,19 @@ type ToastVariant = 'default' | 'success' | 'warning' | 'destructive';
434
592
  interface ToastOptions {
435
593
  title: string;
436
594
  description?: string;
595
+ /**
596
+ * Selects the visual style variant.
597
+ *
598
+ * @defaultValue `default`
599
+ * @see the component manifest
600
+ */
437
601
  variant?: ToastVariant;
602
+ /**
603
+ * How long (ms) the toast stays visible before auto-dismiss.
604
+ *
605
+ * @defaultValue `5000`
606
+ * @see the component manifest
607
+ */
438
608
  duration?: number;
439
609
  }
440
610
  declare function enqueue(options: ToastOptions): void;
@@ -534,7 +704,12 @@ interface ActionSheetProps {
534
704
  title?: ReactNode;
535
705
  /** Optional supporting message under the title. */
536
706
  description?: ReactNode;
537
- /** Show the separate Cancel button. Default true. */
707
+ /**
708
+ * When true, shows a cancel button below the actions.
709
+ *
710
+ * @defaultValue `true`
711
+ * @see the component manifest
712
+ */
538
713
  showCancel?: boolean;
539
714
  labels?: {
540
715
  cancel?: string;
@@ -570,14 +745,37 @@ declare function Kbd({
570
745
  ...props
571
746
  }: KbdProps): import("react").JSX.Element;
572
747
  interface LinkProps extends AnchorHTMLAttributes<HTMLAnchorElement> {
748
+ /**
749
+ * `standalone` (default) owns its own typography and underlines on hover;
750
+ * `inline` inherits the surrounding prose font and is always underlined.
751
+ */
573
752
  variant?: 'standalone' | 'inline';
574
753
  size?: 'sm' | 'md' | 'lg';
754
+ /**
755
+ * When true, treats the link as external (opens in a new tab with rel safety).
756
+ *
757
+ * @defaultValue `false`
758
+ * @see the component manifest
759
+ */
575
760
  external?: boolean;
761
+ /**
762
+ * Render the single child element instead of cascivo's own `<a>`, so the link
763
+ * styling lands on your router's `Link`. **This is the supported way to style an
764
+ * in-content router link** — `setLinkComponent` only covers the config-driven nav
765
+ * components (SideNav, ShellHeader, Breadcrumb, …), not links you write in page
766
+ * content. See `docs/USING-WITH-A-ROUTER.md`.
767
+ *
768
+ * ```tsx
769
+ * <Link asChild><RouterLink to="/projects/a">Project A</RouterLink></Link>
770
+ * ```
771
+ */
772
+ asChild?: boolean;
576
773
  }
577
774
  declare function Link({
578
775
  variant,
579
776
  size,
580
777
  external,
778
+ asChild,
581
779
  className,
582
780
  children,
583
781
  ...props
@@ -590,7 +788,12 @@ interface BreadcrumbProps {
590
788
  items: BreadcrumbItem[];
591
789
  maxVisible?: number;
592
790
  className?: string;
593
- /** Accessible label for the nav landmark */
791
+ /**
792
+ * Accessible label for the component.
793
+ *
794
+ * @defaultValue `Breadcrumb`
795
+ * @see the component manifest
796
+ */
594
797
  ariaLabel?: string;
595
798
  }
596
799
  declare function Breadcrumb({
@@ -652,6 +855,12 @@ interface HeaderProps extends HTMLAttributes<HTMLElement> {
652
855
  brand?: ReactNode;
653
856
  links?: HeaderLink[];
654
857
  actions?: ReactNode;
858
+ /**
859
+ * When true, the header sticks to the top on scroll.
860
+ *
861
+ * @defaultValue `false`
862
+ * @see the component manifest
863
+ */
655
864
  sticky?: boolean;
656
865
  labels?: HeaderLabels;
657
866
  }
@@ -751,12 +960,48 @@ interface SideNavProps {
751
960
  items?: SideNavItem[];
752
961
  groups?: SideNavGroup[];
753
962
  collapsed?: boolean;
963
+ /**
964
+ * Whether the rail is collapsed on first render (uncontrolled).
965
+ *
966
+ * @defaultValue `false`
967
+ * @see the component manifest
968
+ */
754
969
  defaultCollapsed?: boolean;
755
970
  onCollapsedChange?: (collapsed: boolean) => void;
971
+ /**
972
+ * Accessible label for the component.
973
+ *
974
+ * @defaultValue `Side navigation`
975
+ * @see the component manifest
976
+ */
756
977
  ariaLabel?: string;
978
+ /**
979
+ * Accessible label for the collapse control.
980
+ *
981
+ * @defaultValue `Collapse navigation`
982
+ * @see the component manifest
983
+ */
757
984
  collapseLabel?: string;
985
+ /**
986
+ * Accessible label for the expand control.
987
+ *
988
+ * @defaultValue `Expand navigation`
989
+ * @see the component manifest
990
+ */
758
991
  expandLabel?: string;
992
+ /**
993
+ * Widens the rail as an overlay on hover/focus-within; suppresses tooltips/flyouts
994
+ *
995
+ * @defaultValue `false`
996
+ * @see the component manifest
997
+ */
759
998
  expandOnHover?: boolean;
999
+ /**
1000
+ * Show the collapse/expand toggle control.
1001
+ *
1002
+ * @defaultValue `true`
1003
+ * @see the component manifest
1004
+ */
760
1005
  showCollapseToggle?: boolean;
761
1006
  /** Content rendered above the items, inside the item padding context. */
762
1007
  header?: ReactNode;
@@ -792,6 +1037,12 @@ interface PaginationProps {
792
1037
  totalItems: number;
793
1038
  onPageChange: (page: number) => void;
794
1039
  onPageSizeChange?: (size: number) => void;
1040
+ /**
1041
+ * Options for the page size select
1042
+ *
1043
+ * @defaultValue `[10, 25, 50, 100]`
1044
+ * @see the component manifest
1045
+ */
795
1046
  pageSizeOptions?: number[];
796
1047
  labels?: PaginationLabels;
797
1048
  className?: string;
@@ -813,6 +1064,12 @@ interface ProgressStep {
813
1064
  interface ProgressIndicatorProps {
814
1065
  steps: ProgressStep[];
815
1066
  currentIndex: number;
1067
+ /**
1068
+ * When true, lays the steps out vertically.
1069
+ *
1070
+ * @defaultValue `false`
1071
+ * @see the component manifest
1072
+ */
816
1073
  vertical?: boolean;
817
1074
  className?: string;
818
1075
  }
@@ -823,9 +1080,20 @@ declare function ProgressIndicator({
823
1080
  className
824
1081
  }: ProgressIndicatorProps): import("react").JSX.Element;
825
1082
  interface TagProps extends HTMLAttributes<HTMLSpanElement> {
826
- variant?: 'default' | 'info' | 'success' | 'warning' | 'error';
1083
+ /**
1084
+ * Severity tone. Accepts the catalog-wide `Tone` vocabulary
1085
+ * (`neutral | info | success | warning | danger`) plus Tag's historical spellings
1086
+ * (`default`, `error`, `destructive`).
1087
+ */
1088
+ variant?: ToneInput;
827
1089
  size?: 'sm' | 'md';
828
1090
  onDismiss?: () => void;
1091
+ /**
1092
+ * Accessible label for the dismiss button.
1093
+ *
1094
+ * @defaultValue `Remove`
1095
+ * @see the component manifest
1096
+ */
829
1097
  dismissLabel?: string;
830
1098
  }
831
1099
  declare function Tag({
@@ -838,9 +1106,21 @@ declare function Tag({
838
1106
  ...props
839
1107
  }: TagProps): import("react").JSX.Element;
840
1108
  interface SkeletonProps extends HTMLAttributes<HTMLDivElement> {
1109
+ /**
1110
+ * Selects the visual style variant.
1111
+ *
1112
+ * @defaultValue `text`
1113
+ * @see the component manifest
1114
+ */
841
1115
  variant?: 'text' | 'circle' | 'rect';
842
1116
  width?: string;
843
1117
  height?: string;
1118
+ /**
1119
+ * Number of bars for the text variant; the last bar renders shorter
1120
+ *
1121
+ * @defaultValue `1`
1122
+ * @see the component manifest
1123
+ */
844
1124
  lines?: number;
845
1125
  }
846
1126
  declare function Skeleton({
@@ -855,10 +1135,22 @@ declare function Skeleton({
855
1135
  interface ProgressBarProps {
856
1136
  /** Current value from 0 to max. Omit for an indeterminate bar. */
857
1137
  value?: number;
1138
+ /**
1139
+ * Maximum allowed value.
1140
+ *
1141
+ * @defaultValue `100`
1142
+ * @see the component manifest
1143
+ */
858
1144
  max?: number;
859
1145
  label?: string;
860
1146
  helperText?: string;
861
1147
  size?: 'sm' | 'md';
1148
+ /**
1149
+ * success/error tint the fill and show a glyph next to the label
1150
+ *
1151
+ * @defaultValue `active`
1152
+ * @see the component manifest
1153
+ */
862
1154
  status?: 'active' | 'success' | 'error';
863
1155
  className?: string;
864
1156
  }
@@ -905,7 +1197,12 @@ interface FabProps {
905
1197
  onClick?: () => void;
906
1198
  /** Speed-dial actions revealed above the button when opened. */
907
1199
  actions?: FabAction[];
908
- /** Screen corner to anchor to. */
1200
+ /**
1201
+ * Position of the component.
1202
+ *
1203
+ * @defaultValue `bottom-end`
1204
+ * @see the component manifest
1205
+ */
909
1206
  position?: 'bottom-end' | 'bottom-start';
910
1207
  /** Controlled speed-dial open state. */
911
1208
  open?: boolean;
@@ -935,15 +1232,41 @@ declare function Fab({
935
1232
  }: FabProps): import("react").JSX.Element;
936
1233
  interface OverflowMenuItem {
937
1234
  label: string;
938
- value: string;
1235
+ /**
1236
+ * Item identity — what `onSelect` receives. `value` is the catalog convention for the
1237
+ * identity of an item in a collection (see the accessible-name/item-identity table in
1238
+ * `docs/AI-RULES.md`); `id` is accepted as an alias because `CommandMenu`-shaped `id`
1239
+ * is the common wrong guess and cost an adopter a compile round-trip. Pass either.
1240
+ */
1241
+ value?: string;
1242
+ /** Alias of {@link OverflowMenuItem.value}. Exactly one of the two is required. */
1243
+ id?: string;
939
1244
  icon?: ReactNode;
1245
+ /**
1246
+ * When true, disables the control and removes it from the tab order.
1247
+ *
1248
+ * @defaultValue `false`
1249
+ * @see the component manifest
1250
+ */
940
1251
  disabled?: boolean;
941
1252
  destructive?: boolean;
942
1253
  }
943
1254
  interface OverflowMenuProps {
944
1255
  items: OverflowMenuItem[];
945
1256
  onSelect?: (value: string) => void;
1257
+ /**
1258
+ * Placement relative to the trigger.
1259
+ *
1260
+ * @defaultValue `bottom-end`
1261
+ * @see the component manifest
1262
+ */
946
1263
  placement?: 'bottom-start' | 'bottom-end';
1264
+ /**
1265
+ * Accessible label for the component.
1266
+ *
1267
+ * @defaultValue `More actions`
1268
+ * @see the component manifest
1269
+ */
947
1270
  ariaLabel?: string;
948
1271
  size?: 'sm' | 'md';
949
1272
  disabled?: boolean;
@@ -966,11 +1289,44 @@ interface SearchProps {
966
1289
  /** @deprecated Use `onValueChange` — it receives the same string. */
967
1290
  onChange?: (value: string) => void;
968
1291
  onSearch?: (value: string) => void;
1292
+ /**
1293
+ * Debounce delay (ms) before onSearch fires.
1294
+ *
1295
+ * @defaultValue `300`
1296
+ * @see the component manifest
1297
+ */
969
1298
  debounceMs?: number;
1299
+ /**
1300
+ * Placeholder text shown when the field is empty.
1301
+ *
1302
+ * @defaultValue `Search`
1303
+ * @see the component manifest
1304
+ */
970
1305
  placeholder?: string;
971
1306
  size?: 'sm' | 'md' | 'lg';
1307
+ /**
1308
+ * Accessible name for the control. Rendered as a real `<label>` that is **visually
1309
+ * hidden** by design — it changes the accessible name, not the visible UI. If you can see
1310
+ * it, the component stylesheet did not load (import `@cascivo/react/styles.css` or the
1311
+ * per-component CSS).
1312
+ *
1313
+ * @defaultValue `Search`
1314
+ * @see the component manifest
1315
+ */
972
1316
  label?: string;
1317
+ /**
1318
+ * When true, disables the control and removes it from the tab order.
1319
+ *
1320
+ * @defaultValue `false`
1321
+ * @see the component manifest
1322
+ */
973
1323
  disabled?: boolean;
1324
+ /**
1325
+ * Accessible label for the clear button.
1326
+ *
1327
+ * @defaultValue `Clear search`
1328
+ * @see the component manifest
1329
+ */
974
1330
  clearLabel?: string;
975
1331
  id?: string;
976
1332
  className?: string;
@@ -999,6 +1355,12 @@ interface NumberInputProps extends Omit<InputHTMLAttributes<HTMLInputElement>, '
999
1355
  onChange?: (value: number | null) => void;
1000
1356
  min?: number;
1001
1357
  max?: number;
1358
+ /**
1359
+ * Increment between allowed values.
1360
+ *
1361
+ * @defaultValue `1`
1362
+ * @see the component manifest
1363
+ */
1002
1364
  step?: number;
1003
1365
  precision?: number;
1004
1366
  formatOptions?: Intl.NumberFormatOptions;
@@ -1006,7 +1368,19 @@ interface NumberInputProps extends Omit<InputHTMLAttributes<HTMLInputElement>, '
1006
1368
  hint?: string;
1007
1369
  error?: string;
1008
1370
  size?: 'sm' | 'md' | 'lg';
1371
+ /**
1372
+ * Accessible label for the increment button.
1373
+ *
1374
+ * @defaultValue `Increment`
1375
+ * @see the component manifest
1376
+ */
1009
1377
  incrementLabel?: string;
1378
+ /**
1379
+ * Accessible label for the decrement button.
1380
+ *
1381
+ * @defaultValue `Decrement`
1382
+ * @see the component manifest
1383
+ */
1010
1384
  decrementLabel?: string;
1011
1385
  }
1012
1386
  declare function NumberInput({
@@ -1039,7 +1413,23 @@ interface Column<Row> {
1039
1413
  sortable?: boolean;
1040
1414
  render?: (row: Row) => ReactNode;
1041
1415
  align?: 'start' | 'end';
1416
+ /**
1417
+ * Preferred column width, any CSS length (`'8rem'`, `'120px'`, `'12%'`). Set it on
1418
+ * identifier-shaped columns (commit hashes, IDs, timestamps) — default sizing doesn't
1419
+ * consider content shape, so a hash wraps mid-hash.
1420
+ *
1421
+ * **Mixing sized and unsized columns is supported**: unsized columns absorb the
1422
+ * remaining width and never collapse below their content. Only when *every* column
1423
+ * declares a width does the table switch to a fixed layout (which keeps widths
1424
+ * identical across pages); otherwise widths are preferred sizes, not hard ones.
1425
+ */
1042
1426
  width?: string;
1427
+ /**
1428
+ * Floor for the column's width, any CSS length. Use it on a free-form column
1429
+ * (a commit message, a description) that must stay readable when the table is narrow —
1430
+ * the table then scrolls horizontally rather than squeezing the column to nothing.
1431
+ */
1432
+ minWidth?: string;
1043
1433
  }
1044
1434
  type SortDirection = 'asc' | 'desc';
1045
1435
  interface SortState {
@@ -1064,6 +1454,12 @@ interface DataTableProps<Row> {
1064
1454
  defaultSort?: SortState;
1065
1455
  sortMode?: 'client' | 'server';
1066
1456
  onSortChange?: (sort: SortState | undefined) => void;
1457
+ /**
1458
+ * When true, shows a search/filter input.
1459
+ *
1460
+ * @defaultValue `false`
1461
+ * @see the component manifest
1462
+ */
1067
1463
  searchable?: boolean;
1068
1464
  pagination?: {
1069
1465
  pageSize: number;
@@ -1081,17 +1477,59 @@ interface DataTableProps<Row> {
1081
1477
  }[];
1082
1478
  renderExpandedRow?: (row: Row) => ReactNode;
1083
1479
  density?: 'compact' | 'normal' | 'relaxed';
1480
+ /**
1481
+ * When true, applies alternating row striping.
1482
+ *
1483
+ * @defaultValue `false`
1484
+ * @see the component manifest
1485
+ */
1084
1486
  zebra?: boolean;
1487
+ /**
1488
+ * When true, the header stays fixed while the body scrolls.
1489
+ *
1490
+ * @defaultValue `false`
1491
+ * @see the component manifest
1492
+ */
1085
1493
  stickyHeader?: boolean;
1494
+ /**
1495
+ * When true, shows a loading state.
1496
+ *
1497
+ * @defaultValue `false`
1498
+ * @see the component manifest
1499
+ */
1086
1500
  loading?: boolean;
1087
1501
  emptyState?: ReactNode;
1088
1502
  title?: string;
1089
1503
  description?: string;
1090
1504
  labels?: DataTableLabels;
1091
1505
  className?: string;
1506
+ /**
1507
+ * Render only the visible row window for large datasets.
1508
+ *
1509
+ * @defaultValue `false`
1510
+ * @see the component manifest
1511
+ */
1092
1512
  virtualized?: boolean;
1513
+ /**
1514
+ * Fixed row height in px, used to compute the virtualized window.
1515
+ *
1516
+ * @defaultValue `40`
1517
+ * @see the component manifest
1518
+ */
1093
1519
  rowHeight?: number;
1520
+ /**
1521
+ * Number of rows rendered in the virtualized window.
1522
+ *
1523
+ * @defaultValue `20`
1524
+ * @see the component manifest
1525
+ */
1094
1526
  windowSize?: number;
1527
+ /**
1528
+ * Extra rows rendered above/below the window to smooth scrolling.
1529
+ *
1530
+ * @defaultValue `3`
1531
+ * @see the component manifest
1532
+ */
1095
1533
  overscan?: number;
1096
1534
  }
1097
1535
  declare function DataTable<Row>({
@@ -1122,6 +1560,12 @@ declare function DataTable<Row>({
1122
1560
  overscan
1123
1561
  }: DataTableProps<Row>): import("react").JSX.Element;
1124
1562
  interface CommandPage {
1563
+ /**
1564
+ * Placeholder text shown when the field is empty.
1565
+ *
1566
+ * @defaultValue `Type a command or search…`
1567
+ * @see the component manifest
1568
+ */
1125
1569
  placeholder?: string;
1126
1570
  groups: CommandGroup[];
1127
1571
  }
@@ -1176,12 +1620,43 @@ interface CommandMenuProps {
1176
1620
  onOpenChange: (open: boolean) => void;
1177
1621
  groups: CommandGroup[];
1178
1622
  placeholder?: string;
1623
+ /**
1624
+ * Text shown when no commands match the query.
1625
+ *
1626
+ * @defaultValue `No results found`
1627
+ * @see the component manifest
1628
+ */
1179
1629
  emptyLabel?: string;
1630
+ /**
1631
+ * Global Cmd/Ctrl+K toggles the menu via onOpenChange
1632
+ *
1633
+ * @defaultValue `true`
1634
+ * @see the component manifest
1635
+ */
1180
1636
  hotkey?: boolean;
1637
+ /**
1638
+ * Text label for the control.
1639
+ *
1640
+ * @defaultValue `Command menu`
1641
+ * @see the component manifest
1642
+ */
1181
1643
  label?: string;
1644
+ /**
1645
+ * Shows a loading spinner in place of the empty state (for async items)
1646
+ *
1647
+ * @defaultValue `false`
1648
+ * @see the component manifest
1649
+ */
1182
1650
  loading?: boolean;
1183
1651
  onQueryChange?: (query: string) => void;
1184
- /** Selectable filter scopes; enables the scope bar, chip, prefixes, and Tab cycling. */
1652
+ /**
1653
+ * Selectable filter scopes. Renders a scope bar + chip; a scope activates by clicking its
1654
+ * pill, typing its prefix (c:/c ), or cycling with Tab, and filters to groups tagged with
1655
+ * a matching scope (plus untagged groups).
1656
+ *
1657
+ * @defaultValue `[]`
1658
+ * @see the component manifest
1659
+ */
1185
1660
  scopes?: CommandScope[];
1186
1661
  className?: string;
1187
1662
  }
@@ -1284,6 +1759,12 @@ declare function Form<T extends Record<string, unknown>>({
1284
1759
  interface ComboboxOption {
1285
1760
  value: string;
1286
1761
  label: string;
1762
+ /**
1763
+ * When true, disables the control and removes it from the tab order.
1764
+ *
1765
+ * @defaultValue `false`
1766
+ * @see the component manifest
1767
+ */
1287
1768
  disabled?: boolean;
1288
1769
  }
1289
1770
  interface ComboboxLabels {
@@ -1300,7 +1781,19 @@ interface ComboboxProps {
1300
1781
  onValueChange?: (value: string | undefined) => void;
1301
1782
  /** @deprecated Use `onValueChange` — it receives the same `string | undefined`. */
1302
1783
  onChange?: (value: string | undefined) => void;
1784
+ /**
1785
+ * When true, shows a control to clear the selected value.
1786
+ *
1787
+ * @defaultValue `false`
1788
+ * @see the component manifest
1789
+ */
1303
1790
  clearable?: boolean;
1791
+ /**
1792
+ * When true, shows a search/filter input.
1793
+ *
1794
+ * @defaultValue `true`
1795
+ * @see the component manifest
1796
+ */
1304
1797
  searchable?: boolean;
1305
1798
  label?: string;
1306
1799
  hint?: string;
@@ -1343,11 +1836,29 @@ interface DatePickerProps {
1343
1836
  onChange?: (value: string | undefined) => void;
1344
1837
  min?: string;
1345
1838
  max?: string;
1839
+ /**
1840
+ * Shows a clear button
1841
+ *
1842
+ * @defaultValue `false`
1843
+ * @see the component manifest
1844
+ */
1346
1845
  clearable?: boolean;
1347
1846
  label?: string;
1348
1847
  hint?: string;
1349
1848
  error?: string;
1849
+ /**
1850
+ * Field size
1851
+ *
1852
+ * @defaultValue `md`
1853
+ * @see the component manifest
1854
+ */
1350
1855
  size?: 'sm' | 'md' | 'lg';
1856
+ /**
1857
+ * Disables the picker
1858
+ *
1859
+ * @defaultValue `false`
1860
+ * @see the component manifest
1861
+ */
1351
1862
  disabled?: boolean;
1352
1863
  labels?: DatePickerLabels;
1353
1864
  className?: string;
@@ -1386,9 +1897,21 @@ interface FileUploaderLabels {
1386
1897
  error?: string;
1387
1898
  }
1388
1899
  interface FileUploaderProps {
1900
+ /**
1901
+ * Controlled file list
1902
+ *
1903
+ * @defaultValue `[]`
1904
+ * @see the component manifest
1905
+ */
1389
1906
  files?: UploaderFile[];
1390
1907
  onFilesAdded?: (files: File[]) => void;
1391
1908
  onRemove?: (id: string) => void;
1909
+ /**
1910
+ * Allow multiple files
1911
+ *
1912
+ * @defaultValue `false`
1913
+ * @see the component manifest
1914
+ */
1392
1915
  multiple?: boolean;
1393
1916
  accept?: string;
1394
1917
  maxSize?: number;
@@ -1396,6 +1919,12 @@ interface FileUploaderProps {
1396
1919
  label?: string;
1397
1920
  hint?: string;
1398
1921
  labels?: FileUploaderLabels;
1922
+ /**
1923
+ * Disables the upload zone
1924
+ *
1925
+ * @defaultValue `false`
1926
+ * @see the component manifest
1927
+ */
1399
1928
  disabled?: boolean;
1400
1929
  className?: string;
1401
1930
  }
@@ -1520,6 +2049,12 @@ interface AlertDialogProps {
1520
2049
  onConfirm: () => void;
1521
2050
  onCancel: () => void;
1522
2051
  labels?: AlertDialogLabels;
2052
+ /**
2053
+ * Selects the visual style variant.
2054
+ *
2055
+ * @defaultValue `default`
2056
+ * @see the component manifest
2057
+ */
1523
2058
  variant?: 'destructive' | 'default';
1524
2059
  }
1525
2060
  declare function AlertDialog({
@@ -1537,6 +2072,12 @@ interface SheetProps {
1537
2072
  /** Optional heading. Accepts rich nodes; when present it labels the dialog via `aria-labelledby`. */
1538
2073
  title?: ReactNode;
1539
2074
  children: ReactNode;
2075
+ /**
2076
+ * Edge the component is anchored to.
2077
+ *
2078
+ * @defaultValue `end`
2079
+ * @see the component manifest
2080
+ */
1540
2081
  side?: 'start' | 'end' | 'top' | 'bottom';
1541
2082
  }
1542
2083
  declare function Sheet({
@@ -1560,7 +2101,12 @@ interface BottomSheetProps {
1560
2101
  snapPoints?: number[];
1561
2102
  /** Controlled active detent index into `snapPoints`. */
1562
2103
  activeSnap?: number;
1563
- /** Initial active detent index for uncontrolled use. Defaults to the lowest detent. */
2104
+ /**
2105
+ * The initial snap-point index when uncontrolled.
2106
+ *
2107
+ * @defaultValue `0`
2108
+ * @see the component manifest
2109
+ */
1564
2110
  defaultSnap?: number;
1565
2111
  /** Called when the active detent changes via drag. */
1566
2112
  onSnapChange?: (index: number) => void;
@@ -1619,11 +2165,27 @@ interface ComparisonProps extends Omit<HTMLAttributes<HTMLDivElement>, 'onChange
1619
2165
  before: ReactNode;
1620
2166
  /** Divider position as a percentage 0–100. Controlled when provided. */
1621
2167
  position?: number;
1622
- /** Initial divider position for uncontrolled use. Default 50. */
2168
+ /**
2169
+ * The initial divider position (0–100) when uncontrolled.
2170
+ *
2171
+ * @defaultValue `50`
2172
+ * @see the component manifest
2173
+ */
1623
2174
  defaultPosition?: number;
1624
2175
  onPositionChange?: (position: number) => void;
2176
+ /**
2177
+ * Layout orientation of the component.
2178
+ *
2179
+ * @defaultValue `horizontal`
2180
+ * @see the component manifest
2181
+ */
1625
2182
  orientation?: 'horizontal' | 'vertical';
1626
- /** Percentage the Arrow keys move the divider. Default 5. */
2183
+ /**
2184
+ * How far the divider moves per arrow-key press.
2185
+ *
2186
+ * @defaultValue `5`
2187
+ * @see the component manifest
2188
+ */
1627
2189
  keyboardStep?: number;
1628
2190
  /** Accessible label for the divider slider. */
1629
2191
  label?: string;
@@ -1642,7 +2204,19 @@ declare function Comparison({
1642
2204
  }: ComparisonProps): import("react").JSX.Element;
1643
2205
  interface HoverCardProps {
1644
2206
  children: ReactNode;
2207
+ /**
2208
+ * Delay (ms) before the card opens on hover/focus.
2209
+ *
2210
+ * @defaultValue `300`
2211
+ * @see the component manifest
2212
+ */
1645
2213
  openDelay?: number;
2214
+ /**
2215
+ * Delay (ms) before the card closes after hover/focus leaves.
2216
+ *
2217
+ * @defaultValue `100`
2218
+ * @see the component manifest
2219
+ */
1646
2220
  closeDelay?: number;
1647
2221
  }
1648
2222
  declare function HoverCard({
@@ -1670,6 +2244,12 @@ interface PasswordInputLabels {
1670
2244
  strengthLabel?: (level: string) => string;
1671
2245
  }
1672
2246
  interface PasswordInputProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'type' | 'size'> {
2247
+ /**
2248
+ * When true, shows a password-strength meter.
2249
+ *
2250
+ * @defaultValue `false`
2251
+ * @see the component manifest
2252
+ */
1673
2253
  showStrengthMeter?: boolean;
1674
2254
  size?: 'sm' | 'md' | 'lg';
1675
2255
  labels?: PasswordInputLabels;
@@ -1688,6 +2268,12 @@ declare function PasswordInput({
1688
2268
  interface MultiSelectOption {
1689
2269
  label: string;
1690
2270
  value: string;
2271
+ /**
2272
+ * When true, disables the control and removes it from the tab order.
2273
+ *
2274
+ * @defaultValue `false`
2275
+ * @see the component manifest
2276
+ */
1691
2277
  disabled?: boolean;
1692
2278
  }
1693
2279
  interface MultiSelectLabels {
@@ -1721,6 +2307,12 @@ interface TagsInputProps extends Omit<HTMLAttributes<HTMLDivElement>, 'onChange'
1721
2307
  placeholder?: string;
1722
2308
  validate?: (tag: string) => boolean;
1723
2309
  max?: number;
2310
+ /**
2311
+ * When true, disables the control and removes it from the tab order.
2312
+ *
2313
+ * @defaultValue `false`
2314
+ * @see the component manifest
2315
+ */
1724
2316
  disabled?: boolean;
1725
2317
  }
1726
2318
  declare function TagsInput({
@@ -1734,9 +2326,21 @@ declare function TagsInput({
1734
2326
  ...props
1735
2327
  }: TagsInputProps): import("react").JSX.Element;
1736
2328
  interface OtpInputProps extends Omit<HTMLAttributes<HTMLDivElement>, 'onChange'> {
2329
+ /**
2330
+ * Number of input cells.
2331
+ *
2332
+ * @defaultValue `6`
2333
+ * @see the component manifest
2334
+ */
1737
2335
  length?: number;
1738
2336
  value: string;
1739
2337
  onValueChange: (v: string) => void;
2338
+ /**
2339
+ * When true, disables the control and removes it from the tab order.
2340
+ *
2341
+ * @defaultValue `false`
2342
+ * @see the component manifest
2343
+ */
1740
2344
  disabled?: boolean;
1741
2345
  type?: 'numeric' | 'alphanumeric';
1742
2346
  }
@@ -1752,6 +2356,12 @@ declare function OtpInput({
1752
2356
  interface SegmentedControlOption {
1753
2357
  label: string;
1754
2358
  value: string;
2359
+ /**
2360
+ * When true, disables the control and removes it from the tab order.
2361
+ *
2362
+ * @defaultValue `false`
2363
+ * @see the component manifest
2364
+ */
1755
2365
  disabled?: boolean;
1756
2366
  }
1757
2367
  interface SegmentedControlProps extends Omit<HTMLAttributes<HTMLDivElement>, 'onChange'> {
@@ -1800,9 +2410,27 @@ interface RatingGroupLabels {
1800
2410
  interface RatingGroupProps extends Omit<HTMLAttributes<HTMLDivElement>, 'onChange'> {
1801
2411
  value: number;
1802
2412
  onValueChange?: (v: number) => void;
2413
+ /**
2414
+ * Maximum allowed value.
2415
+ *
2416
+ * @defaultValue `5`
2417
+ * @see the component manifest
2418
+ */
1803
2419
  max?: number;
1804
2420
  size?: 'sm' | 'md' | 'lg';
2421
+ /**
2422
+ * When true, disables the control and removes it from the tab order.
2423
+ *
2424
+ * @defaultValue `false`
2425
+ * @see the component manifest
2426
+ */
1805
2427
  disabled?: boolean;
2428
+ /**
2429
+ * When true, the value is shown but cannot be edited.
2430
+ *
2431
+ * @defaultValue `false`
2432
+ * @see the component manifest
2433
+ */
1806
2434
  readOnly?: boolean;
1807
2435
  labels?: RatingGroupLabels;
1808
2436
  }
@@ -1821,7 +2449,19 @@ interface EditableProps extends Omit<HTMLAttributes<HTMLDivElement>, 'onChange'>
1821
2449
  value: string;
1822
2450
  onValueChange: (v: string) => void;
1823
2451
  placeholder?: string;
2452
+ /**
2453
+ * When true, disables the control and removes it from the tab order.
2454
+ *
2455
+ * @defaultValue `false`
2456
+ * @see the component manifest
2457
+ */
1824
2458
  disabled?: boolean;
2459
+ /**
2460
+ * When true, commits the edit when the field loses focus.
2461
+ *
2462
+ * @defaultValue `true`
2463
+ * @see the component manifest
2464
+ */
1825
2465
  submitOnBlur?: boolean;
1826
2466
  onCancel?: () => void;
1827
2467
  }
@@ -1961,6 +2601,12 @@ type SwitcherEntry = SwitcherLink | {
1961
2601
  };
1962
2602
  interface SwitcherProps {
1963
2603
  items: SwitcherEntry[];
2604
+ /**
2605
+ * Text label for the control.
2606
+ *
2607
+ * @defaultValue `Switch application`
2608
+ * @see the component manifest
2609
+ */
1964
2610
  label?: string;
1965
2611
  className?: string | undefined;
1966
2612
  }
@@ -2007,6 +2653,14 @@ interface StatProps extends Omit<HTMLAttributes<HTMLDivElement>, 'children'> {
2007
2653
  delta?: string;
2008
2654
  trend?: 'up' | 'down' | 'flat';
2009
2655
  helpText?: string;
2656
+ /**
2657
+ * Wrap the tile in the same card chrome (surface, border, radius, padding) that
2658
+ * `@cascivo/charts`' `Kpi` ships. `Stat` is layout-only by default so it can sit inside
2659
+ * a `Card` you control; `Kpi` always brings its own chrome, which made a `Stat` row and
2660
+ * a `Kpi` row on adjacent pages of one dashboard look like different products. Set this
2661
+ * when you are mixing the two, or use it instead of hand-wrapping every `Stat` in a `Card`.
2662
+ */
2663
+ card?: boolean;
2010
2664
  /** 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. */
2011
2665
  visual?: ReactNode;
2012
2666
  }
@@ -2016,13 +2670,24 @@ declare function Stat({
2016
2670
  delta,
2017
2671
  trend,
2018
2672
  helpText,
2673
+ card,
2019
2674
  visual,
2020
2675
  className,
2021
2676
  ...props
2022
2677
  }: StatProps): import("react").JSX.Element;
2023
2678
  interface StatusProps extends HTMLAttributes<HTMLSpanElement> {
2024
- status?: 'success' | 'warning' | 'error' | 'info' | 'neutral';
2025
- /** Pulses the dot — only when the user allows motion. */
2679
+ /**
2680
+ * Severity tone. Accepts the catalog-wide `Tone` vocabulary
2681
+ * (`neutral | info | success | warning | danger`) plus Status's historical spellings
2682
+ * (`error`, `destructive`, `default`).
2683
+ */
2684
+ status?: ToneInput;
2685
+ /**
2686
+ * Pulses the dot — gated behind prefers-reduced-motion: no-preference
2687
+ *
2688
+ * @defaultValue `false`
2689
+ * @see the component manifest
2690
+ */
2026
2691
  pulse?: boolean;
2027
2692
  }
2028
2693
  declare function Status({
@@ -2032,15 +2697,13 @@ declare function Status({
2032
2697
  children,
2033
2698
  ...props
2034
2699
  }: StatusProps): import("react").JSX.Element;
2035
- interface VisuallyHiddenProps extends HTMLAttributes<HTMLSpanElement> {
2036
- children: ReactNode;
2037
- }
2038
- declare function VisuallyHidden({
2039
- children,
2040
- className,
2041
- ...props
2042
- }: VisuallyHiddenProps): import("react").JSX.Element;
2043
2700
  interface SkipNavLinkProps extends Omit<AnchorHTMLAttributes<HTMLAnchorElement>, 'href'> {
2701
+ /**
2702
+ * SkipNavLink: id of the SkipNavTarget to jump to
2703
+ *
2704
+ * @defaultValue `cascade-skip-target`
2705
+ * @see the component manifest
2706
+ */
2044
2707
  targetId?: string;
2045
2708
  labels?: {
2046
2709
  label?: string;
@@ -2054,6 +2717,12 @@ declare function SkipNavLink({
2054
2717
  ...props
2055
2718
  }: SkipNavLinkProps): import("react").JSX.Element;
2056
2719
  interface SkipNavTargetProps extends HTMLAttributes<HTMLDivElement> {
2720
+ /**
2721
+ * SkipNavTarget: anchor id — must match the link targetId
2722
+ *
2723
+ * @defaultValue `cascade-skip-target`
2724
+ * @see the component manifest
2725
+ */
2057
2726
  id?: string;
2058
2727
  }
2059
2728
  /** Place where the main content starts; the link's hash navigation moves focus here. */
@@ -2066,8 +2735,22 @@ type ProgressSize = 'sm' | 'md' | 'lg';
2066
2735
  interface ProgressProps {
2067
2736
  /** 0–100. Omit for indeterminate state. */
2068
2737
  value?: number;
2738
+ /**
2739
+ * Selects the visual style variant.
2740
+ *
2741
+ * @defaultValue `primary`
2742
+ * @see the component manifest
2743
+ */
2069
2744
  variant?: ProgressVariant;
2070
2745
  size?: ProgressSize;
2746
+ /**
2747
+ * Invisible accessible name. `ariaLabel` is the catalog convention (see the
2748
+ * accessible-name table in `docs/AI-RULES.md`); the DOM spelling `aria-label` is accepted
2749
+ * too, so either guess compiles. Two spellings of one idea inside a package was a coin
2750
+ * flip on every component.
2751
+ */
2752
+ ariaLabel?: string;
2753
+ /** DOM-spelled alias of {@link ariaLabel}. */
2071
2754
  'aria-label'?: string;
2072
2755
  'aria-describedby'?: string;
2073
2756
  className?: string;
@@ -2077,14 +2760,26 @@ declare function Progress({
2077
2760
  variant,
2078
2761
  size,
2079
2762
  className,
2763
+ ariaLabel,
2080
2764
  ...aria
2081
2765
  }: ProgressProps): import("react").JSX.Element;
2082
2766
  interface ProgressCircleProps extends HTMLAttributes<HTMLDivElement> {
2083
2767
  /** Current value from 0 to max — clamped. */
2084
2768
  value: number;
2769
+ /**
2770
+ * Maximum allowed value.
2771
+ *
2772
+ * @defaultValue `100`
2773
+ * @see the component manifest
2774
+ */
2085
2775
  max?: number;
2086
2776
  size?: 'sm' | 'md' | 'lg';
2087
- /** Renders the rounded percentage in the center — pairs best with md and lg. */
2777
+ /**
2778
+ * Renders the rounded percentage in the center — pairs best with md and lg
2779
+ *
2780
+ * @defaultValue `false`
2781
+ * @see the component manifest
2782
+ */
2088
2783
  showValue?: boolean;
2089
2784
  /** Accessible name for the progressbar. */
2090
2785
  label?: string;
@@ -2101,6 +2796,12 @@ declare function ProgressCircle({
2101
2796
  type HeadingLevel = 1 | 2 | 3 | 4 | 5 | 6;
2102
2797
  type HeadingSize = 'sm' | 'md' | 'lg' | 'xl' | '2xl';
2103
2798
  interface HeadingProps extends HTMLAttributes<HTMLHeadingElement> {
2799
+ /**
2800
+ * Heading level (1–6) mapping to h1–h6.
2801
+ *
2802
+ * @defaultValue `2`
2803
+ * @see the component manifest
2804
+ */
2104
2805
  level?: HeadingLevel;
2105
2806
  size?: HeadingSize;
2106
2807
  }
@@ -2112,9 +2813,21 @@ declare function Heading({
2112
2813
  ...props
2113
2814
  }: HeadingProps): import("react").JSX.Element;
2114
2815
  interface TextProps extends HTMLAttributes<HTMLElement> {
2816
+ /**
2817
+ * The HTML element to render as.
2818
+ *
2819
+ * @defaultValue `p`
2820
+ * @see the component manifest
2821
+ */
2115
2822
  as?: 'p' | 'span' | 'div';
2116
2823
  size?: 'sm' | 'md' | 'lg';
2117
2824
  weight?: 'normal' | 'medium' | 'semibold';
2825
+ /**
2826
+ * When true, renders in a muted/subtle color.
2827
+ *
2828
+ * @defaultValue `false`
2829
+ * @see the component manifest
2830
+ */
2118
2831
  muted?: boolean;
2119
2832
  }
2120
2833
  declare function Text({
@@ -2136,6 +2849,12 @@ declare function Code({
2136
2849
  ...props
2137
2850
  }: CodeProps): import("react").JSX.Element;
2138
2851
  interface BlockquoteProps extends HTMLAttributes<HTMLQuoteElement> {
2852
+ /**
2853
+ * URL of the quote’s source (sets the HTML cite attribute).
2854
+ *
2855
+ * @defaultValue `undefined`
2856
+ * @see the component manifest
2857
+ */
2139
2858
  cite?: string;
2140
2859
  }
2141
2860
  declare function Blockquote({
@@ -2145,6 +2864,12 @@ declare function Blockquote({
2145
2864
  ...props
2146
2865
  }: BlockquoteProps): import("react").JSX.Element;
2147
2866
  interface ListProps extends HTMLAttributes<HTMLElement> {
2867
+ /**
2868
+ * The HTML element to render as.
2869
+ *
2870
+ * @defaultValue `ul`
2871
+ * @see the component manifest
2872
+ */
2148
2873
  as?: 'ul' | 'ol';
2149
2874
  marker?: 'disc' | 'decimal' | 'none';
2150
2875
  }
@@ -2185,14 +2910,29 @@ interface LogViewerProps extends Omit<HTMLAttributes<HTMLDivElement>, 'children'
2185
2910
  lines: {
2186
2911
  readonly value: readonly LogLine[];
2187
2912
  } | readonly LogLine[];
2188
- /** Pixel height of one row. Default 20. */
2913
+ /**
2914
+ * Height of each row in pixels, used for virtualization.
2915
+ *
2916
+ * @defaultValue `20`
2917
+ * @see the component manifest
2918
+ */
2189
2919
  rowHeight?: number;
2190
- /** Extra rows rendered above/below the viewport. Default 8. */
2920
+ /**
2921
+ * Number of extra rows rendered above and below the viewport.
2922
+ *
2923
+ * @defaultValue `8`
2924
+ * @see the component manifest
2925
+ */
2191
2926
  overscan?: number;
2192
2927
  /** Controlled pin-to-bottom. Omit for uncontrolled (defaults to following). */
2193
2928
  follow?: boolean;
2194
2929
  onFollowChange?: (follow: boolean) => void;
2195
- /** Parse ANSI SGR color escapes. Default false (use `level` instead). */
2930
+ /**
2931
+ * When true, parses ANSI color escape codes into colored spans.
2932
+ *
2933
+ * @defaultValue `false`
2934
+ * @see the component manifest
2935
+ */
2196
2936
  ansi?: boolean;
2197
2937
  /** Seed the search/highlight box. */
2198
2938
  search?: string;
@@ -2229,8 +2969,19 @@ interface PullToRefreshProps {
2229
2969
  /** Invoked when the pull passes the threshold; the spinner shows until it settles. */
2230
2970
  onRefresh: () => Promise<unknown> | unknown;
2231
2971
  children: ReactNode;
2232
- /** Pull distance (px) required to trigger a refresh. Default 64. */
2972
+ /**
2973
+ * Pull distance (px) required to trigger a refresh.
2974
+ *
2975
+ * @defaultValue `64`
2976
+ * @see the component manifest
2977
+ */
2233
2978
  threshold?: number;
2979
+ /**
2980
+ * When true, disables the control and removes it from the tab order.
2981
+ *
2982
+ * @defaultValue `false`
2983
+ * @see the component manifest
2984
+ */
2234
2985
  disabled?: boolean;
2235
2986
  labels?: {
2236
2987
  pull?: string;
@@ -2268,13 +3019,28 @@ interface QrCodeProps extends Omit<HTMLAttributes<HTMLDivElement>, 'children'> {
2268
3019
  value: string;
2269
3020
  /** Rendered size in pixels (width and height). Default 128. */
2270
3021
  size?: number;
2271
- /** Error-correction level. Higher tolerates more damage but holds less data. Default 'M'. */
3022
+ /**
3023
+ * Higher levels tolerate more damage but hold less data
3024
+ *
3025
+ * @defaultValue `M`
3026
+ * @see the component manifest
3027
+ */
2272
3028
  errorCorrection?: ErrorCorrection;
2273
3029
  /** CSS length rounding the code's corners (applied to the container). */
2274
3030
  radius?: string;
2275
- /** Module color. Default `currentColor` so the code inherits text color. */
3031
+ /**
3032
+ * Foreground color of the QR modules.
3033
+ *
3034
+ * @defaultValue `currentColor`
3035
+ * @see the component manifest
3036
+ */
2276
3037
  fill?: string;
2277
- /** Background color behind the modules. Default `transparent`. */
3038
+ /**
3039
+ * Background color behind the QR code.
3040
+ *
3041
+ * @defaultValue `transparent`
3042
+ * @see the component manifest
3043
+ */
2278
3044
  background?: string;
2279
3045
  /** Accessible label. Defaults to the i18n built-in "QR code". */
2280
3046
  label?: string;
@@ -2294,7 +3060,12 @@ declare function QrCode({
2294
3060
  interface RelativeTimeProps extends Omit<TimeHTMLAttributes<HTMLTimeElement>, 'dateTime'> {
2295
3061
  /** The instant to describe relative to now. */
2296
3062
  date: Date | number | string;
2297
- /** Auto-update as time passes. Default true. */
3063
+ /**
3064
+ * When true, updates the relative time as it elapses.
3065
+ *
3066
+ * @defaultValue `true`
3067
+ * @see the component manifest
3068
+ */
2298
3069
  sync?: boolean;
2299
3070
  /** Override "now" (ms since epoch). Mainly for deterministic tests; disables the interval. */
2300
3071
  now?: number;
@@ -2310,11 +3081,27 @@ declare function RelativeTime({
2310
3081
  ...props
2311
3082
  }: RelativeTimeProps): import("react").JSX.Element;
2312
3083
  interface LabelProps extends LabelHTMLAttributes<HTMLLabelElement> {
2313
- /** Renders into the child element (Slot composition) instead of a native `<label>`. */
3084
+ /**
3085
+ * When true, renders the child element as the root via Slot, merging props (polymorphic
3086
+ * rendering).
3087
+ *
3088
+ * @defaultValue `false`
3089
+ * @see the component manifest
3090
+ */
2314
3091
  asChild?: boolean;
2315
- /** Shows a required marker after the label text. */
3092
+ /**
3093
+ * When true, marks the field as required.
3094
+ *
3095
+ * @defaultValue `false`
3096
+ * @see the component manifest
3097
+ */
2316
3098
  required?: boolean;
2317
- /** Dims the label to match an associated disabled control. */
3099
+ /**
3100
+ * When true, disables the control and removes it from the tab order.
3101
+ *
3102
+ * @defaultValue `false`
3103
+ * @see the component manifest
3104
+ */
2318
3105
  disabled?: boolean;
2319
3106
  children: ReactNode;
2320
3107
  /** Override built-in strings (e.g. the required-marker accessible text). */
@@ -2338,9 +3125,19 @@ interface FieldProps {
2338
3125
  description?: ReactNode;
2339
3126
  /** Error message; sets aria-invalid on the control and is announced via role="alert". */
2340
3127
  error?: ReactNode;
2341
- /** Marks the field required (forwarded to the Label marker). */
3128
+ /**
3129
+ * When true, marks the field as required.
3130
+ *
3131
+ * @defaultValue `false`
3132
+ * @see the component manifest
3133
+ */
2342
3134
  required?: boolean;
2343
- /** Dims the label and is forwarded to the cloned control. */
3135
+ /**
3136
+ * When true, disables the control and removes it from the tab order.
3137
+ *
3138
+ * @defaultValue `false`
3139
+ * @see the component manifest
3140
+ */
2344
3141
  disabled?: boolean;
2345
3142
  /** Explicit id for the control; auto-generated when omitted. */
2346
3143
  id?: string;
@@ -2371,13 +3168,39 @@ interface FilterOption {
2371
3168
  interface FilterProps {
2372
3169
  options: FilterOption[];
2373
3170
  value?: string[];
3171
+ /**
3172
+ * Initial selected values for uncontrolled use
3173
+ *
3174
+ * @defaultValue `[]`
3175
+ * @see the component manifest
3176
+ */
2374
3177
  defaultValue?: string[];
2375
3178
  /** Called with the selected values whenever the selection changes. */
2376
3179
  onValueChange?: (selected: string[]) => void;
2377
3180
  /** @deprecated Use `onValueChange` — it receives the same `string[]`. */
2378
3181
  onChange?: (selected: string[]) => void;
3182
+ /**
3183
+ * Allow multiple items to be selected simultaneously
3184
+ *
3185
+ * @defaultValue `false`
3186
+ * @see the component manifest
3187
+ */
2379
3188
  multi?: boolean;
3189
+ /**
3190
+ * Selects the visual style variant.
3191
+ *
3192
+ * @defaultValue `pill`
3193
+ * @see the component manifest
3194
+ */
2380
3195
  variant?: FilterVariant;
3196
+ /**
3197
+ * Invisible accessible name. `ariaLabel` is the catalog convention (see the
3198
+ * accessible-name table in `docs/AI-RULES.md`); the DOM spelling `aria-label` is accepted
3199
+ * too, so either guess compiles. Two spellings of one idea inside a package was a coin
3200
+ * flip on every component.
3201
+ */
3202
+ ariaLabel?: string;
3203
+ /** DOM-spelled alias of {@link ariaLabel}. */
2381
3204
  'aria-label'?: string;
2382
3205
  className?: string;
2383
3206
  }
@@ -2390,25 +3213,66 @@ declare function Filter({
2390
3213
  multi,
2391
3214
  variant,
2392
3215
  className,
3216
+ ariaLabel,
2393
3217
  ...aria
2394
3218
  }: FilterProps): import("react").JSX.Element;
2395
- interface IconButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {
2396
- /** Accessible name for the icon-only control. Required — there is no visible text. */
2397
- label: string;
3219
+ interface IconButtonBaseProps extends ButtonHTMLAttributes<HTMLButtonElement> {
2398
3220
  /** The icon to render. Alias for `children`. Any ReactNode — `@cascivo/icons`
2399
3221
  * ships ~440 ready-made SVG icon components, or pass your own. */
2400
3222
  icon?: ReactNode;
2401
3223
  size?: 'sm' | 'md' | 'lg';
3224
+ /**
3225
+ * Selects the visual style variant.
3226
+ *
3227
+ * @defaultValue `ghost`
3228
+ * @see the component manifest
3229
+ */
2402
3230
  variant?: 'ghost' | 'outline' | 'filled';
2403
- /** Render the single child element instead of a `<button>` (composition). */
3231
+ /**
3232
+ * When true, renders the child element as the root via Slot, merging props (polymorphic
3233
+ * rendering).
3234
+ *
3235
+ * @defaultValue `false`
3236
+ * @see the component manifest
3237
+ */
2404
3238
  asChild?: boolean;
2405
3239
  }
3240
+ /**
3241
+ * Exactly one of `label` / `ariaLabel` is required — an icon-only control with no
3242
+ * accessible name is a bug, so this stays enforced by the type rather than a dev warning.
3243
+ * `ariaLabel` is the catalog's convention for an invisible accessible name; `IconButton`
3244
+ * predates it and shipped `label`, so both work and neither is deprecated.
3245
+ */
3246
+ type IconButtonProps = IconButtonBaseProps & ({
3247
+ label: string;
3248
+ ariaLabel?: never;
3249
+ } | {
3250
+ ariaLabel: string;
3251
+ label?: never;
3252
+ });
2406
3253
  declare const IconButton: import("react").ForwardRefExoticComponent<IconButtonProps & import("react").RefAttributes<HTMLButtonElement>>;
2407
3254
  interface ButtonGroupProps extends HTMLAttributes<HTMLDivElement> {
3255
+ /**
3256
+ * Layout orientation of the component.
3257
+ *
3258
+ * @defaultValue `horizontal`
3259
+ * @see the component manifest
3260
+ */
2408
3261
  orientation?: 'horizontal' | 'vertical';
2409
3262
  size?: 'sm' | 'md' | 'lg';
2410
- /** Enable arrow-key roving focus across the group's focusable buttons. */
3263
+ /**
3264
+ * When true, uses roving tabindex so arrow keys move focus between buttons.
3265
+ *
3266
+ * @defaultValue `false`
3267
+ * @see the component manifest
3268
+ */
2411
3269
  roving?: boolean;
3270
+ /**
3271
+ * When true, navigation wraps around from end to start.
3272
+ *
3273
+ * @defaultValue `false`
3274
+ * @see the component manifest
3275
+ */
2412
3276
  loop?: boolean;
2413
3277
  }
2414
3278
  declare const ButtonGroup: import("react").ForwardRefExoticComponent<ButtonGroupProps & import("react").RefAttributes<HTMLDivElement>>;
@@ -2416,6 +3280,12 @@ interface ToggleGroupItem {
2416
3280
  value: string;
2417
3281
  label?: string;
2418
3282
  icon?: ReactNode;
3283
+ /**
3284
+ * When true, disables the control and removes it from the tab order.
3285
+ *
3286
+ * @defaultValue `false`
3287
+ * @see the component manifest
3288
+ */
2419
3289
  disabled?: boolean;
2420
3290
  }
2421
3291
  interface ToggleGroupProps extends Omit<HTMLAttributes<HTMLDivElement>, 'onChange' | 'defaultValue'> {
@@ -2424,6 +3294,12 @@ interface ToggleGroupProps extends Omit<HTMLAttributes<HTMLDivElement>, 'onChang
2424
3294
  defaultValue?: string | string[];
2425
3295
  onValueChange?: (value: string | string[]) => void;
2426
3296
  items: ToggleGroupItem[];
3297
+ /**
3298
+ * Layout orientation of the component.
3299
+ *
3300
+ * @defaultValue `horizontal`
3301
+ * @see the component manifest
3302
+ */
2427
3303
  orientation?: 'horizontal' | 'vertical';
2428
3304
  size?: 'sm' | 'md' | 'lg';
2429
3305
  disabled?: boolean;
@@ -2446,11 +3322,23 @@ declare function InlineLoading({
2446
3322
  className,
2447
3323
  ...props
2448
3324
  }: InlineLoadingProps): import("react").JSX.Element;
2449
- type NotificationVariant = 'info' | 'success' | 'warning' | 'error';
3325
+ /** The value Notification's stylesheet and icon set key on. */
3326
+ type NotificationVariant = 'neutral' | 'info' | 'success' | 'warning' | 'error';
2450
3327
  interface NotificationProps extends Omit<HTMLAttributes<HTMLDivElement>, 'title'> {
2451
3328
  title: ReactNode;
2452
3329
  description?: ReactNode;
2453
- variant?: NotificationVariant;
3330
+ /**
3331
+ * Severity tone. Accepts the catalog-wide `Tone` vocabulary
3332
+ * (`neutral | info | success | warning | danger`) plus Notification's historical
3333
+ * spellings (`error`, `destructive`).
3334
+ */
3335
+ variant?: ToneInput;
3336
+ /**
3337
+ * When true, shows a control to dismiss the component.
3338
+ *
3339
+ * @defaultValue `false`
3340
+ * @see the component manifest
3341
+ */
2454
3342
  dismissible?: boolean;
2455
3343
  onDismiss?: () => void;
2456
3344
  actions?: ReactNode;
@@ -2462,7 +3350,7 @@ interface NotificationProps extends Omit<HTMLAttributes<HTMLDivElement>, 'title'
2462
3350
  declare function Notification({
2463
3351
  title,
2464
3352
  description,
2465
- variant,
3353
+ variant: variantProp,
2466
3354
  dismissible,
2467
3355
  onDismiss,
2468
3356
  actions,
@@ -2476,9 +3364,19 @@ interface ScrollAreaProps extends HTMLAttributes<HTMLDivElement> {
2476
3364
  height?: string;
2477
3365
  /** Max inline size of the scroll container (any CSS length). */
2478
3366
  width?: string;
2479
- /** Which axes may scroll. */
3367
+ /**
3368
+ * Which axes may scroll
3369
+ *
3370
+ * @defaultValue `vertical`
3371
+ * @see the component manifest
3372
+ */
2480
3373
  orientation?: 'vertical' | 'horizontal' | 'both';
2481
- /** Edge affordance: box-shadow (default), a mask-image fade (HeroUI ScrollShadow), or none. */
3374
+ /**
3375
+ * Edge affordance: box-shadow, a mask-image fade, or none
3376
+ *
3377
+ * @defaultValue `shadow`
3378
+ * @see the component manifest
3379
+ */
2482
3380
  edges?: 'shadow' | 'mask' | 'none';
2483
3381
  children?: ReactNode;
2484
3382
  }
@@ -2495,13 +3393,23 @@ declare function ScrollArea({
2495
3393
  interface CollapsibleProps {
2496
3394
  /** Controlled open state. */
2497
3395
  open?: boolean;
2498
- /** Initial open state for uncontrolled use. */
3396
+ /**
3397
+ * Initial open state for uncontrolled use
3398
+ *
3399
+ * @defaultValue `false`
3400
+ * @see the component manifest
3401
+ */
2499
3402
  defaultOpen?: boolean;
2500
3403
  /** Called whenever the open state should change. */
2501
3404
  onOpenChange?: (open: boolean) => void;
2502
3405
  /** Content rendered inside the trigger button. */
2503
3406
  trigger: ReactNode;
2504
- /** Disables the trigger. */
3407
+ /**
3408
+ * Disables the trigger button
3409
+ *
3410
+ * @defaultValue `false`
3411
+ * @see the component manifest
3412
+ */
2505
3413
  disabled?: boolean;
2506
3414
  className?: string;
2507
3415
  children?: ReactNode;
@@ -2516,7 +3424,12 @@ declare function Collapsible({
2516
3424
  children
2517
3425
  }: CollapsibleProps): import("react").JSX.Element;
2518
3426
  interface AspectRatioProps extends HTMLAttributes<HTMLDivElement> {
2519
- /** Width-to-height ratio (e.g. 16 / 9). Defaults to 16/9. */
3427
+ /**
3428
+ * Width-to-height ratio applied via the CSS aspect-ratio property
3429
+ *
3430
+ * @defaultValue `16 / 9`
3431
+ * @see the component manifest
3432
+ */
2520
3433
  ratio?: number;
2521
3434
  children?: ReactNode;
2522
3435
  }
@@ -2531,6 +3444,12 @@ interface MenuButtonItem {
2531
3444
  id: string;
2532
3445
  label: ReactNode;
2533
3446
  onSelect?: () => void;
3447
+ /**
3448
+ * Disables the trigger
3449
+ *
3450
+ * @defaultValue `false`
3451
+ * @see the component manifest
3452
+ */
2534
3453
  disabled?: boolean;
2535
3454
  }
2536
3455
  interface MenuButtonProps {
@@ -2562,6 +3481,12 @@ interface ToggletipProps {
2562
3481
  /** The popover content. Interactive and selectable. */
2563
3482
  children: ReactNode;
2564
3483
  placement?: ToggletipPlacement;
3484
+ /**
3485
+ * Initial open state when uncontrolled
3486
+ *
3487
+ * @defaultValue `false`
3488
+ * @see the component manifest
3489
+ */
2565
3490
  defaultOpen?: boolean;
2566
3491
  open?: boolean;
2567
3492
  onOpenChange?: (open: boolean) => void;
@@ -2610,6 +3535,12 @@ interface NavigationMenuItem {
2610
3535
  interface NavigationMenuProps {
2611
3536
  items: NavigationMenuItem[];
2612
3537
  'aria-label'?: string;
3538
+ /**
3539
+ * Layout orientation of the component.
3540
+ *
3541
+ * @defaultValue `horizontal`
3542
+ * @see the component manifest
3543
+ */
2613
3544
  orientation?: RovingOrientation;
2614
3545
  className?: string;
2615
3546
  }
@@ -2662,11 +3593,25 @@ interface StructuredListItem {
2662
3593
  interface StructuredListProps {
2663
3594
  items: StructuredListItem[];
2664
3595
  headers?: ReactNode[];
3596
+ /**
3597
+ * When true, rows can be selected.
3598
+ *
3599
+ * @defaultValue `false`
3600
+ * @see the component manifest
3601
+ */
2665
3602
  selectable?: boolean;
2666
3603
  value?: string;
2667
3604
  defaultValue?: string;
2668
3605
  onSelect?: (id: string) => void;
2669
3606
  className?: string;
3607
+ /**
3608
+ * Invisible accessible name. `ariaLabel` is the catalog convention (see the
3609
+ * accessible-name table in `docs/AI-RULES.md`); the DOM spelling `aria-label` is accepted
3610
+ * too, so either guess compiles. Two spellings of one idea inside a package was a coin
3611
+ * flip on every component.
3612
+ */
3613
+ ariaLabel?: string;
3614
+ /** DOM-spelled alias of {@link ariaLabel}. */
2670
3615
  'aria-label'?: string;
2671
3616
  }
2672
3617
  declare function StructuredList(props: StructuredListProps): import("react").JSX.Element;
@@ -2700,7 +3645,19 @@ interface DataListItem {
2700
3645
  }
2701
3646
  interface DataListProps extends HTMLAttributes<HTMLDListElement> {
2702
3647
  items: DataListItem[];
3648
+ /**
3649
+ * Layout orientation of the component.
3650
+ *
3651
+ * @defaultValue `horizontal`
3652
+ * @see the component manifest
3653
+ */
2703
3654
  orientation?: 'horizontal' | 'vertical';
3655
+ /**
3656
+ * When true, shows dividers between items.
3657
+ *
3658
+ * @defaultValue `false`
3659
+ * @see the component manifest
3660
+ */
2704
3661
  dividers?: boolean;
2705
3662
  size?: 'sm' | 'md';
2706
3663
  }
@@ -2718,10 +3675,22 @@ interface TimelineItem {
2718
3675
  description?: ReactNode;
2719
3676
  time?: string;
2720
3677
  icon?: ReactNode;
2721
- status?: 'complete' | 'current' | 'upcoming';
3678
+ /**
3679
+ * Where this entry sits in the sequence. Accepts the catalog-wide `Progress` vocabulary
3680
+ * (`pending | active | complete | error`) as well as Timeline's own `current` / `upcoming`
3681
+ * — they are aliases of `active` / `pending`, so one status enum drives both `Timeline`
3682
+ * and `Steps` with no translation.
3683
+ */
3684
+ status?: ProgressInput;
2722
3685
  }
2723
3686
  interface TimelineProps extends HTMLAttributes<HTMLOListElement> {
2724
3687
  items: TimelineItem[];
3688
+ /**
3689
+ * Layout orientation of the component.
3690
+ *
3691
+ * @defaultValue `vertical`
3692
+ * @see the component manifest
3693
+ */
2725
3694
  orientation?: 'vertical' | 'horizontal';
2726
3695
  }
2727
3696
  declare function Timeline({
@@ -2731,7 +3700,20 @@ declare function Timeline({
2731
3700
  ...props
2732
3701
  }: TimelineProps): import("react").JSX.Element;
2733
3702
  interface ItemProps extends HTMLAttributes<HTMLDivElement> {
3703
+ /**
3704
+ * When true, renders the child element as the root via Slot, merging props (polymorphic
3705
+ * rendering).
3706
+ *
3707
+ * @defaultValue `false`
3708
+ * @see the component manifest
3709
+ */
2734
3710
  asChild?: boolean;
3711
+ /**
3712
+ * Selects the visual style variant.
3713
+ *
3714
+ * @defaultValue `default`
3715
+ * @see the component manifest
3716
+ */
2735
3717
  variant?: 'default' | 'muted';
2736
3718
  size?: 'sm' | 'md';
2737
3719
  }
@@ -2785,6 +3767,12 @@ interface CalendarProps {
2785
3767
  max?: Date;
2786
3768
  disabled?: (date: Date) => boolean;
2787
3769
  locale?: string;
3770
+ /**
3771
+ * Grid cell size
3772
+ *
3773
+ * @defaultValue `md`
3774
+ * @see the component manifest
3775
+ */
2788
3776
  size?: 'sm' | 'md' | 'lg';
2789
3777
  labels?: CalendarLabels;
2790
3778
  className?: string;
@@ -2804,7 +3792,12 @@ interface CalendarProps {
2804
3792
  month: number;
2805
3793
  year: number;
2806
3794
  }) => void;
2807
- /** Hide the prev/next header nav (parent drives navigation). */
3795
+ /**
3796
+ * Hides the prev/next nav so a parent can drive navigation
3797
+ *
3798
+ * @defaultValue `false`
3799
+ * @see the component manifest
3800
+ */
2808
3801
  hideNav?: boolean;
2809
3802
  }
2810
3803
  declare function Calendar({
@@ -2855,6 +3848,12 @@ interface DateRangePickerProps {
2855
3848
  presets?: DateRangePreset[];
2856
3849
  locale?: string;
2857
3850
  placeholder?: string;
3851
+ /**
3852
+ * Field/grid size
3853
+ *
3854
+ * @defaultValue `md`
3855
+ * @see the component manifest
3856
+ */
2858
3857
  size?: 'sm' | 'md' | 'lg';
2859
3858
  labels?: DateRangePickerLabels;
2860
3859
  className?: string;
@@ -2875,17 +3874,35 @@ declare function DateRangePicker({
2875
3874
  }: DateRangePickerProps): import("react").JSX.Element;
2876
3875
  interface ColorPickerLabels {
2877
3876
  hue?: string;
3877
+ /**
3878
+ * When true, enables alpha (opacity) selection.
3879
+ *
3880
+ * @defaultValue `true`
3881
+ * @see the component manifest
3882
+ */
2878
3883
  alpha?: string;
2879
3884
  colorArea?: string;
2880
3885
  eyedropper?: string;
2881
3886
  }
2882
3887
  interface ColorPickerProps {
2883
3888
  value?: string;
3889
+ /**
3890
+ * The initial value when uncontrolled.
3891
+ *
3892
+ * @defaultValue `#3b82f6`
3893
+ * @see the component manifest
3894
+ */
2884
3895
  defaultValue?: string;
2885
3896
  onValueChange?: (value: string) => void;
2886
3897
  presets?: string[];
2887
3898
  alpha?: boolean;
2888
3899
  label?: string;
3900
+ /**
3901
+ * When true, disables the control and removes it from the tab order.
3902
+ *
3903
+ * @defaultValue `false`
3904
+ * @see the component manifest
3905
+ */
2889
3906
  disabled?: boolean;
2890
3907
  size?: 'sm' | 'md' | 'lg';
2891
3908
  className?: string;
@@ -2912,8 +3929,20 @@ interface CarouselProps {
2912
3929
  children?: ReactNode;
2913
3930
  slides?: ReactNode[];
2914
3931
  index?: number;
3932
+ /**
3933
+ * The initial slide index when uncontrolled.
3934
+ *
3935
+ * @defaultValue `0`
3936
+ * @see the component manifest
3937
+ */
2915
3938
  defaultIndex?: number;
2916
3939
  onIndexChange?: (index: number) => void;
3940
+ /**
3941
+ * When true, navigation wraps around from end to start.
3942
+ *
3943
+ * @defaultValue `false`
3944
+ * @see the component manifest
3945
+ */
2917
3946
  loop?: boolean;
2918
3947
  className?: string;
2919
3948
  labels?: CarouselLabels;
@@ -2930,10 +3959,34 @@ declare function Carousel({
2930
3959
  }: CarouselProps): import("react").JSX.Element;
2931
3960
  interface ResizableProps {
2932
3961
  children: ReactNode;
3962
+ /**
3963
+ * Layout orientation of the component.
3964
+ *
3965
+ * @defaultValue `horizontal`
3966
+ * @see the component manifest
3967
+ */
2933
3968
  orientation?: 'horizontal' | 'vertical';
3969
+ /**
3970
+ * The initial split ratio when uncontrolled.
3971
+ *
3972
+ * @defaultValue `0.5`
3973
+ * @see the component manifest
3974
+ */
2934
3975
  defaultRatio?: number;
2935
3976
  ratio?: number;
3977
+ /**
3978
+ * Minimum allowed split ratio.
3979
+ *
3980
+ * @defaultValue `0.1`
3981
+ * @see the component manifest
3982
+ */
2936
3983
  minRatio?: number;
3984
+ /**
3985
+ * Maximum allowed split ratio.
3986
+ *
3987
+ * @defaultValue `0.9`
3988
+ * @see the component manifest
3989
+ */
2937
3990
  maxRatio?: number;
2938
3991
  onRatioChange?: (ratio: number) => void;
2939
3992
  className?: string;
@@ -2976,7 +4029,12 @@ interface DrawerProps {
2976
4029
  defaultOpen?: boolean;
2977
4030
  /** Called whenever the open state should change. */
2978
4031
  onOpenChange?: (open: boolean) => void;
2979
- /** Edge the panel is anchored to. Drives the slide direction. */
4032
+ /**
4033
+ * Edge the panel is anchored to. Drives the slide direction.
4034
+ *
4035
+ * @defaultValue `end`
4036
+ * @see the component manifest
4037
+ */
2980
4038
  side?: 'start' | 'end' | 'top' | 'bottom';
2981
4039
  /** Panel size along its cross axis (width for start/end, height for top/bottom). */
2982
4040
  size?: string;
@@ -2989,7 +4047,12 @@ interface DrawerProps {
2989
4047
  close?: string;
2990
4048
  };
2991
4049
  className?: string;
2992
- /** Allow dragging the header toward its edge to dismiss (opt-in; CSS translate, no animation library). */
4050
+ /**
4051
+ * Allow dragging the header toward its edge to dismiss (opt-in).
4052
+ *
4053
+ * @defaultValue `false`
4054
+ * @see the component manifest
4055
+ */
2993
4056
  swipeToDismiss?: boolean;
2994
4057
  }
2995
4058
  /**
@@ -3048,7 +4111,12 @@ type CodeLang = 'bash' | 'css' | 'js' | 'ts';
3048
4111
  interface CodeSnippetProps {
3049
4112
  /** The code to display (and copy). */
3050
4113
  code: string;
3051
- /** inline = a <code> span; single = one-line <pre>; multi = multi-line <pre>. */
4114
+ /**
4115
+ * inline = a <code> span; single = one-line <pre>; multi = multi-line <pre>.
4116
+ *
4117
+ * @defaultValue `single`
4118
+ * @see the component manifest
4119
+ */
3052
4120
  variant?: 'inline' | 'single' | 'multi';
3053
4121
  /**
3054
4122
  * Enables lightweight, dependency-free syntax highlighting for the block
@@ -3090,13 +4158,25 @@ declare function CodeSnippet({
3090
4158
  labels,
3091
4159
  className
3092
4160
  }: CodeSnippetProps): import("react").JSX.Element;
4161
+ /**
4162
+ * The catalog-wide progress vocabulary. `Timeline`'s `current` / `upcoming` are accepted as
4163
+ * aliases of `active` / `pending`, so one status enum drives both components — writing
4164
+ * `state: 'upcoming'` here used to be a type error with no hint that `pending` was the word.
4165
+ */
3093
4166
  type StepState = 'pending' | 'active' | 'complete' | 'error';
3094
4167
  interface Step {
3095
4168
  label: string;
3096
- state?: StepState;
4169
+ /** Accepts `StepState` plus Timeline's `current` / `upcoming` aliases. */
4170
+ state?: ProgressInput;
3097
4171
  }
3098
4172
  interface StepsProps {
3099
4173
  steps: Step[];
4174
+ /**
4175
+ * Index of the currently active step (0-based)
4176
+ *
4177
+ * @defaultValue `0`
4178
+ * @see the component manifest
4179
+ */
3100
4180
  activeStep?: number;
3101
4181
  orientation?: 'horizontal' | 'vertical';
3102
4182
  className?: string;
@@ -3119,7 +4199,12 @@ interface TileProps {
3119
4199
  defaultSelected?: boolean;
3120
4200
  /** Called with this tile's value whenever it is toggled on (or off for multi). */
3121
4201
  onSelect?: (value: string) => void;
3122
- /** Single = radio semantics (toggle on); multi = checkbox semantics (toggle on/off). */
4202
+ /**
4203
+ * Single = radio semantics (toggle on); multi = checkbox semantics (toggle on/off).
4204
+ *
4205
+ * @defaultValue `single`
4206
+ * @see the component manifest
4207
+ */
3123
4208
  selectable?: 'single' | 'multi';
3124
4209
  disabled?: boolean;
3125
4210
  /** Optional leading icon/visual. */
@@ -3149,6 +4234,12 @@ type IndicatorPlacement = 'top-start' | 'top-end' | 'bottom-start' | 'bottom-end
3149
4234
  interface IndicatorProps {
3150
4235
  children: React.ReactNode;
3151
4236
  overlay: React.ReactNode;
4237
+ /**
4238
+ * Placement relative to the trigger.
4239
+ *
4240
+ * @defaultValue `top-end`
4241
+ * @see the component manifest
4242
+ */
3152
4243
  placement?: IndicatorPlacement;
3153
4244
  className?: string;
3154
4245
  }
@@ -3161,6 +4252,12 @@ declare function Indicator({
3161
4252
  type JoinOrientation = 'horizontal' | 'vertical';
3162
4253
  interface JoinProps {
3163
4254
  children: React.ReactNode;
4255
+ /**
4256
+ * Layout orientation of the component.
4257
+ *
4258
+ * @defaultValue `horizontal`
4259
+ * @see the component manifest
4260
+ */
3164
4261
  orientation?: JoinOrientation;
3165
4262
  className?: string;
3166
4263
  }
@@ -3171,6 +4268,13 @@ declare function Join({
3171
4268
  }: JoinProps): import("react").JSX.Element;
3172
4269
  interface StackProps {
3173
4270
  children: React.ReactNode;
4271
+ /**
4272
+ * Pixel offset applied per overlapped layer in both axes. This is NOT a spacing `gap` —
4273
+ * for gap-based vertical/horizontal layout use `Flex`/`Grid` and their `gap` prop.
4274
+ *
4275
+ * @defaultValue `4`
4276
+ * @see the component manifest
4277
+ */
3174
4278
  offset?: number;
3175
4279
  className?: string;
3176
4280
  }
@@ -3179,7 +4283,17 @@ declare function Stack({
3179
4283
  offset,
3180
4284
  className
3181
4285
  }: StackProps): import("react").JSX.Element;
3182
- interface AppShellProps {
4286
+ /**
4287
+ * `AppShell` extends `HTMLAttributes<HTMLDivElement>`, like every other layout primitive,
4288
+ * so `className` **and `style`** pass through to its root element. That matters because the
4289
+ * shell's documented design tokens (`--cascivo-shell-aside-inline-size`,
4290
+ * `--cascivo-shell-panel-inline-size`, `--cascivo-shell-header-block-size`) have to be set
4291
+ * *somewhere*: set them here —
4292
+ * `<AppShell style={{ '--cascivo-shell-aside-inline-size': '15.5rem' }}>` — or on any
4293
+ * ancestor, since they inherit. Before this the props were a closed list with no `style`,
4294
+ * so the tokens had no documented application point and adopters set them on `#root`.
4295
+ */
4296
+ interface AppShellProps extends HTMLAttributes<HTMLDivElement> {
3183
4297
  /**
3184
4298
  * Top bar — typically a `<ShellHeader>`. If it is a React element, AppShell
3185
4299
  * binds its burger (`onMenuClick`/`menuExpanded`) to the nav open state so the
@@ -3212,6 +4326,11 @@ interface AppShellProps {
3212
4326
  * Rail vs full-hide reconcile cleanly: AppShell owns the full show/hide (this
3213
4327
  * `open` state); the SideNav you pass owns its own rail collapse
3214
4328
  * (`showCollapseToggle`). They compose on different axes and never fight.
4329
+ *
4330
+ * **Visual regression note:** the shell is `100dvh` with an internal scroll container (that
4331
+ * is what makes the header sticky and the nav full-height). The page body therefore never
4332
+ * grows, so a Playwright `fullPage: true` screenshot captures only the viewport. To capture
4333
+ * the whole page, screenshot the scroll container element or set a tall viewport.
3215
4334
  */
3216
4335
  declare function AppShell({
3217
4336
  header,
@@ -3221,11 +4340,18 @@ declare function AppShell({
3221
4340
  open,
3222
4341
  defaultOpen,
3223
4342
  onOpenChange,
3224
- className
4343
+ className,
4344
+ ...props
3225
4345
  }: AppShellProps): import("react").JSX.Element;
3226
4346
  type ChatBubbleSide = 'start' | 'end';
3227
4347
  interface ChatBubbleProps {
3228
4348
  children: React.ReactNode;
4349
+ /**
4350
+ * Edge the component is anchored to.
4351
+ *
4352
+ * @defaultValue `start`
4353
+ * @see the component manifest
4354
+ */
3229
4355
  side?: ChatBubbleSide;
3230
4356
  avatar?: React.ReactNode;
3231
4357
  name?: string;
@@ -3245,6 +4371,12 @@ type RadialProgressVariant = 'primary' | 'info' | 'success' | 'warning' | 'error
3245
4371
  interface RadialProgressProps {
3246
4372
  value: number;
3247
4373
  size?: RadialProgressSize;
4374
+ /**
4375
+ * Selects the visual style variant.
4376
+ *
4377
+ * @defaultValue `primary`
4378
+ * @see the component manifest
4379
+ */
3248
4380
  variant?: RadialProgressVariant;
3249
4381
  children?: React.ReactNode;
3250
4382
  'aria-label'?: string;
@@ -3262,6 +4394,12 @@ type SwapMode = 'rotate' | 'flip';
3262
4394
  interface SwapProps {
3263
4395
  on: React.ReactNode;
3264
4396
  off: React.ReactNode;
4397
+ /**
4398
+ * Whether the control is checked (controlled).
4399
+ *
4400
+ * @defaultValue `false`
4401
+ * @see the component manifest
4402
+ */
3265
4403
  checked?: boolean;
3266
4404
  /** Called with the new checked state when the swap is toggled. */
3267
4405
  onValueChange?: (checked: boolean) => void;
@@ -3294,9 +4432,19 @@ interface SwipeAction {
3294
4432
  interface SwipeItemProps {
3295
4433
  /** The row content. */
3296
4434
  children: ReactNode;
3297
- /** Actions revealed by dragging the row toward its end edge (shown on the start edge). */
4435
+ /**
4436
+ * Actions revealed by dragging toward the end edge (shown on the start edge)
4437
+ *
4438
+ * @defaultValue `[]`
4439
+ * @see the component manifest
4440
+ */
3298
4441
  leadingActions?: SwipeAction[];
3299
- /** Actions revealed by dragging the row toward its start edge (shown on the end edge). */
4442
+ /**
4443
+ * Actions revealed by dragging toward the start edge (shown on the end edge)
4444
+ *
4445
+ * @defaultValue `[]`
4446
+ * @see the component manifest
4447
+ */
3300
4448
  trailingActions?: SwipeAction[];
3301
4449
  className?: string;
3302
4450
  }
@@ -3318,8 +4466,21 @@ type Responsive<T> = T | Partial<Record<'base' | 'sm' | 'md' | 'lg' | 'xl', T>>;
3318
4466
  /** Grid track alignment keyword (maps directly to `align-items` / `justify-items`). */
3319
4467
  type GridAlign = 'start' | 'center' | 'end' | 'stretch';
3320
4468
  interface GridProps extends HTMLAttributes<HTMLDivElement> {
3321
- /** Column count. A number, or `{ base, sm, md, lg, xl }` for responsive columns. */
4469
+ /**
4470
+ * Column count — a number, or a per-breakpoint object (base/sm/md/lg/xl) for responsive
4471
+ * columns
4472
+ *
4473
+ * @defaultValue `12`
4474
+ * @see the component manifest
4475
+ */
3322
4476
  cols?: Responsive<number>;
4477
+ /**
4478
+ * Spacing token step. Maps to the --cascivo-space-* scale, which intentionally skips
4479
+ * 7/9/11 — use 6 or 8.
4480
+ *
4481
+ * @defaultValue `4`
4482
+ * @see the component manifest
4483
+ */
3323
4484
  gap?: SpaceStep;
3324
4485
  /** Block-axis alignment of items within their cells (`align-items`). Defaults to `stretch`. */
3325
4486
  align?: GridAlign;
@@ -3347,10 +4508,30 @@ declare function GridItem({
3347
4508
  ...props
3348
4509
  }: GridItemProps): import("react").JSX.Element;
3349
4510
  interface FlexProps extends HTMLAttributes<HTMLDivElement> {
4511
+ /**
4512
+ * Flex direction. ⚠ Defaults to `vertical`, unlike CSS `flex-direction` (and unlike
4513
+ * Chakra/MUI/Radix `Flex`, which default to a row) — `<Flex justify="between">` alone
4514
+ * produces a centered vertical stack.
4515
+ *
4516
+ * @defaultValue `vertical`
4517
+ * @see the component manifest
4518
+ */
3350
4519
  direction?: 'vertical' | 'horizontal';
4520
+ /**
4521
+ * Spacing token step
4522
+ *
4523
+ * @defaultValue `4`
4524
+ * @see the component manifest
4525
+ */
3351
4526
  gap?: SpaceStep;
3352
4527
  align?: 'start' | 'center' | 'end' | 'stretch';
3353
4528
  justify?: 'start' | 'center' | 'end' | 'between';
4529
+ /**
4530
+ * Allow wrapping
4531
+ *
4532
+ * @defaultValue `false`
4533
+ * @see the component manifest
4534
+ */
3354
4535
  wrap?: boolean;
3355
4536
  }
3356
4537
  declare function Flex({
@@ -3364,7 +4545,19 @@ declare function Flex({
3364
4545
  ...props
3365
4546
  }: FlexProps): import("react").JSX.Element;
3366
4547
  interface ColumnsProps extends HTMLAttributes<HTMLDivElement> {
4548
+ /**
4549
+ * Number of equal columns
4550
+ *
4551
+ * @defaultValue `2`
4552
+ * @see the component manifest
4553
+ */
3367
4554
  count?: 2 | 3 | 4;
4555
+ /**
4556
+ * Spacing token step
4557
+ *
4558
+ * @defaultValue `4`
4559
+ * @see the component manifest
4560
+ */
3368
4561
  gap?: SpaceStep;
3369
4562
  }
3370
4563
  declare function Columns({
@@ -3376,6 +4569,12 @@ declare function Columns({
3376
4569
  ...props
3377
4570
  }: ColumnsProps): import("react").JSX.Element;
3378
4571
  interface CenterProps extends HTMLAttributes<HTMLDivElement> {
4572
+ /**
4573
+ * CSS max-width value
4574
+ *
4575
+ * @defaultValue `48rem`
4576
+ * @see the component manifest
4577
+ */
3379
4578
  maxWidth?: string;
3380
4579
  }
3381
4580
  declare function Center({
@@ -3385,6 +4584,12 @@ declare function Center({
3385
4584
  ...props
3386
4585
  }: CenterProps): import("react").JSX.Element;
3387
4586
  interface SpacerProps extends HTMLAttributes<HTMLDivElement> {
4587
+ /**
4588
+ * Spacing token step
4589
+ *
4590
+ * @defaultValue `4`
4591
+ * @see the component manifest
4592
+ */
3388
4593
  size?: SpaceStep;
3389
4594
  }
3390
4595
  declare function Spacer({
@@ -3394,8 +4599,20 @@ declare function Spacer({
3394
4599
  ...props
3395
4600
  }: SpacerProps): import("react").JSX.Element;
3396
4601
  interface AutoGridProps extends HTMLAttributes<HTMLDivElement> {
3397
- /** Minimum track size before items wrap to fewer columns. */
4602
+ /**
4603
+ * Minimum track width before items wrap to fewer columns
4604
+ *
4605
+ * @defaultValue `"16rem"`
4606
+ * @see the component manifest
4607
+ */
3398
4608
  min?: string;
4609
+ /**
4610
+ * Spacing token step. Maps to the --cascivo-space-* scale, which intentionally skips
4611
+ * 7/9/11 — use 6 or 8.
4612
+ *
4613
+ * @defaultValue `4`
4614
+ * @see the component manifest
4615
+ */
3399
4616
  gap?: SpaceStep;
3400
4617
  className?: string | undefined;
3401
4618
  }
@@ -3406,6 +4623,20 @@ declare function AutoGrid({
3406
4623
  style,
3407
4624
  ...props
3408
4625
  }: AutoGridProps): import("react").JSX.Element;
4626
+ interface PageHeaderProps {
4627
+ title: string;
4628
+ description?: string;
4629
+ breadcrumb?: ReactNode;
4630
+ actions?: ReactNode;
4631
+ className?: string;
4632
+ }
4633
+ declare function PageHeader({
4634
+ title,
4635
+ description,
4636
+ breadcrumb,
4637
+ actions,
4638
+ className
4639
+ }: PageHeaderProps): import("react").JSX.Element;
3409
4640
  /**
3410
4641
  * Set the active theme imperatively, from anywhere. Persists the choice and
3411
4642
  * drives the `data-theme` attribute through the mounted {@link ThemeProvider}.
@@ -3522,4 +4753,4 @@ declare function themePreloadScript(options?: {
3522
4753
  attribute?: string;
3523
4754
  defaultTheme?: string;
3524
4755
  }): string;
3525
- 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, 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, 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, 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, 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 UsePopoverOptions, type UsePopoverReturn, type UseTocFromRegionOptions, User, UserProps, VisuallyHidden, VisuallyHiddenProps, createForm, dismissAllToasts, fuzzyMatch, fuzzyScore, getLinkComponent, setLinkComponent, setTheme, themePreloadScript, themeSignal, treeViewMessages, useForm, usePopover, useTheme, useToast, useTocFromRegion };
4756
+ 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, 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 };