@cascivo/react 0.12.0 → 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 (95) hide show
  1. package/dist/app-shell/app-shell.js +24 -23
  2. package/dist/badge/badge.js +17 -10
  3. package/dist/button/button.css +1 -1
  4. package/dist/button/button.module.js +1 -1
  5. package/dist/card/card.css +1 -1
  6. package/dist/card/card.module.js +8 -8
  7. package/dist/combobox/combobox.css +1 -1
  8. package/dist/combobox/combobox.module.js +15 -15
  9. package/dist/data-table/data-table.css +1 -1
  10. package/dist/data-table/data-table.js +7 -1
  11. package/dist/data-table/data-table.module.js +29 -29
  12. package/dist/date-picker/date-picker.css +1 -1
  13. package/dist/date-picker/date-picker.module.js +19 -19
  14. package/dist/file-uploader/file-uploader.css +1 -1
  15. package/dist/file-uploader/file-uploader.module.js +14 -14
  16. package/dist/filter/filter.js +10 -9
  17. package/dist/icon-button/icon-button.css +1 -1
  18. package/dist/icon-button/icon-button.module.js +1 -1
  19. package/dist/index.d.ts +1273 -57
  20. package/dist/input/input.css +1 -1
  21. package/dist/input/input.module.js +5 -5
  22. package/dist/item/item.css +1 -1
  23. package/dist/item/item.module.js +6 -6
  24. package/dist/layouts/src/page-header/page-header.css +1 -0
  25. package/dist/layouts/src/page-header/page-header.js +33 -0
  26. package/dist/layouts/src/page-header/page-header.module.js +13 -0
  27. package/dist/link/link.js +12 -12
  28. package/dist/multi-select/multi-select.css +1 -1
  29. package/dist/multi-select/multi-select.module.js +11 -11
  30. package/dist/node/app-shell/app-shell.js +24 -23
  31. package/dist/node/badge/badge.js +17 -10
  32. package/dist/node/button/button.module.js +1 -1
  33. package/dist/node/card/card.module.js +8 -8
  34. package/dist/node/combobox/combobox.module.js +15 -15
  35. package/dist/node/data-table/data-table.js +7 -1
  36. package/dist/node/data-table/data-table.module.js +29 -29
  37. package/dist/node/date-picker/date-picker.module.js +19 -19
  38. package/dist/node/file-uploader/file-uploader.module.js +14 -14
  39. package/dist/node/filter/filter.js +10 -9
  40. package/dist/node/icon-button/icon-button.module.js +1 -1
  41. package/dist/node/input/input.module.js +5 -5
  42. package/dist/node/item/item.module.js +6 -6
  43. package/dist/node/layouts/src/page-header/page-header.js +33 -0
  44. package/dist/node/layouts/src/page-header/page-header.module.js +12 -0
  45. package/dist/node/link/link.js +12 -12
  46. package/dist/node/multi-select/multi-select.module.js +11 -11
  47. package/dist/node/notification/notification.js +50 -44
  48. package/dist/node/notification/notification.module.js +7 -7
  49. package/dist/node/number-input/number-input.module.js +8 -8
  50. package/dist/node/otp-input/otp-input.module.js +2 -2
  51. package/dist/node/overflow-menu/overflow-menu.js +18 -13
  52. package/dist/node/password-input/password-input.module.js +7 -7
  53. package/dist/node/progress/progress.js +3 -2
  54. package/dist/node/react/src/index.js +4 -3
  55. package/dist/node/search/search.module.js +5 -5
  56. package/dist/node/stat/stat.js +6 -5
  57. package/dist/node/stat/stat.module.js +7 -7
  58. package/dist/node/status/status.js +18 -11
  59. package/dist/node/steps/steps.js +23 -23
  60. package/dist/node/structured-list/structured-list.js +14 -13
  61. package/dist/node/tag/tag.js +22 -15
  62. package/dist/node/tags-input/tags-input.module.js +4 -4
  63. package/dist/node/tile/tile.module.js +3 -3
  64. package/dist/node/time-picker/time-picker.module.js +5 -5
  65. package/dist/node/timeline/timeline.js +22 -16
  66. package/dist/notification/notification.css +1 -1
  67. package/dist/notification/notification.js +50 -44
  68. package/dist/notification/notification.module.js +7 -7
  69. package/dist/number-input/number-input.css +1 -1
  70. package/dist/number-input/number-input.module.js +8 -8
  71. package/dist/otp-input/otp-input.css +1 -1
  72. package/dist/otp-input/otp-input.module.js +2 -2
  73. package/dist/overflow-menu/overflow-menu.js +18 -13
  74. package/dist/password-input/password-input.css +1 -1
  75. package/dist/password-input/password-input.module.js +7 -7
  76. package/dist/progress/progress.js +3 -2
  77. package/dist/react/src/index.js +4 -3
  78. package/dist/search/search.css +1 -1
  79. package/dist/search/search.module.js +5 -5
  80. package/dist/stat/stat.css +1 -1
  81. package/dist/stat/stat.js +6 -5
  82. package/dist/stat/stat.module.js +7 -7
  83. package/dist/status/status.js +18 -11
  84. package/dist/steps/steps.js +23 -23
  85. package/dist/structured-list/structured-list.js +14 -13
  86. package/dist/styles.css +33 -19
  87. package/dist/tag/tag.js +22 -15
  88. package/dist/tags-input/tags-input.css +1 -1
  89. package/dist/tags-input/tags-input.module.js +4 -4
  90. package/dist/tile/tile.css +1 -1
  91. package/dist/tile/tile.module.js +3 -3
  92. package/dist/time-picker/time-picker.css +1 -1
  93. package/dist/time-picker/time-picker.module.js +5 -5
  94. package/dist/timeline/timeline.js +22 -16
  95. package/package.json +4 -4
package/dist/index.d.ts CHANGED
@@ -21,12 +21,24 @@
21
21
  * Docs: https://cascivo.com/llms.txt — or fully offline, no website needed:
22
22
  * npx -y @cascivo/docs (index; `npx @cascivo/docs <component>` for one doc)
23
23
  */
24
- import { DismissableLayer, DismissableLayerProps, ErrorBoundary, FocusScope, LinkComponent, LinkComponentProps, Machine, MachineConfig, Portal, Presence, RovingOrientation, Signal, Slot, SlotProps, SpaceStep, SuspenseBoundary, UseClipboardOptions, UseClipboardReturn, UseControllableSignalOptions, UseDisclosureOptions, UseDisclosureReturn, VisuallyHidden, VisuallyHiddenProps, batch, cn, composeRefs, computePosition, computed, createMachine, createScope, createStreamBuffer, effect, getLinkComponent, mergeProps, setLinkComponent, signal, useAnchorPosition, useClipboard, useComputed, useControllableSignal, useDisclosure, useEffectPropSignal, useId, useMachine, useMediaQuery, useRovingFocus, useScope, useScrollLock, useSignal, useSignalEffect, useSignals, useStreamBuffer, useTypeahead } from "@cascivo/core";
24
+ import { DismissableLayer, DismissableLayerProps, ErrorBoundary, FocusScope, LinkComponent, LinkComponentProps, Machine, MachineConfig, Portal, Presence, ProgressInput, RovingOrientation, Signal, Slot, SlotProps, SpaceStep, SuspenseBoundary, ToneInput, UseClipboardOptions, UseClipboardReturn, UseControllableSignalOptions, UseDisclosureOptions, UseDisclosureReturn, VisuallyHidden, VisuallyHiddenProps, batch, cn, composeRefs, computePosition, computed, createMachine, createScope, createStreamBuffer, effect, getLinkComponent, mergeProps, setLinkComponent, signal, useAnchorPosition, useClipboard, useComputed, useControllableSignal, useDisclosure, useEffectPropSignal, useId, useMachine, useMediaQuery, useRovingFocus, useScope, useScrollLock, useSignal, useSignalEffect, useSignals, useStreamBuffer, useTypeahead } from "@cascivo/core";
25
25
  import { AnchorHTMLAttributes, ButtonHTMLAttributes, FormHTMLAttributes, HTMLAttributes, ImgHTMLAttributes, InputHTMLAttributes, LabelHTMLAttributes, LiHTMLAttributes, MouseEvent, ReactElement, ReactNode, RefObject, SelectHTMLAttributes, TextareaHTMLAttributes, TimeHTMLAttributes } from "react";
26
26
 
27
27
  interface ButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {
28
+ /**
29
+ * Selects the visual style variant.
30
+ *
31
+ * @defaultValue `primary`
32
+ * @see the component manifest
33
+ */
28
34
  variant?: 'primary' | 'secondary' | 'ghost' | 'destructive';
29
35
  size?: 'sm' | 'md' | 'lg';
36
+ /**
37
+ * When true, shows a loading state.
38
+ *
39
+ * @defaultValue `false`
40
+ * @see the component manifest
41
+ */
30
42
  loading?: boolean;
31
43
  /**
32
44
  * Render the single child element instead of a native `<button>` so the button
@@ -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({
@@ -109,8 +133,16 @@ declare function CardFooter({
109
133
  children,
110
134
  ...props
111
135
  }: CardFooterProps): import("react").JSX.Element;
136
+ /** Badge-only looks that aren't a severity tone. */
137
+ type BadgeShape = 'secondary' | 'outline' | 'primary';
112
138
  interface BadgeProps extends HTMLAttributes<HTMLSpanElement> {
113
- 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;
114
146
  size?: 'sm' | 'md';
115
147
  }
116
148
  declare function Badge({
@@ -121,6 +153,12 @@ declare function Badge({
121
153
  ...props
122
154
  }: BadgeProps): import("react").JSX.Element;
123
155
  interface ModalProps {
156
+ /**
157
+ * Whether the component is open (controlled).
158
+ *
159
+ * @defaultValue `false`
160
+ * @see the component manifest
161
+ */
124
162
  open?: boolean;
125
163
  onClose?: () => void;
126
164
  title?: string;
@@ -128,7 +166,12 @@ interface ModalProps {
128
166
  children?: ReactNode;
129
167
  className?: string;
130
168
  size?: 'sm' | 'md' | 'lg';
131
- /** 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
+ */
132
175
  draggable?: boolean;
133
176
  }
134
177
  declare function Modal({
@@ -143,6 +186,12 @@ declare function Modal({
143
186
  }: ModalProps): import("react").JSX.Element;
144
187
  interface SpinnerProps extends HTMLAttributes<HTMLSpanElement> {
145
188
  size?: 'sm' | 'md' | 'lg';
189
+ /**
190
+ * Accessible label announced by screen readers
191
+ *
192
+ * @defaultValue `Loading`
193
+ * @see the component manifest
194
+ */
146
195
  label?: string;
147
196
  }
148
197
  declare function Spinner({
@@ -152,7 +201,19 @@ declare function Spinner({
152
201
  ...props
153
202
  }: SpinnerProps): import("react").JSX.Element;
154
203
  interface SeparatorProps extends HTMLAttributes<HTMLElement> {
204
+ /**
205
+ * Layout orientation of the component.
206
+ *
207
+ * @defaultValue `horizontal`
208
+ * @see the component manifest
209
+ */
155
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
+ */
156
217
  decorative?: boolean;
157
218
  }
158
219
  declare function Separator({
@@ -162,9 +223,21 @@ declare function Separator({
162
223
  ...props
163
224
  }: SeparatorProps): import("react").JSX.Element;
164
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
+ */
165
232
  variant?: 'default' | 'info' | 'success' | 'warning' | 'destructive';
166
233
  title?: string;
167
234
  icon?: ReactNode;
235
+ /**
236
+ * When true, shows a control to dismiss the component.
237
+ *
238
+ * @defaultValue `false`
239
+ * @see the component manifest
240
+ */
168
241
  dismissible?: boolean;
169
242
  onDismiss?: () => void;
170
243
  action?: {
@@ -185,6 +258,12 @@ declare function Alert({
185
258
  }: AlertProps): import("react").JSX.Element | null;
186
259
  interface AvatarProps extends HTMLAttributes<HTMLSpanElement> {
187
260
  src?: string;
261
+ /**
262
+ * Alternative text describing the image.
263
+ *
264
+ * @defaultValue ``
265
+ * @see the component manifest
266
+ */
188
267
  alt?: string;
189
268
  /** Full name — used to derive initials for the fallback and as the accessible label. */
190
269
  name?: string;
@@ -212,9 +291,19 @@ interface AvatarGroupProps extends HTMLAttributes<HTMLDivElement> {
212
291
  max?: number;
213
292
  /** Override the total count used for the +N chip (when more exist than rendered). */
214
293
  total?: number;
215
- /** Overlap amount. */
294
+ /**
295
+ * Spacing between items.
296
+ *
297
+ * @defaultValue `md`
298
+ * @see the component manifest
299
+ */
216
300
  spacing?: 'sm' | 'md' | 'lg';
217
- /** 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
+ */
218
307
  isGrid?: boolean;
219
308
  labels?: AvatarGroupLabels;
220
309
  /** The <Avatar> children. */
@@ -252,17 +341,38 @@ declare function User({
252
341
  }: UserProps): import("react").JSX.Element;
253
342
  interface ImageProps extends Omit<ImgHTMLAttributes<HTMLImageElement>, 'placeholder'> {
254
343
  src?: string;
344
+ /**
345
+ * Alternative text describing the image.
346
+ *
347
+ * @defaultValue ``
348
+ * @see the component manifest
349
+ */
255
350
  alt?: string;
256
351
  /** Image shown if `src` fails to load. Without it, a neutral fallback box renders. */
257
352
  fallbackSrc?: string;
258
353
  width?: string | number;
259
354
  height?: string | number;
260
355
  radius?: 'none' | 'sm' | 'md' | 'lg' | 'full';
261
- /** 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
+ */
262
362
  zoom?: boolean;
263
- /** 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
+ */
264
369
  removeWrapper?: boolean;
265
- /** 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
+ */
266
376
  isBlurred?: boolean;
267
377
  }
268
378
  declare function Image({
@@ -300,6 +410,12 @@ declare function Textarea({
300
410
  interface SelectOption {
301
411
  value: string;
302
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
+ */
303
419
  disabled?: boolean;
304
420
  }
305
421
  interface SelectProps extends Omit<SelectHTMLAttributes<HTMLSelectElement>, 'size'> {
@@ -327,6 +443,12 @@ declare function Select({
327
443
  }: SelectProps): import("react").JSX.Element;
328
444
  interface CheckboxProps extends InputHTMLAttributes<HTMLInputElement> {
329
445
  label?: string;
446
+ /**
447
+ * When true, renders the mixed/indeterminate state.
448
+ *
449
+ * @defaultValue `false`
450
+ * @see the component manifest
451
+ */
330
452
  indeterminate?: boolean;
331
453
  }
332
454
  declare function Checkbox({
@@ -369,6 +491,12 @@ declare function RadioGroup({
369
491
  }: RadioGroupProps): import("react").JSX.Element;
370
492
  interface ToggleProps extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, 'onChange'> {
371
493
  checked?: boolean;
494
+ /**
495
+ * Whether the control is checked on first render (uncontrolled).
496
+ *
497
+ * @defaultValue `false`
498
+ * @see the component manifest
499
+ */
372
500
  defaultChecked?: boolean;
373
501
  /** Called with the new checked state when the switch is toggled. */
374
502
  onValueChange?: (checked: boolean) => void;
@@ -409,8 +537,20 @@ declare function Slider({
409
537
  }: SliderProps): import("react").JSX.Element;
410
538
  interface TooltipProps {
411
539
  content: ReactNode;
540
+ /**
541
+ * Placement relative to the trigger.
542
+ *
543
+ * @defaultValue `top`
544
+ * @see the component manifest
545
+ */
412
546
  placement?: 'top' | 'right' | 'bottom' | 'left';
413
547
  children: ReactElement;
548
+ /**
549
+ * Milliseconds to wait before showing
550
+ *
551
+ * @defaultValue `200`
552
+ * @see the component manifest
553
+ */
414
554
  delay?: number;
415
555
  }
416
556
  declare function Tooltip({
@@ -430,6 +570,12 @@ interface DropdownProps {
430
570
  trigger: ReactElement;
431
571
  items: DropdownItem[];
432
572
  onSelect?: (value: string) => void;
573
+ /**
574
+ * Placement relative to the trigger.
575
+ *
576
+ * @defaultValue `bottom-start`
577
+ * @see the component manifest
578
+ */
433
579
  placement?: 'bottom-start' | 'bottom-end';
434
580
  open?: boolean;
435
581
  onOpenChange?: (open: boolean) => void;
@@ -446,7 +592,19 @@ type ToastVariant = 'default' | 'success' | 'warning' | 'destructive';
446
592
  interface ToastOptions {
447
593
  title: string;
448
594
  description?: string;
595
+ /**
596
+ * Selects the visual style variant.
597
+ *
598
+ * @defaultValue `default`
599
+ * @see the component manifest
600
+ */
449
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
+ */
450
608
  duration?: number;
451
609
  }
452
610
  declare function enqueue(options: ToastOptions): void;
@@ -546,7 +704,12 @@ interface ActionSheetProps {
546
704
  title?: ReactNode;
547
705
  /** Optional supporting message under the title. */
548
706
  description?: ReactNode;
549
- /** 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
+ */
550
713
  showCancel?: boolean;
551
714
  labels?: {
552
715
  cancel?: string;
@@ -582,14 +745,37 @@ declare function Kbd({
582
745
  ...props
583
746
  }: KbdProps): import("react").JSX.Element;
584
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
+ */
585
752
  variant?: 'standalone' | 'inline';
586
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
+ */
587
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;
588
773
  }
589
774
  declare function Link({
590
775
  variant,
591
776
  size,
592
777
  external,
778
+ asChild,
593
779
  className,
594
780
  children,
595
781
  ...props
@@ -602,7 +788,12 @@ interface BreadcrumbProps {
602
788
  items: BreadcrumbItem[];
603
789
  maxVisible?: number;
604
790
  className?: string;
605
- /** Accessible label for the nav landmark */
791
+ /**
792
+ * Accessible label for the component.
793
+ *
794
+ * @defaultValue `Breadcrumb`
795
+ * @see the component manifest
796
+ */
606
797
  ariaLabel?: string;
607
798
  }
608
799
  declare function Breadcrumb({
@@ -664,6 +855,12 @@ interface HeaderProps extends HTMLAttributes<HTMLElement> {
664
855
  brand?: ReactNode;
665
856
  links?: HeaderLink[];
666
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
+ */
667
864
  sticky?: boolean;
668
865
  labels?: HeaderLabels;
669
866
  }
@@ -763,12 +960,48 @@ interface SideNavProps {
763
960
  items?: SideNavItem[];
764
961
  groups?: SideNavGroup[];
765
962
  collapsed?: boolean;
963
+ /**
964
+ * Whether the rail is collapsed on first render (uncontrolled).
965
+ *
966
+ * @defaultValue `false`
967
+ * @see the component manifest
968
+ */
766
969
  defaultCollapsed?: boolean;
767
970
  onCollapsedChange?: (collapsed: boolean) => void;
971
+ /**
972
+ * Accessible label for the component.
973
+ *
974
+ * @defaultValue `Side navigation`
975
+ * @see the component manifest
976
+ */
768
977
  ariaLabel?: string;
978
+ /**
979
+ * Accessible label for the collapse control.
980
+ *
981
+ * @defaultValue `Collapse navigation`
982
+ * @see the component manifest
983
+ */
769
984
  collapseLabel?: string;
985
+ /**
986
+ * Accessible label for the expand control.
987
+ *
988
+ * @defaultValue `Expand navigation`
989
+ * @see the component manifest
990
+ */
770
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
+ */
771
998
  expandOnHover?: boolean;
999
+ /**
1000
+ * Show the collapse/expand toggle control.
1001
+ *
1002
+ * @defaultValue `true`
1003
+ * @see the component manifest
1004
+ */
772
1005
  showCollapseToggle?: boolean;
773
1006
  /** Content rendered above the items, inside the item padding context. */
774
1007
  header?: ReactNode;
@@ -804,6 +1037,12 @@ interface PaginationProps {
804
1037
  totalItems: number;
805
1038
  onPageChange: (page: number) => void;
806
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
+ */
807
1046
  pageSizeOptions?: number[];
808
1047
  labels?: PaginationLabels;
809
1048
  className?: string;
@@ -825,6 +1064,12 @@ interface ProgressStep {
825
1064
  interface ProgressIndicatorProps {
826
1065
  steps: ProgressStep[];
827
1066
  currentIndex: number;
1067
+ /**
1068
+ * When true, lays the steps out vertically.
1069
+ *
1070
+ * @defaultValue `false`
1071
+ * @see the component manifest
1072
+ */
828
1073
  vertical?: boolean;
829
1074
  className?: string;
830
1075
  }
@@ -835,9 +1080,20 @@ declare function ProgressIndicator({
835
1080
  className
836
1081
  }: ProgressIndicatorProps): import("react").JSX.Element;
837
1082
  interface TagProps extends HTMLAttributes<HTMLSpanElement> {
838
- 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;
839
1089
  size?: 'sm' | 'md';
840
1090
  onDismiss?: () => void;
1091
+ /**
1092
+ * Accessible label for the dismiss button.
1093
+ *
1094
+ * @defaultValue `Remove`
1095
+ * @see the component manifest
1096
+ */
841
1097
  dismissLabel?: string;
842
1098
  }
843
1099
  declare function Tag({
@@ -850,9 +1106,21 @@ declare function Tag({
850
1106
  ...props
851
1107
  }: TagProps): import("react").JSX.Element;
852
1108
  interface SkeletonProps extends HTMLAttributes<HTMLDivElement> {
1109
+ /**
1110
+ * Selects the visual style variant.
1111
+ *
1112
+ * @defaultValue `text`
1113
+ * @see the component manifest
1114
+ */
853
1115
  variant?: 'text' | 'circle' | 'rect';
854
1116
  width?: string;
855
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
+ */
856
1124
  lines?: number;
857
1125
  }
858
1126
  declare function Skeleton({
@@ -867,10 +1135,22 @@ declare function Skeleton({
867
1135
  interface ProgressBarProps {
868
1136
  /** Current value from 0 to max. Omit for an indeterminate bar. */
869
1137
  value?: number;
1138
+ /**
1139
+ * Maximum allowed value.
1140
+ *
1141
+ * @defaultValue `100`
1142
+ * @see the component manifest
1143
+ */
870
1144
  max?: number;
871
1145
  label?: string;
872
1146
  helperText?: string;
873
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
+ */
874
1154
  status?: 'active' | 'success' | 'error';
875
1155
  className?: string;
876
1156
  }
@@ -917,7 +1197,12 @@ interface FabProps {
917
1197
  onClick?: () => void;
918
1198
  /** Speed-dial actions revealed above the button when opened. */
919
1199
  actions?: FabAction[];
920
- /** Screen corner to anchor to. */
1200
+ /**
1201
+ * Position of the component.
1202
+ *
1203
+ * @defaultValue `bottom-end`
1204
+ * @see the component manifest
1205
+ */
921
1206
  position?: 'bottom-end' | 'bottom-start';
922
1207
  /** Controlled speed-dial open state. */
923
1208
  open?: boolean;
@@ -947,15 +1232,41 @@ declare function Fab({
947
1232
  }: FabProps): import("react").JSX.Element;
948
1233
  interface OverflowMenuItem {
949
1234
  label: string;
950
- 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;
951
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
+ */
952
1251
  disabled?: boolean;
953
1252
  destructive?: boolean;
954
1253
  }
955
1254
  interface OverflowMenuProps {
956
1255
  items: OverflowMenuItem[];
957
1256
  onSelect?: (value: string) => void;
1257
+ /**
1258
+ * Placement relative to the trigger.
1259
+ *
1260
+ * @defaultValue `bottom-end`
1261
+ * @see the component manifest
1262
+ */
958
1263
  placement?: 'bottom-start' | 'bottom-end';
1264
+ /**
1265
+ * Accessible label for the component.
1266
+ *
1267
+ * @defaultValue `More actions`
1268
+ * @see the component manifest
1269
+ */
959
1270
  ariaLabel?: string;
960
1271
  size?: 'sm' | 'md';
961
1272
  disabled?: boolean;
@@ -978,11 +1289,44 @@ interface SearchProps {
978
1289
  /** @deprecated Use `onValueChange` — it receives the same string. */
979
1290
  onChange?: (value: string) => void;
980
1291
  onSearch?: (value: string) => void;
1292
+ /**
1293
+ * Debounce delay (ms) before onSearch fires.
1294
+ *
1295
+ * @defaultValue `300`
1296
+ * @see the component manifest
1297
+ */
981
1298
  debounceMs?: number;
1299
+ /**
1300
+ * Placeholder text shown when the field is empty.
1301
+ *
1302
+ * @defaultValue `Search`
1303
+ * @see the component manifest
1304
+ */
982
1305
  placeholder?: string;
983
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
+ */
984
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
+ */
985
1323
  disabled?: boolean;
1324
+ /**
1325
+ * Accessible label for the clear button.
1326
+ *
1327
+ * @defaultValue `Clear search`
1328
+ * @see the component manifest
1329
+ */
986
1330
  clearLabel?: string;
987
1331
  id?: string;
988
1332
  className?: string;
@@ -1011,6 +1355,12 @@ interface NumberInputProps extends Omit<InputHTMLAttributes<HTMLInputElement>, '
1011
1355
  onChange?: (value: number | null) => void;
1012
1356
  min?: number;
1013
1357
  max?: number;
1358
+ /**
1359
+ * Increment between allowed values.
1360
+ *
1361
+ * @defaultValue `1`
1362
+ * @see the component manifest
1363
+ */
1014
1364
  step?: number;
1015
1365
  precision?: number;
1016
1366
  formatOptions?: Intl.NumberFormatOptions;
@@ -1018,7 +1368,19 @@ interface NumberInputProps extends Omit<InputHTMLAttributes<HTMLInputElement>, '
1018
1368
  hint?: string;
1019
1369
  error?: string;
1020
1370
  size?: 'sm' | 'md' | 'lg';
1371
+ /**
1372
+ * Accessible label for the increment button.
1373
+ *
1374
+ * @defaultValue `Increment`
1375
+ * @see the component manifest
1376
+ */
1021
1377
  incrementLabel?: string;
1378
+ /**
1379
+ * Accessible label for the decrement button.
1380
+ *
1381
+ * @defaultValue `Decrement`
1382
+ * @see the component manifest
1383
+ */
1022
1384
  decrementLabel?: string;
1023
1385
  }
1024
1386
  declare function NumberInput({
@@ -1051,7 +1413,23 @@ interface Column<Row> {
1051
1413
  sortable?: boolean;
1052
1414
  render?: (row: Row) => ReactNode;
1053
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
+ */
1054
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;
1055
1433
  }
1056
1434
  type SortDirection = 'asc' | 'desc';
1057
1435
  interface SortState {
@@ -1076,6 +1454,12 @@ interface DataTableProps<Row> {
1076
1454
  defaultSort?: SortState;
1077
1455
  sortMode?: 'client' | 'server';
1078
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
+ */
1079
1463
  searchable?: boolean;
1080
1464
  pagination?: {
1081
1465
  pageSize: number;
@@ -1093,17 +1477,59 @@ interface DataTableProps<Row> {
1093
1477
  }[];
1094
1478
  renderExpandedRow?: (row: Row) => ReactNode;
1095
1479
  density?: 'compact' | 'normal' | 'relaxed';
1480
+ /**
1481
+ * When true, applies alternating row striping.
1482
+ *
1483
+ * @defaultValue `false`
1484
+ * @see the component manifest
1485
+ */
1096
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
+ */
1097
1493
  stickyHeader?: boolean;
1494
+ /**
1495
+ * When true, shows a loading state.
1496
+ *
1497
+ * @defaultValue `false`
1498
+ * @see the component manifest
1499
+ */
1098
1500
  loading?: boolean;
1099
1501
  emptyState?: ReactNode;
1100
1502
  title?: string;
1101
1503
  description?: string;
1102
1504
  labels?: DataTableLabels;
1103
1505
  className?: string;
1506
+ /**
1507
+ * Render only the visible row window for large datasets.
1508
+ *
1509
+ * @defaultValue `false`
1510
+ * @see the component manifest
1511
+ */
1104
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
+ */
1105
1519
  rowHeight?: number;
1520
+ /**
1521
+ * Number of rows rendered in the virtualized window.
1522
+ *
1523
+ * @defaultValue `20`
1524
+ * @see the component manifest
1525
+ */
1106
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
+ */
1107
1533
  overscan?: number;
1108
1534
  }
1109
1535
  declare function DataTable<Row>({
@@ -1134,6 +1560,12 @@ declare function DataTable<Row>({
1134
1560
  overscan
1135
1561
  }: DataTableProps<Row>): import("react").JSX.Element;
1136
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
+ */
1137
1569
  placeholder?: string;
1138
1570
  groups: CommandGroup[];
1139
1571
  }
@@ -1188,12 +1620,43 @@ interface CommandMenuProps {
1188
1620
  onOpenChange: (open: boolean) => void;
1189
1621
  groups: CommandGroup[];
1190
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
+ */
1191
1629
  emptyLabel?: string;
1630
+ /**
1631
+ * Global Cmd/Ctrl+K toggles the menu via onOpenChange
1632
+ *
1633
+ * @defaultValue `true`
1634
+ * @see the component manifest
1635
+ */
1192
1636
  hotkey?: boolean;
1637
+ /**
1638
+ * Text label for the control.
1639
+ *
1640
+ * @defaultValue `Command menu`
1641
+ * @see the component manifest
1642
+ */
1193
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
+ */
1194
1650
  loading?: boolean;
1195
1651
  onQueryChange?: (query: string) => void;
1196
- /** 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
+ */
1197
1660
  scopes?: CommandScope[];
1198
1661
  className?: string;
1199
1662
  }
@@ -1296,6 +1759,12 @@ declare function Form<T extends Record<string, unknown>>({
1296
1759
  interface ComboboxOption {
1297
1760
  value: string;
1298
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
+ */
1299
1768
  disabled?: boolean;
1300
1769
  }
1301
1770
  interface ComboboxLabels {
@@ -1312,7 +1781,19 @@ interface ComboboxProps {
1312
1781
  onValueChange?: (value: string | undefined) => void;
1313
1782
  /** @deprecated Use `onValueChange` — it receives the same `string | undefined`. */
1314
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
+ */
1315
1790
  clearable?: boolean;
1791
+ /**
1792
+ * When true, shows a search/filter input.
1793
+ *
1794
+ * @defaultValue `true`
1795
+ * @see the component manifest
1796
+ */
1316
1797
  searchable?: boolean;
1317
1798
  label?: string;
1318
1799
  hint?: string;
@@ -1355,11 +1836,29 @@ interface DatePickerProps {
1355
1836
  onChange?: (value: string | undefined) => void;
1356
1837
  min?: string;
1357
1838
  max?: string;
1839
+ /**
1840
+ * Shows a clear button
1841
+ *
1842
+ * @defaultValue `false`
1843
+ * @see the component manifest
1844
+ */
1358
1845
  clearable?: boolean;
1359
1846
  label?: string;
1360
1847
  hint?: string;
1361
1848
  error?: string;
1849
+ /**
1850
+ * Field size
1851
+ *
1852
+ * @defaultValue `md`
1853
+ * @see the component manifest
1854
+ */
1362
1855
  size?: 'sm' | 'md' | 'lg';
1856
+ /**
1857
+ * Disables the picker
1858
+ *
1859
+ * @defaultValue `false`
1860
+ * @see the component manifest
1861
+ */
1363
1862
  disabled?: boolean;
1364
1863
  labels?: DatePickerLabels;
1365
1864
  className?: string;
@@ -1398,9 +1897,21 @@ interface FileUploaderLabels {
1398
1897
  error?: string;
1399
1898
  }
1400
1899
  interface FileUploaderProps {
1900
+ /**
1901
+ * Controlled file list
1902
+ *
1903
+ * @defaultValue `[]`
1904
+ * @see the component manifest
1905
+ */
1401
1906
  files?: UploaderFile[];
1402
1907
  onFilesAdded?: (files: File[]) => void;
1403
1908
  onRemove?: (id: string) => void;
1909
+ /**
1910
+ * Allow multiple files
1911
+ *
1912
+ * @defaultValue `false`
1913
+ * @see the component manifest
1914
+ */
1404
1915
  multiple?: boolean;
1405
1916
  accept?: string;
1406
1917
  maxSize?: number;
@@ -1408,6 +1919,12 @@ interface FileUploaderProps {
1408
1919
  label?: string;
1409
1920
  hint?: string;
1410
1921
  labels?: FileUploaderLabels;
1922
+ /**
1923
+ * Disables the upload zone
1924
+ *
1925
+ * @defaultValue `false`
1926
+ * @see the component manifest
1927
+ */
1411
1928
  disabled?: boolean;
1412
1929
  className?: string;
1413
1930
  }
@@ -1532,6 +2049,12 @@ interface AlertDialogProps {
1532
2049
  onConfirm: () => void;
1533
2050
  onCancel: () => void;
1534
2051
  labels?: AlertDialogLabels;
2052
+ /**
2053
+ * Selects the visual style variant.
2054
+ *
2055
+ * @defaultValue `default`
2056
+ * @see the component manifest
2057
+ */
1535
2058
  variant?: 'destructive' | 'default';
1536
2059
  }
1537
2060
  declare function AlertDialog({
@@ -1549,6 +2072,12 @@ interface SheetProps {
1549
2072
  /** Optional heading. Accepts rich nodes; when present it labels the dialog via `aria-labelledby`. */
1550
2073
  title?: ReactNode;
1551
2074
  children: ReactNode;
2075
+ /**
2076
+ * Edge the component is anchored to.
2077
+ *
2078
+ * @defaultValue `end`
2079
+ * @see the component manifest
2080
+ */
1552
2081
  side?: 'start' | 'end' | 'top' | 'bottom';
1553
2082
  }
1554
2083
  declare function Sheet({
@@ -1572,7 +2101,12 @@ interface BottomSheetProps {
1572
2101
  snapPoints?: number[];
1573
2102
  /** Controlled active detent index into `snapPoints`. */
1574
2103
  activeSnap?: number;
1575
- /** 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
+ */
1576
2110
  defaultSnap?: number;
1577
2111
  /** Called when the active detent changes via drag. */
1578
2112
  onSnapChange?: (index: number) => void;
@@ -1631,11 +2165,27 @@ interface ComparisonProps extends Omit<HTMLAttributes<HTMLDivElement>, 'onChange
1631
2165
  before: ReactNode;
1632
2166
  /** Divider position as a percentage 0–100. Controlled when provided. */
1633
2167
  position?: number;
1634
- /** 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
+ */
1635
2174
  defaultPosition?: number;
1636
2175
  onPositionChange?: (position: number) => void;
2176
+ /**
2177
+ * Layout orientation of the component.
2178
+ *
2179
+ * @defaultValue `horizontal`
2180
+ * @see the component manifest
2181
+ */
1637
2182
  orientation?: 'horizontal' | 'vertical';
1638
- /** 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
+ */
1639
2189
  keyboardStep?: number;
1640
2190
  /** Accessible label for the divider slider. */
1641
2191
  label?: string;
@@ -1654,7 +2204,19 @@ declare function Comparison({
1654
2204
  }: ComparisonProps): import("react").JSX.Element;
1655
2205
  interface HoverCardProps {
1656
2206
  children: ReactNode;
2207
+ /**
2208
+ * Delay (ms) before the card opens on hover/focus.
2209
+ *
2210
+ * @defaultValue `300`
2211
+ * @see the component manifest
2212
+ */
1657
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
+ */
1658
2220
  closeDelay?: number;
1659
2221
  }
1660
2222
  declare function HoverCard({
@@ -1682,6 +2244,12 @@ interface PasswordInputLabels {
1682
2244
  strengthLabel?: (level: string) => string;
1683
2245
  }
1684
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
+ */
1685
2253
  showStrengthMeter?: boolean;
1686
2254
  size?: 'sm' | 'md' | 'lg';
1687
2255
  labels?: PasswordInputLabels;
@@ -1700,6 +2268,12 @@ declare function PasswordInput({
1700
2268
  interface MultiSelectOption {
1701
2269
  label: string;
1702
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
+ */
1703
2277
  disabled?: boolean;
1704
2278
  }
1705
2279
  interface MultiSelectLabels {
@@ -1733,6 +2307,12 @@ interface TagsInputProps extends Omit<HTMLAttributes<HTMLDivElement>, 'onChange'
1733
2307
  placeholder?: string;
1734
2308
  validate?: (tag: string) => boolean;
1735
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
+ */
1736
2316
  disabled?: boolean;
1737
2317
  }
1738
2318
  declare function TagsInput({
@@ -1746,9 +2326,21 @@ declare function TagsInput({
1746
2326
  ...props
1747
2327
  }: TagsInputProps): import("react").JSX.Element;
1748
2328
  interface OtpInputProps extends Omit<HTMLAttributes<HTMLDivElement>, 'onChange'> {
2329
+ /**
2330
+ * Number of input cells.
2331
+ *
2332
+ * @defaultValue `6`
2333
+ * @see the component manifest
2334
+ */
1749
2335
  length?: number;
1750
2336
  value: string;
1751
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
+ */
1752
2344
  disabled?: boolean;
1753
2345
  type?: 'numeric' | 'alphanumeric';
1754
2346
  }
@@ -1764,6 +2356,12 @@ declare function OtpInput({
1764
2356
  interface SegmentedControlOption {
1765
2357
  label: string;
1766
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
+ */
1767
2365
  disabled?: boolean;
1768
2366
  }
1769
2367
  interface SegmentedControlProps extends Omit<HTMLAttributes<HTMLDivElement>, 'onChange'> {
@@ -1812,9 +2410,27 @@ interface RatingGroupLabels {
1812
2410
  interface RatingGroupProps extends Omit<HTMLAttributes<HTMLDivElement>, 'onChange'> {
1813
2411
  value: number;
1814
2412
  onValueChange?: (v: number) => void;
2413
+ /**
2414
+ * Maximum allowed value.
2415
+ *
2416
+ * @defaultValue `5`
2417
+ * @see the component manifest
2418
+ */
1815
2419
  max?: number;
1816
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
+ */
1817
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
+ */
1818
2434
  readOnly?: boolean;
1819
2435
  labels?: RatingGroupLabels;
1820
2436
  }
@@ -1833,7 +2449,19 @@ interface EditableProps extends Omit<HTMLAttributes<HTMLDivElement>, 'onChange'>
1833
2449
  value: string;
1834
2450
  onValueChange: (v: string) => void;
1835
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
+ */
1836
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
+ */
1837
2465
  submitOnBlur?: boolean;
1838
2466
  onCancel?: () => void;
1839
2467
  }
@@ -1973,6 +2601,12 @@ type SwitcherEntry = SwitcherLink | {
1973
2601
  };
1974
2602
  interface SwitcherProps {
1975
2603
  items: SwitcherEntry[];
2604
+ /**
2605
+ * Text label for the control.
2606
+ *
2607
+ * @defaultValue `Switch application`
2608
+ * @see the component manifest
2609
+ */
1976
2610
  label?: string;
1977
2611
  className?: string | undefined;
1978
2612
  }
@@ -2019,6 +2653,14 @@ interface StatProps extends Omit<HTMLAttributes<HTMLDivElement>, 'children'> {
2019
2653
  delta?: string;
2020
2654
  trend?: 'up' | 'down' | 'flat';
2021
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;
2022
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. */
2023
2665
  visual?: ReactNode;
2024
2666
  }
@@ -2028,13 +2670,24 @@ declare function Stat({
2028
2670
  delta,
2029
2671
  trend,
2030
2672
  helpText,
2673
+ card,
2031
2674
  visual,
2032
2675
  className,
2033
2676
  ...props
2034
2677
  }: StatProps): import("react").JSX.Element;
2035
2678
  interface StatusProps extends HTMLAttributes<HTMLSpanElement> {
2036
- status?: 'success' | 'warning' | 'error' | 'info' | 'neutral';
2037
- /** 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
+ */
2038
2691
  pulse?: boolean;
2039
2692
  }
2040
2693
  declare function Status({
@@ -2045,6 +2698,12 @@ declare function Status({
2045
2698
  ...props
2046
2699
  }: StatusProps): import("react").JSX.Element;
2047
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
+ */
2048
2707
  targetId?: string;
2049
2708
  labels?: {
2050
2709
  label?: string;
@@ -2058,6 +2717,12 @@ declare function SkipNavLink({
2058
2717
  ...props
2059
2718
  }: SkipNavLinkProps): import("react").JSX.Element;
2060
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
+ */
2061
2726
  id?: string;
2062
2727
  }
2063
2728
  /** Place where the main content starts; the link's hash navigation moves focus here. */
@@ -2070,8 +2735,22 @@ type ProgressSize = 'sm' | 'md' | 'lg';
2070
2735
  interface ProgressProps {
2071
2736
  /** 0–100. Omit for indeterminate state. */
2072
2737
  value?: number;
2738
+ /**
2739
+ * Selects the visual style variant.
2740
+ *
2741
+ * @defaultValue `primary`
2742
+ * @see the component manifest
2743
+ */
2073
2744
  variant?: ProgressVariant;
2074
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}. */
2075
2754
  'aria-label'?: string;
2076
2755
  'aria-describedby'?: string;
2077
2756
  className?: string;
@@ -2081,14 +2760,26 @@ declare function Progress({
2081
2760
  variant,
2082
2761
  size,
2083
2762
  className,
2763
+ ariaLabel,
2084
2764
  ...aria
2085
2765
  }: ProgressProps): import("react").JSX.Element;
2086
2766
  interface ProgressCircleProps extends HTMLAttributes<HTMLDivElement> {
2087
2767
  /** Current value from 0 to max — clamped. */
2088
2768
  value: number;
2769
+ /**
2770
+ * Maximum allowed value.
2771
+ *
2772
+ * @defaultValue `100`
2773
+ * @see the component manifest
2774
+ */
2089
2775
  max?: number;
2090
2776
  size?: 'sm' | 'md' | 'lg';
2091
- /** 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
+ */
2092
2783
  showValue?: boolean;
2093
2784
  /** Accessible name for the progressbar. */
2094
2785
  label?: string;
@@ -2105,6 +2796,12 @@ declare function ProgressCircle({
2105
2796
  type HeadingLevel = 1 | 2 | 3 | 4 | 5 | 6;
2106
2797
  type HeadingSize = 'sm' | 'md' | 'lg' | 'xl' | '2xl';
2107
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
+ */
2108
2805
  level?: HeadingLevel;
2109
2806
  size?: HeadingSize;
2110
2807
  }
@@ -2116,9 +2813,21 @@ declare function Heading({
2116
2813
  ...props
2117
2814
  }: HeadingProps): import("react").JSX.Element;
2118
2815
  interface TextProps extends HTMLAttributes<HTMLElement> {
2816
+ /**
2817
+ * The HTML element to render as.
2818
+ *
2819
+ * @defaultValue `p`
2820
+ * @see the component manifest
2821
+ */
2119
2822
  as?: 'p' | 'span' | 'div';
2120
2823
  size?: 'sm' | 'md' | 'lg';
2121
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
+ */
2122
2831
  muted?: boolean;
2123
2832
  }
2124
2833
  declare function Text({
@@ -2140,6 +2849,12 @@ declare function Code({
2140
2849
  ...props
2141
2850
  }: CodeProps): import("react").JSX.Element;
2142
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
+ */
2143
2858
  cite?: string;
2144
2859
  }
2145
2860
  declare function Blockquote({
@@ -2149,6 +2864,12 @@ declare function Blockquote({
2149
2864
  ...props
2150
2865
  }: BlockquoteProps): import("react").JSX.Element;
2151
2866
  interface ListProps extends HTMLAttributes<HTMLElement> {
2867
+ /**
2868
+ * The HTML element to render as.
2869
+ *
2870
+ * @defaultValue `ul`
2871
+ * @see the component manifest
2872
+ */
2152
2873
  as?: 'ul' | 'ol';
2153
2874
  marker?: 'disc' | 'decimal' | 'none';
2154
2875
  }
@@ -2189,14 +2910,29 @@ interface LogViewerProps extends Omit<HTMLAttributes<HTMLDivElement>, 'children'
2189
2910
  lines: {
2190
2911
  readonly value: readonly LogLine[];
2191
2912
  } | readonly LogLine[];
2192
- /** 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
+ */
2193
2919
  rowHeight?: number;
2194
- /** 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
+ */
2195
2926
  overscan?: number;
2196
2927
  /** Controlled pin-to-bottom. Omit for uncontrolled (defaults to following). */
2197
2928
  follow?: boolean;
2198
2929
  onFollowChange?: (follow: boolean) => void;
2199
- /** 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
+ */
2200
2936
  ansi?: boolean;
2201
2937
  /** Seed the search/highlight box. */
2202
2938
  search?: string;
@@ -2233,8 +2969,19 @@ interface PullToRefreshProps {
2233
2969
  /** Invoked when the pull passes the threshold; the spinner shows until it settles. */
2234
2970
  onRefresh: () => Promise<unknown> | unknown;
2235
2971
  children: ReactNode;
2236
- /** 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
+ */
2237
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
+ */
2238
2985
  disabled?: boolean;
2239
2986
  labels?: {
2240
2987
  pull?: string;
@@ -2272,13 +3019,28 @@ interface QrCodeProps extends Omit<HTMLAttributes<HTMLDivElement>, 'children'> {
2272
3019
  value: string;
2273
3020
  /** Rendered size in pixels (width and height). Default 128. */
2274
3021
  size?: number;
2275
- /** 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
+ */
2276
3028
  errorCorrection?: ErrorCorrection;
2277
3029
  /** CSS length rounding the code's corners (applied to the container). */
2278
3030
  radius?: string;
2279
- /** 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
+ */
2280
3037
  fill?: string;
2281
- /** 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
+ */
2282
3044
  background?: string;
2283
3045
  /** Accessible label. Defaults to the i18n built-in "QR code". */
2284
3046
  label?: string;
@@ -2298,7 +3060,12 @@ declare function QrCode({
2298
3060
  interface RelativeTimeProps extends Omit<TimeHTMLAttributes<HTMLTimeElement>, 'dateTime'> {
2299
3061
  /** The instant to describe relative to now. */
2300
3062
  date: Date | number | string;
2301
- /** 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
+ */
2302
3069
  sync?: boolean;
2303
3070
  /** Override "now" (ms since epoch). Mainly for deterministic tests; disables the interval. */
2304
3071
  now?: number;
@@ -2314,11 +3081,27 @@ declare function RelativeTime({
2314
3081
  ...props
2315
3082
  }: RelativeTimeProps): import("react").JSX.Element;
2316
3083
  interface LabelProps extends LabelHTMLAttributes<HTMLLabelElement> {
2317
- /** 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
+ */
2318
3091
  asChild?: boolean;
2319
- /** 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
+ */
2320
3098
  required?: boolean;
2321
- /** 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
+ */
2322
3105
  disabled?: boolean;
2323
3106
  children: ReactNode;
2324
3107
  /** Override built-in strings (e.g. the required-marker accessible text). */
@@ -2342,9 +3125,19 @@ interface FieldProps {
2342
3125
  description?: ReactNode;
2343
3126
  /** Error message; sets aria-invalid on the control and is announced via role="alert". */
2344
3127
  error?: ReactNode;
2345
- /** 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
+ */
2346
3134
  required?: boolean;
2347
- /** 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
+ */
2348
3141
  disabled?: boolean;
2349
3142
  /** Explicit id for the control; auto-generated when omitted. */
2350
3143
  id?: string;
@@ -2375,13 +3168,39 @@ interface FilterOption {
2375
3168
  interface FilterProps {
2376
3169
  options: FilterOption[];
2377
3170
  value?: string[];
3171
+ /**
3172
+ * Initial selected values for uncontrolled use
3173
+ *
3174
+ * @defaultValue `[]`
3175
+ * @see the component manifest
3176
+ */
2378
3177
  defaultValue?: string[];
2379
3178
  /** Called with the selected values whenever the selection changes. */
2380
3179
  onValueChange?: (selected: string[]) => void;
2381
3180
  /** @deprecated Use `onValueChange` — it receives the same `string[]`. */
2382
3181
  onChange?: (selected: string[]) => void;
3182
+ /**
3183
+ * Allow multiple items to be selected simultaneously
3184
+ *
3185
+ * @defaultValue `false`
3186
+ * @see the component manifest
3187
+ */
2383
3188
  multi?: boolean;
3189
+ /**
3190
+ * Selects the visual style variant.
3191
+ *
3192
+ * @defaultValue `pill`
3193
+ * @see the component manifest
3194
+ */
2384
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}. */
2385
3204
  'aria-label'?: string;
2386
3205
  className?: string;
2387
3206
  }
@@ -2394,6 +3213,7 @@ declare function Filter({
2394
3213
  multi,
2395
3214
  variant,
2396
3215
  className,
3216
+ ariaLabel,
2397
3217
  ...aria
2398
3218
  }: FilterProps): import("react").JSX.Element;
2399
3219
  interface IconButtonBaseProps extends ButtonHTMLAttributes<HTMLButtonElement> {
@@ -2401,8 +3221,20 @@ interface IconButtonBaseProps extends ButtonHTMLAttributes<HTMLButtonElement> {
2401
3221
  * ships ~440 ready-made SVG icon components, or pass your own. */
2402
3222
  icon?: ReactNode;
2403
3223
  size?: 'sm' | 'md' | 'lg';
3224
+ /**
3225
+ * Selects the visual style variant.
3226
+ *
3227
+ * @defaultValue `ghost`
3228
+ * @see the component manifest
3229
+ */
2404
3230
  variant?: 'ghost' | 'outline' | 'filled';
2405
- /** 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
+ */
2406
3238
  asChild?: boolean;
2407
3239
  }
2408
3240
  /**
@@ -2420,10 +3252,27 @@ type IconButtonProps = IconButtonBaseProps & ({
2420
3252
  });
2421
3253
  declare const IconButton: import("react").ForwardRefExoticComponent<IconButtonProps & import("react").RefAttributes<HTMLButtonElement>>;
2422
3254
  interface ButtonGroupProps extends HTMLAttributes<HTMLDivElement> {
3255
+ /**
3256
+ * Layout orientation of the component.
3257
+ *
3258
+ * @defaultValue `horizontal`
3259
+ * @see the component manifest
3260
+ */
2423
3261
  orientation?: 'horizontal' | 'vertical';
2424
3262
  size?: 'sm' | 'md' | 'lg';
2425
- /** 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
+ */
2426
3269
  roving?: boolean;
3270
+ /**
3271
+ * When true, navigation wraps around from end to start.
3272
+ *
3273
+ * @defaultValue `false`
3274
+ * @see the component manifest
3275
+ */
2427
3276
  loop?: boolean;
2428
3277
  }
2429
3278
  declare const ButtonGroup: import("react").ForwardRefExoticComponent<ButtonGroupProps & import("react").RefAttributes<HTMLDivElement>>;
@@ -2431,6 +3280,12 @@ interface ToggleGroupItem {
2431
3280
  value: string;
2432
3281
  label?: string;
2433
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
+ */
2434
3289
  disabled?: boolean;
2435
3290
  }
2436
3291
  interface ToggleGroupProps extends Omit<HTMLAttributes<HTMLDivElement>, 'onChange' | 'defaultValue'> {
@@ -2439,6 +3294,12 @@ interface ToggleGroupProps extends Omit<HTMLAttributes<HTMLDivElement>, 'onChang
2439
3294
  defaultValue?: string | string[];
2440
3295
  onValueChange?: (value: string | string[]) => void;
2441
3296
  items: ToggleGroupItem[];
3297
+ /**
3298
+ * Layout orientation of the component.
3299
+ *
3300
+ * @defaultValue `horizontal`
3301
+ * @see the component manifest
3302
+ */
2442
3303
  orientation?: 'horizontal' | 'vertical';
2443
3304
  size?: 'sm' | 'md' | 'lg';
2444
3305
  disabled?: boolean;
@@ -2461,11 +3322,23 @@ declare function InlineLoading({
2461
3322
  className,
2462
3323
  ...props
2463
3324
  }: InlineLoadingProps): import("react").JSX.Element;
2464
- 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';
2465
3327
  interface NotificationProps extends Omit<HTMLAttributes<HTMLDivElement>, 'title'> {
2466
3328
  title: ReactNode;
2467
3329
  description?: ReactNode;
2468
- 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
+ */
2469
3342
  dismissible?: boolean;
2470
3343
  onDismiss?: () => void;
2471
3344
  actions?: ReactNode;
@@ -2477,7 +3350,7 @@ interface NotificationProps extends Omit<HTMLAttributes<HTMLDivElement>, 'title'
2477
3350
  declare function Notification({
2478
3351
  title,
2479
3352
  description,
2480
- variant,
3353
+ variant: variantProp,
2481
3354
  dismissible,
2482
3355
  onDismiss,
2483
3356
  actions,
@@ -2491,9 +3364,19 @@ interface ScrollAreaProps extends HTMLAttributes<HTMLDivElement> {
2491
3364
  height?: string;
2492
3365
  /** Max inline size of the scroll container (any CSS length). */
2493
3366
  width?: string;
2494
- /** Which axes may scroll. */
3367
+ /**
3368
+ * Which axes may scroll
3369
+ *
3370
+ * @defaultValue `vertical`
3371
+ * @see the component manifest
3372
+ */
2495
3373
  orientation?: 'vertical' | 'horizontal' | 'both';
2496
- /** 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
+ */
2497
3380
  edges?: 'shadow' | 'mask' | 'none';
2498
3381
  children?: ReactNode;
2499
3382
  }
@@ -2510,13 +3393,23 @@ declare function ScrollArea({
2510
3393
  interface CollapsibleProps {
2511
3394
  /** Controlled open state. */
2512
3395
  open?: boolean;
2513
- /** Initial open state for uncontrolled use. */
3396
+ /**
3397
+ * Initial open state for uncontrolled use
3398
+ *
3399
+ * @defaultValue `false`
3400
+ * @see the component manifest
3401
+ */
2514
3402
  defaultOpen?: boolean;
2515
3403
  /** Called whenever the open state should change. */
2516
3404
  onOpenChange?: (open: boolean) => void;
2517
3405
  /** Content rendered inside the trigger button. */
2518
3406
  trigger: ReactNode;
2519
- /** Disables the trigger. */
3407
+ /**
3408
+ * Disables the trigger button
3409
+ *
3410
+ * @defaultValue `false`
3411
+ * @see the component manifest
3412
+ */
2520
3413
  disabled?: boolean;
2521
3414
  className?: string;
2522
3415
  children?: ReactNode;
@@ -2531,7 +3424,12 @@ declare function Collapsible({
2531
3424
  children
2532
3425
  }: CollapsibleProps): import("react").JSX.Element;
2533
3426
  interface AspectRatioProps extends HTMLAttributes<HTMLDivElement> {
2534
- /** 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
+ */
2535
3433
  ratio?: number;
2536
3434
  children?: ReactNode;
2537
3435
  }
@@ -2546,6 +3444,12 @@ interface MenuButtonItem {
2546
3444
  id: string;
2547
3445
  label: ReactNode;
2548
3446
  onSelect?: () => void;
3447
+ /**
3448
+ * Disables the trigger
3449
+ *
3450
+ * @defaultValue `false`
3451
+ * @see the component manifest
3452
+ */
2549
3453
  disabled?: boolean;
2550
3454
  }
2551
3455
  interface MenuButtonProps {
@@ -2577,6 +3481,12 @@ interface ToggletipProps {
2577
3481
  /** The popover content. Interactive and selectable. */
2578
3482
  children: ReactNode;
2579
3483
  placement?: ToggletipPlacement;
3484
+ /**
3485
+ * Initial open state when uncontrolled
3486
+ *
3487
+ * @defaultValue `false`
3488
+ * @see the component manifest
3489
+ */
2580
3490
  defaultOpen?: boolean;
2581
3491
  open?: boolean;
2582
3492
  onOpenChange?: (open: boolean) => void;
@@ -2625,6 +3535,12 @@ interface NavigationMenuItem {
2625
3535
  interface NavigationMenuProps {
2626
3536
  items: NavigationMenuItem[];
2627
3537
  'aria-label'?: string;
3538
+ /**
3539
+ * Layout orientation of the component.
3540
+ *
3541
+ * @defaultValue `horizontal`
3542
+ * @see the component manifest
3543
+ */
2628
3544
  orientation?: RovingOrientation;
2629
3545
  className?: string;
2630
3546
  }
@@ -2677,11 +3593,25 @@ interface StructuredListItem {
2677
3593
  interface StructuredListProps {
2678
3594
  items: StructuredListItem[];
2679
3595
  headers?: ReactNode[];
3596
+ /**
3597
+ * When true, rows can be selected.
3598
+ *
3599
+ * @defaultValue `false`
3600
+ * @see the component manifest
3601
+ */
2680
3602
  selectable?: boolean;
2681
3603
  value?: string;
2682
3604
  defaultValue?: string;
2683
3605
  onSelect?: (id: string) => void;
2684
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}. */
2685
3615
  'aria-label'?: string;
2686
3616
  }
2687
3617
  declare function StructuredList(props: StructuredListProps): import("react").JSX.Element;
@@ -2715,7 +3645,19 @@ interface DataListItem {
2715
3645
  }
2716
3646
  interface DataListProps extends HTMLAttributes<HTMLDListElement> {
2717
3647
  items: DataListItem[];
3648
+ /**
3649
+ * Layout orientation of the component.
3650
+ *
3651
+ * @defaultValue `horizontal`
3652
+ * @see the component manifest
3653
+ */
2718
3654
  orientation?: 'horizontal' | 'vertical';
3655
+ /**
3656
+ * When true, shows dividers between items.
3657
+ *
3658
+ * @defaultValue `false`
3659
+ * @see the component manifest
3660
+ */
2719
3661
  dividers?: boolean;
2720
3662
  size?: 'sm' | 'md';
2721
3663
  }
@@ -2733,10 +3675,22 @@ interface TimelineItem {
2733
3675
  description?: ReactNode;
2734
3676
  time?: string;
2735
3677
  icon?: ReactNode;
2736
- 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;
2737
3685
  }
2738
3686
  interface TimelineProps extends HTMLAttributes<HTMLOListElement> {
2739
3687
  items: TimelineItem[];
3688
+ /**
3689
+ * Layout orientation of the component.
3690
+ *
3691
+ * @defaultValue `vertical`
3692
+ * @see the component manifest
3693
+ */
2740
3694
  orientation?: 'vertical' | 'horizontal';
2741
3695
  }
2742
3696
  declare function Timeline({
@@ -2746,7 +3700,20 @@ declare function Timeline({
2746
3700
  ...props
2747
3701
  }: TimelineProps): import("react").JSX.Element;
2748
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
+ */
2749
3710
  asChild?: boolean;
3711
+ /**
3712
+ * Selects the visual style variant.
3713
+ *
3714
+ * @defaultValue `default`
3715
+ * @see the component manifest
3716
+ */
2750
3717
  variant?: 'default' | 'muted';
2751
3718
  size?: 'sm' | 'md';
2752
3719
  }
@@ -2800,6 +3767,12 @@ interface CalendarProps {
2800
3767
  max?: Date;
2801
3768
  disabled?: (date: Date) => boolean;
2802
3769
  locale?: string;
3770
+ /**
3771
+ * Grid cell size
3772
+ *
3773
+ * @defaultValue `md`
3774
+ * @see the component manifest
3775
+ */
2803
3776
  size?: 'sm' | 'md' | 'lg';
2804
3777
  labels?: CalendarLabels;
2805
3778
  className?: string;
@@ -2819,7 +3792,12 @@ interface CalendarProps {
2819
3792
  month: number;
2820
3793
  year: number;
2821
3794
  }) => void;
2822
- /** 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
+ */
2823
3801
  hideNav?: boolean;
2824
3802
  }
2825
3803
  declare function Calendar({
@@ -2870,6 +3848,12 @@ interface DateRangePickerProps {
2870
3848
  presets?: DateRangePreset[];
2871
3849
  locale?: string;
2872
3850
  placeholder?: string;
3851
+ /**
3852
+ * Field/grid size
3853
+ *
3854
+ * @defaultValue `md`
3855
+ * @see the component manifest
3856
+ */
2873
3857
  size?: 'sm' | 'md' | 'lg';
2874
3858
  labels?: DateRangePickerLabels;
2875
3859
  className?: string;
@@ -2890,17 +3874,35 @@ declare function DateRangePicker({
2890
3874
  }: DateRangePickerProps): import("react").JSX.Element;
2891
3875
  interface ColorPickerLabels {
2892
3876
  hue?: string;
3877
+ /**
3878
+ * When true, enables alpha (opacity) selection.
3879
+ *
3880
+ * @defaultValue `true`
3881
+ * @see the component manifest
3882
+ */
2893
3883
  alpha?: string;
2894
3884
  colorArea?: string;
2895
3885
  eyedropper?: string;
2896
3886
  }
2897
3887
  interface ColorPickerProps {
2898
3888
  value?: string;
3889
+ /**
3890
+ * The initial value when uncontrolled.
3891
+ *
3892
+ * @defaultValue `#3b82f6`
3893
+ * @see the component manifest
3894
+ */
2899
3895
  defaultValue?: string;
2900
3896
  onValueChange?: (value: string) => void;
2901
3897
  presets?: string[];
2902
3898
  alpha?: boolean;
2903
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
+ */
2904
3906
  disabled?: boolean;
2905
3907
  size?: 'sm' | 'md' | 'lg';
2906
3908
  className?: string;
@@ -2927,8 +3929,20 @@ interface CarouselProps {
2927
3929
  children?: ReactNode;
2928
3930
  slides?: ReactNode[];
2929
3931
  index?: number;
3932
+ /**
3933
+ * The initial slide index when uncontrolled.
3934
+ *
3935
+ * @defaultValue `0`
3936
+ * @see the component manifest
3937
+ */
2930
3938
  defaultIndex?: number;
2931
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
+ */
2932
3946
  loop?: boolean;
2933
3947
  className?: string;
2934
3948
  labels?: CarouselLabels;
@@ -2945,10 +3959,34 @@ declare function Carousel({
2945
3959
  }: CarouselProps): import("react").JSX.Element;
2946
3960
  interface ResizableProps {
2947
3961
  children: ReactNode;
3962
+ /**
3963
+ * Layout orientation of the component.
3964
+ *
3965
+ * @defaultValue `horizontal`
3966
+ * @see the component manifest
3967
+ */
2948
3968
  orientation?: 'horizontal' | 'vertical';
3969
+ /**
3970
+ * The initial split ratio when uncontrolled.
3971
+ *
3972
+ * @defaultValue `0.5`
3973
+ * @see the component manifest
3974
+ */
2949
3975
  defaultRatio?: number;
2950
3976
  ratio?: number;
3977
+ /**
3978
+ * Minimum allowed split ratio.
3979
+ *
3980
+ * @defaultValue `0.1`
3981
+ * @see the component manifest
3982
+ */
2951
3983
  minRatio?: number;
3984
+ /**
3985
+ * Maximum allowed split ratio.
3986
+ *
3987
+ * @defaultValue `0.9`
3988
+ * @see the component manifest
3989
+ */
2952
3990
  maxRatio?: number;
2953
3991
  onRatioChange?: (ratio: number) => void;
2954
3992
  className?: string;
@@ -2991,7 +4029,12 @@ interface DrawerProps {
2991
4029
  defaultOpen?: boolean;
2992
4030
  /** Called whenever the open state should change. */
2993
4031
  onOpenChange?: (open: boolean) => void;
2994
- /** 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
+ */
2995
4038
  side?: 'start' | 'end' | 'top' | 'bottom';
2996
4039
  /** Panel size along its cross axis (width for start/end, height for top/bottom). */
2997
4040
  size?: string;
@@ -3004,7 +4047,12 @@ interface DrawerProps {
3004
4047
  close?: string;
3005
4048
  };
3006
4049
  className?: string;
3007
- /** 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
+ */
3008
4056
  swipeToDismiss?: boolean;
3009
4057
  }
3010
4058
  /**
@@ -3063,7 +4111,12 @@ type CodeLang = 'bash' | 'css' | 'js' | 'ts';
3063
4111
  interface CodeSnippetProps {
3064
4112
  /** The code to display (and copy). */
3065
4113
  code: string;
3066
- /** 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
+ */
3067
4120
  variant?: 'inline' | 'single' | 'multi';
3068
4121
  /**
3069
4122
  * Enables lightweight, dependency-free syntax highlighting for the block
@@ -3105,13 +4158,25 @@ declare function CodeSnippet({
3105
4158
  labels,
3106
4159
  className
3107
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
+ */
3108
4166
  type StepState = 'pending' | 'active' | 'complete' | 'error';
3109
4167
  interface Step {
3110
4168
  label: string;
3111
- state?: StepState;
4169
+ /** Accepts `StepState` plus Timeline's `current` / `upcoming` aliases. */
4170
+ state?: ProgressInput;
3112
4171
  }
3113
4172
  interface StepsProps {
3114
4173
  steps: Step[];
4174
+ /**
4175
+ * Index of the currently active step (0-based)
4176
+ *
4177
+ * @defaultValue `0`
4178
+ * @see the component manifest
4179
+ */
3115
4180
  activeStep?: number;
3116
4181
  orientation?: 'horizontal' | 'vertical';
3117
4182
  className?: string;
@@ -3134,7 +4199,12 @@ interface TileProps {
3134
4199
  defaultSelected?: boolean;
3135
4200
  /** Called with this tile's value whenever it is toggled on (or off for multi). */
3136
4201
  onSelect?: (value: string) => void;
3137
- /** 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
+ */
3138
4208
  selectable?: 'single' | 'multi';
3139
4209
  disabled?: boolean;
3140
4210
  /** Optional leading icon/visual. */
@@ -3164,6 +4234,12 @@ type IndicatorPlacement = 'top-start' | 'top-end' | 'bottom-start' | 'bottom-end
3164
4234
  interface IndicatorProps {
3165
4235
  children: React.ReactNode;
3166
4236
  overlay: React.ReactNode;
4237
+ /**
4238
+ * Placement relative to the trigger.
4239
+ *
4240
+ * @defaultValue `top-end`
4241
+ * @see the component manifest
4242
+ */
3167
4243
  placement?: IndicatorPlacement;
3168
4244
  className?: string;
3169
4245
  }
@@ -3176,6 +4252,12 @@ declare function Indicator({
3176
4252
  type JoinOrientation = 'horizontal' | 'vertical';
3177
4253
  interface JoinProps {
3178
4254
  children: React.ReactNode;
4255
+ /**
4256
+ * Layout orientation of the component.
4257
+ *
4258
+ * @defaultValue `horizontal`
4259
+ * @see the component manifest
4260
+ */
3179
4261
  orientation?: JoinOrientation;
3180
4262
  className?: string;
3181
4263
  }
@@ -3186,6 +4268,13 @@ declare function Join({
3186
4268
  }: JoinProps): import("react").JSX.Element;
3187
4269
  interface StackProps {
3188
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
+ */
3189
4278
  offset?: number;
3190
4279
  className?: string;
3191
4280
  }
@@ -3194,7 +4283,17 @@ declare function Stack({
3194
4283
  offset,
3195
4284
  className
3196
4285
  }: StackProps): import("react").JSX.Element;
3197
- 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> {
3198
4297
  /**
3199
4298
  * Top bar — typically a `<ShellHeader>`. If it is a React element, AppShell
3200
4299
  * binds its burger (`onMenuClick`/`menuExpanded`) to the nav open state so the
@@ -3227,6 +4326,11 @@ interface AppShellProps {
3227
4326
  * Rail vs full-hide reconcile cleanly: AppShell owns the full show/hide (this
3228
4327
  * `open` state); the SideNav you pass owns its own rail collapse
3229
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.
3230
4334
  */
3231
4335
  declare function AppShell({
3232
4336
  header,
@@ -3236,11 +4340,18 @@ declare function AppShell({
3236
4340
  open,
3237
4341
  defaultOpen,
3238
4342
  onOpenChange,
3239
- className
4343
+ className,
4344
+ ...props
3240
4345
  }: AppShellProps): import("react").JSX.Element;
3241
4346
  type ChatBubbleSide = 'start' | 'end';
3242
4347
  interface ChatBubbleProps {
3243
4348
  children: React.ReactNode;
4349
+ /**
4350
+ * Edge the component is anchored to.
4351
+ *
4352
+ * @defaultValue `start`
4353
+ * @see the component manifest
4354
+ */
3244
4355
  side?: ChatBubbleSide;
3245
4356
  avatar?: React.ReactNode;
3246
4357
  name?: string;
@@ -3260,6 +4371,12 @@ type RadialProgressVariant = 'primary' | 'info' | 'success' | 'warning' | 'error
3260
4371
  interface RadialProgressProps {
3261
4372
  value: number;
3262
4373
  size?: RadialProgressSize;
4374
+ /**
4375
+ * Selects the visual style variant.
4376
+ *
4377
+ * @defaultValue `primary`
4378
+ * @see the component manifest
4379
+ */
3263
4380
  variant?: RadialProgressVariant;
3264
4381
  children?: React.ReactNode;
3265
4382
  'aria-label'?: string;
@@ -3277,6 +4394,12 @@ type SwapMode = 'rotate' | 'flip';
3277
4394
  interface SwapProps {
3278
4395
  on: React.ReactNode;
3279
4396
  off: React.ReactNode;
4397
+ /**
4398
+ * Whether the control is checked (controlled).
4399
+ *
4400
+ * @defaultValue `false`
4401
+ * @see the component manifest
4402
+ */
3280
4403
  checked?: boolean;
3281
4404
  /** Called with the new checked state when the swap is toggled. */
3282
4405
  onValueChange?: (checked: boolean) => void;
@@ -3309,9 +4432,19 @@ interface SwipeAction {
3309
4432
  interface SwipeItemProps {
3310
4433
  /** The row content. */
3311
4434
  children: ReactNode;
3312
- /** 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
+ */
3313
4441
  leadingActions?: SwipeAction[];
3314
- /** 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
+ */
3315
4448
  trailingActions?: SwipeAction[];
3316
4449
  className?: string;
3317
4450
  }
@@ -3333,8 +4466,21 @@ type Responsive<T> = T | Partial<Record<'base' | 'sm' | 'md' | 'lg' | 'xl', T>>;
3333
4466
  /** Grid track alignment keyword (maps directly to `align-items` / `justify-items`). */
3334
4467
  type GridAlign = 'start' | 'center' | 'end' | 'stretch';
3335
4468
  interface GridProps extends HTMLAttributes<HTMLDivElement> {
3336
- /** 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
+ */
3337
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
+ */
3338
4484
  gap?: SpaceStep;
3339
4485
  /** Block-axis alignment of items within their cells (`align-items`). Defaults to `stretch`. */
3340
4486
  align?: GridAlign;
@@ -3362,10 +4508,30 @@ declare function GridItem({
3362
4508
  ...props
3363
4509
  }: GridItemProps): import("react").JSX.Element;
3364
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
+ */
3365
4519
  direction?: 'vertical' | 'horizontal';
4520
+ /**
4521
+ * Spacing token step
4522
+ *
4523
+ * @defaultValue `4`
4524
+ * @see the component manifest
4525
+ */
3366
4526
  gap?: SpaceStep;
3367
4527
  align?: 'start' | 'center' | 'end' | 'stretch';
3368
4528
  justify?: 'start' | 'center' | 'end' | 'between';
4529
+ /**
4530
+ * Allow wrapping
4531
+ *
4532
+ * @defaultValue `false`
4533
+ * @see the component manifest
4534
+ */
3369
4535
  wrap?: boolean;
3370
4536
  }
3371
4537
  declare function Flex({
@@ -3379,7 +4545,19 @@ declare function Flex({
3379
4545
  ...props
3380
4546
  }: FlexProps): import("react").JSX.Element;
3381
4547
  interface ColumnsProps extends HTMLAttributes<HTMLDivElement> {
4548
+ /**
4549
+ * Number of equal columns
4550
+ *
4551
+ * @defaultValue `2`
4552
+ * @see the component manifest
4553
+ */
3382
4554
  count?: 2 | 3 | 4;
4555
+ /**
4556
+ * Spacing token step
4557
+ *
4558
+ * @defaultValue `4`
4559
+ * @see the component manifest
4560
+ */
3383
4561
  gap?: SpaceStep;
3384
4562
  }
3385
4563
  declare function Columns({
@@ -3391,6 +4569,12 @@ declare function Columns({
3391
4569
  ...props
3392
4570
  }: ColumnsProps): import("react").JSX.Element;
3393
4571
  interface CenterProps extends HTMLAttributes<HTMLDivElement> {
4572
+ /**
4573
+ * CSS max-width value
4574
+ *
4575
+ * @defaultValue `48rem`
4576
+ * @see the component manifest
4577
+ */
3394
4578
  maxWidth?: string;
3395
4579
  }
3396
4580
  declare function Center({
@@ -3400,6 +4584,12 @@ declare function Center({
3400
4584
  ...props
3401
4585
  }: CenterProps): import("react").JSX.Element;
3402
4586
  interface SpacerProps extends HTMLAttributes<HTMLDivElement> {
4587
+ /**
4588
+ * Spacing token step
4589
+ *
4590
+ * @defaultValue `4`
4591
+ * @see the component manifest
4592
+ */
3403
4593
  size?: SpaceStep;
3404
4594
  }
3405
4595
  declare function Spacer({
@@ -3409,8 +4599,20 @@ declare function Spacer({
3409
4599
  ...props
3410
4600
  }: SpacerProps): import("react").JSX.Element;
3411
4601
  interface AutoGridProps extends HTMLAttributes<HTMLDivElement> {
3412
- /** 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
+ */
3413
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
+ */
3414
4616
  gap?: SpaceStep;
3415
4617
  className?: string | undefined;
3416
4618
  }
@@ -3421,6 +4623,20 @@ declare function AutoGrid({
3421
4623
  style,
3422
4624
  ...props
3423
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;
3424
4640
  /**
3425
4641
  * Set the active theme imperatively, from anywhere. Persists the choice and
3426
4642
  * drives the `data-theme` attribute through the mounted {@link ThemeProvider}.
@@ -3537,4 +4753,4 @@ declare function themePreloadScript(options?: {
3537
4753
  attribute?: string;
3538
4754
  defaultTheme?: string;
3539
4755
  }): string;
3540
- export { Accordion, AccordionContent, AccordionItem, AccordionItemProps, AccordionProps, AccordionTrigger, ActionSheet, ActionSheetAction, ActionSheetProps, Alert, AlertDialog, AlertDialogLabels, AlertDialogProps, AlertProps, AppShell, AppShellProps, AspectRatio, AspectRatioProps, AutoGrid, AutoGridProps, Avatar, AvatarGroup, AvatarGroupLabels, AvatarGroupProps, AvatarProps, Badge, BadgeProps, Blockquote, BlockquoteProps, BottomSheet, BottomSheetProps, Breadcrumb, BreadcrumbItem, BreadcrumbProps, Button, ButtonGroup, ButtonGroupProps, ButtonProps, Calendar, CalendarLabels, CalendarProps, Card, CardContent, CardContentProps, CardFooter, CardFooterProps, CardHeader, CardHeaderProps, CardProps, CardTitle, CardTitleProps, Carousel, CarouselLabels, CarouselProps, Center, CenterProps, ChatBubble, ChatBubbleProps, ChatBubbleSide, Checkbox, CheckboxCard, CheckboxCardProps, CheckboxProps, Code, type CodeLang, CodeProps, CodeSnippet, CodeSnippetProps, Collapsible, CollapsibleProps, ColorPicker, ColorPickerLabels, ColorPickerProps, Column, Columns, ColumnsProps, Combobox, ComboboxLabels, ComboboxOption, ComboboxProps, CommandAction, CommandGroup, CommandItem, CommandMenu, CommandMenuProps, CommandPage, CommandScope, CommandStatus, Comparison, ComparisonProps, ContainedList, ContainedListItem, ContainedListItemProps, ContainedListProps, ContextMenu, ContextMenuItem, ContextMenuItemProps, ContextMenuProps, CopyButton, CopyButtonProps, DataList, DataListItem, DataListProps, DataTable, DataTableLabels, DataTableProps, DatePicker, DatePickerLabels, DatePickerProps, DateRange, DateRangePicker, DateRangePickerLabels, DateRangePickerProps, DateRangePreset, DismissableLayer, type DismissableLayerProps, Dock, DockItem, DockProps, Drawer, DrawerProps, Dropdown, DropdownItem, DropdownProps, Editable, EditableProps, EmptyState, EmptyStateProps, ErrorBoundary, Fab, FabAction, FabProps, Field, FieldProps, FileUploader, FileUploaderLabels, FileUploaderProps, Filter, FilterOption, FilterProps, FilterVariant, Flex, FlexProps, FocusScope, Form, FormConfig, FormProps, FormStore, FuzzyMatch, Grid, GridAlign, GridItem, GridItemProps, GridProps, Header, HeaderLabels, HeaderLink, HeaderPanel, HeaderPanelLabels, HeaderPanelProps, HeaderProps, Heading, HeadingLevel, HeadingProps, HeadingSize, HoverCard, HoverCardContent, HoverCardContentProps, HoverCardProps, HoverCardTrigger, HoverCardTriggerProps, IconButton, IconButtonProps, Image, ImageProps, Indicator, IndicatorPlacement, IndicatorProps, InlineLoading, InlineLoadingProps, InlineLoadingStatus, Input, InputGroup, InputGroupAddon, type InputGroupAddonProps, type InputGroupProps, InputProps, Item, ItemActions, ItemActionsProps, ItemContent, ItemContentProps, ItemDescription, ItemDescriptionProps, ItemMedia, ItemMediaProps, ItemProps, ItemTitle, ItemTitleProps, Join, JoinOrientation, JoinProps, Kbd, KbdProps, Label, LabelProps, Link, type LinkComponent, type LinkComponentProps, LinkProps, List, ListItem, ListItemProps, ListProps, LogLevel, LogLine, LogViewer, LogViewerLabels, LogViewerProps, type Machine, type MachineConfig, Menu, MenuButton, MenuButtonItem, MenuButtonProps, MenuItem, MenuItemProps, MenuProps, MenuSeparator, MenuTrigger, MenuTriggerProps, Menubar, MenubarItem, MenubarMenu, MenubarProps, Modal, ModalProps, MultiSelect, MultiSelectLabels, MultiSelectOption, MultiSelectProps, NativeSelect, NativeSelectOption, NativeSelectProps, NavigationMenu, NavigationMenuItem, NavigationMenuProps, Notification, NotificationProps, NotificationVariant, NumberInput, NumberInputProps, OtpInput, OtpInputProps, OverflowMenu, OverflowMenuItem, OverflowMenuProps, Pagination, PaginationLabels, PaginationProps, PasswordInput, PasswordInputLabels, PasswordInputProps, Popover, PopoverContent, PopoverContentProps, PopoverProps, PopoverTrigger, PopoverTriggerProps, Portal, Presence, Progress, ProgressBar, ProgressBarProps, ProgressCircle, ProgressCircleProps, ProgressIndicator, ProgressIndicatorProps, ProgressProps, ProgressSize, ProgressStep, ProgressVariant, Prose, ProseProps, PullToRefresh, PullToRefreshProps, QrCode, QrCodeProps, RadialProgress, RadialProgressProps, RadialProgressSize, RadialProgressVariant, Radio, RadioCard, RadioCardGroup, RadioCardGroupProps, RadioCardProps, RadioGroup, RadioGroupProps, RadioProps, RatingGroup, RatingGroupLabels, RatingGroupProps, RelativeTime, RelativeTimeProps, Resizable, ResizableProps, Responsive, ScrollArea, ScrollAreaProps, Search, SearchProps, SegmentedControl, SegmentedControlOption, SegmentedControlProps, Select, SelectOption, SelectProps, Separator, SeparatorProps, Sheet, SheetProps, ShellHeader, ShellHeaderAction, ShellHeaderBrand, ShellHeaderLabels, ShellHeaderNavItem, ShellHeaderNavLink, ShellHeaderNavMenu, ShellHeaderNavMenuItem, ShellHeaderProps, SideNav, SideNavGroup, SideNavItem, SideNavLinkProps, SideNavLinkSubItem, SideNavProps, SideNavSubItem, SideNavTone, Skeleton, SkeletonProps, SkipNavLink, SkipNavLinkProps, SkipNavTarget, SkipNavTargetProps, Slider, SliderProps, Slot, type SlotProps, SortDirection, SortState, Spacer, SpacerProps, Spinner, SpinnerProps, Stack, StackProps, type StandardSchemaV1, Stat, StatProps, Status, StatusProps, Step, StepState, Steps, StepsProps, StructuredList, StructuredListItem, StructuredListProps, SuspenseBoundary, Swap, SwapMode, SwapProps, SwipeAction, SwipeItem, SwipeItemProps, Switcher, SwitcherEntry, SwitcherLink, SwitcherProps, Tabs, TabsContent, TabsContentProps, TabsList, TabsProps, TabsTrigger, TabsTriggerProps, Tag, TagProps, TagsInput, TagsInputProps, Text, TextProps, Textarea, TextareaProps, ThemeProvider, type ThemeProviderProps, Tile, TileProps, TimePicker, TimePickerProps, Timeline, TimelineItem, TimelineProps, ToastOptions, ToastProvider, ToastVariant, Toc, TocItem, TocProps, Toggle, ToggleGroup, ToggleGroupItem, ToggleGroupProps, ToggleProps, Toggletip, ToggletipPlacement, ToggletipProps, Tooltip, TooltipProps, TreeNode, TreeView, TreeViewProps, UploaderFile, type UseClipboardOptions, type UseClipboardReturn, type UseControllableSignalOptions, type UseDisclosureOptions, type UseDisclosureReturn, type UsePopoverOptions, type UsePopoverReturn, type UseTocFromRegionOptions, User, UserProps, VisuallyHidden, VisuallyHiddenProps, batch, cn, composeRefs, computePosition, computed, createForm, createMachine, createScope, createStreamBuffer, dismissAllToasts, effect, fuzzyMatch, fuzzyScore, getLinkComponent, mergeProps, setLinkComponent, setTheme, signal, themePreloadScript, themeSignal, treeViewMessages, useAnchorPosition, useClipboard, useComputed, useControllableSignal, useDisclosure, useEffectPropSignal, useForm, useId, useMachine, useMediaQuery, usePopover, useRovingFocus, useScope, useScrollLock, useSignal, useSignalEffect, useSignals, useStreamBuffer, useTheme, useToast, useTocFromRegion, useTypeahead };
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 };