@cascivo/react 0.13.0 → 0.13.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (160) hide show
  1. package/dist/accordion/accordion.js +46 -44
  2. package/dist/action-sheet/action-sheet.js +16 -16
  3. package/dist/alert-dialog/alert-dialog.js +34 -34
  4. package/dist/app-shell/app-shell.css +1 -1
  5. package/dist/app-shell/app-shell.js +14 -12
  6. package/dist/app-shell/app-shell.module.js +8 -8
  7. package/dist/avatar-group/avatar-group.js +6 -6
  8. package/dist/bottom-sheet/bottom-sheet.js +18 -18
  9. package/dist/button/button.js +15 -12
  10. package/dist/button-group/button-group.js +8 -8
  11. package/dist/carousel/carousel.js +20 -20
  12. package/dist/checkbox/checkbox.js +21 -21
  13. package/dist/checkbox-card/checkbox-card.js +15 -13
  14. package/dist/collapsible/collapsible.js +7 -7
  15. package/dist/color-picker/color-picker.js +26 -26
  16. package/dist/combobox/combobox.js +86 -86
  17. package/dist/command-menu/command-menu.js +111 -111
  18. package/dist/comparison/comparison.js +10 -10
  19. package/dist/context-menu/context-menu.js +9 -9
  20. package/dist/copy-button/copy-button.js +18 -16
  21. package/dist/data-table/data-table.js +1 -1
  22. package/dist/date-picker/date-picker.js +25 -25
  23. package/dist/date-range-picker/date-range-picker.js +26 -26
  24. package/dist/drawer/drawer.css +1 -1
  25. package/dist/drawer/drawer.js +18 -17
  26. package/dist/drawer/drawer.module.js +9 -9
  27. package/dist/dropdown/dropdown.js +48 -48
  28. package/dist/editable/editable.js +11 -11
  29. package/dist/fab/fab.js +53 -53
  30. package/dist/field/field.js +8 -8
  31. package/dist/file-uploader/file-uploader.js +19 -19
  32. package/dist/header-panel/header-panel.js +31 -31
  33. package/dist/hover-card/hover-card.js +21 -21
  34. package/dist/icon-button/icon-button.js +5 -5
  35. package/dist/index.d.ts +202 -194
  36. package/dist/input/input.js +22 -21
  37. package/dist/link/link.js +8 -6
  38. package/dist/log-viewer/log-viewer.js +26 -26
  39. package/dist/menu/menu.js +20 -20
  40. package/dist/menu-button/menu-button.js +48 -48
  41. package/dist/menubar/menubar.js +42 -42
  42. package/dist/modal/modal.css +1 -1
  43. package/dist/modal/modal.js +41 -35
  44. package/dist/modal/modal.module.js +8 -7
  45. package/dist/multi-select/multi-select.css +1 -1
  46. package/dist/multi-select/multi-select.js +57 -57
  47. package/dist/multi-select/multi-select.module.js +11 -11
  48. package/dist/native-select/native-select.js +13 -11
  49. package/dist/navigation-menu/navigation-menu.js +46 -46
  50. package/dist/node/accordion/accordion.js +46 -44
  51. package/dist/node/action-sheet/action-sheet.js +16 -16
  52. package/dist/node/alert-dialog/alert-dialog.js +34 -34
  53. package/dist/node/app-shell/app-shell.js +14 -12
  54. package/dist/node/app-shell/app-shell.module.js +8 -8
  55. package/dist/node/avatar-group/avatar-group.js +6 -6
  56. package/dist/node/bottom-sheet/bottom-sheet.js +18 -18
  57. package/dist/node/button/button.js +15 -12
  58. package/dist/node/button-group/button-group.js +8 -8
  59. package/dist/node/carousel/carousel.js +20 -20
  60. package/dist/node/checkbox/checkbox.js +21 -21
  61. package/dist/node/checkbox-card/checkbox-card.js +15 -13
  62. package/dist/node/collapsible/collapsible.js +7 -7
  63. package/dist/node/color-picker/color-picker.js +26 -26
  64. package/dist/node/combobox/combobox.js +86 -86
  65. package/dist/node/command-menu/command-menu.js +111 -111
  66. package/dist/node/comparison/comparison.js +10 -10
  67. package/dist/node/context-menu/context-menu.js +9 -9
  68. package/dist/node/copy-button/copy-button.js +18 -16
  69. package/dist/node/data-table/data-table.js +1 -1
  70. package/dist/node/date-picker/date-picker.js +25 -25
  71. package/dist/node/date-range-picker/date-range-picker.js +26 -26
  72. package/dist/node/drawer/drawer.js +18 -17
  73. package/dist/node/drawer/drawer.module.js +9 -9
  74. package/dist/node/dropdown/dropdown.js +48 -48
  75. package/dist/node/editable/editable.js +11 -11
  76. package/dist/node/fab/fab.js +53 -53
  77. package/dist/node/field/field.js +8 -8
  78. package/dist/node/file-uploader/file-uploader.js +19 -19
  79. package/dist/node/header-panel/header-panel.js +31 -31
  80. package/dist/node/hover-card/hover-card.js +21 -21
  81. package/dist/node/icon-button/icon-button.js +5 -5
  82. package/dist/node/input/input.js +22 -21
  83. package/dist/node/link/link.js +8 -6
  84. package/dist/node/log-viewer/log-viewer.js +26 -26
  85. package/dist/node/menu/menu.js +20 -20
  86. package/dist/node/menu-button/menu-button.js +48 -48
  87. package/dist/node/menubar/menubar.js +42 -42
  88. package/dist/node/modal/modal.js +41 -35
  89. package/dist/node/modal/modal.module.js +8 -7
  90. package/dist/node/multi-select/multi-select.js +57 -57
  91. package/dist/node/multi-select/multi-select.module.js +11 -11
  92. package/dist/node/native-select/native-select.js +13 -11
  93. package/dist/node/navigation-menu/navigation-menu.js +46 -46
  94. package/dist/node/notification/notification.js +26 -26
  95. package/dist/node/number-input/number-input.js +52 -50
  96. package/dist/node/otp-input/otp-input.js +8 -8
  97. package/dist/node/password-input/password-input.js +28 -27
  98. package/dist/node/popover/popover.js +26 -24
  99. package/dist/node/pull-to-refresh/pull-to-refresh.js +13 -13
  100. package/dist/node/radial-progress/radial-progress.js +5 -5
  101. package/dist/node/radio/radio.js +23 -22
  102. package/dist/node/radio-card/radio-card.js +27 -26
  103. package/dist/node/react/src/index.js +3 -3
  104. package/dist/node/react/src/theme.js +30 -19
  105. package/dist/node/resizable/resizable.js +11 -11
  106. package/dist/node/scroll-area/scroll-area.js +4 -4
  107. package/dist/node/search/search.js +49 -49
  108. package/dist/node/select/select.js +27 -26
  109. package/dist/node/sheet/sheet.js +11 -10
  110. package/dist/node/sheet/sheet.module.js +5 -5
  111. package/dist/node/side-nav/side-nav.js +91 -91
  112. package/dist/node/skip-nav/skip-nav.js +12 -12
  113. package/dist/node/slider/slider.js +13 -11
  114. package/dist/node/structured-list/structured-list.js +23 -23
  115. package/dist/node/tabs/tabs.js +49 -47
  116. package/dist/node/tags-input/tags-input.js +35 -35
  117. package/dist/node/textarea/textarea.js +22 -21
  118. package/dist/node/time-picker/time-picker.js +22 -21
  119. package/dist/node/toast/toast.js +15 -15
  120. package/dist/node/toc/toc.js +8 -8
  121. package/dist/node/toggle/toggle.js +15 -13
  122. package/dist/node/toggle-group/toggle-group.js +10 -10
  123. package/dist/node/toggletip/toggletip.js +9 -9
  124. package/dist/node/tooltip/tooltip.js +5 -5
  125. package/dist/node/tree-view/tree-view.js +32 -32
  126. package/dist/notification/notification.js +26 -26
  127. package/dist/number-input/number-input.js +52 -50
  128. package/dist/otp-input/otp-input.js +8 -8
  129. package/dist/password-input/password-input.js +28 -27
  130. package/dist/popover/popover.js +26 -24
  131. package/dist/pull-to-refresh/pull-to-refresh.js +13 -13
  132. package/dist/radial-progress/radial-progress.js +5 -5
  133. package/dist/radio/radio.js +23 -22
  134. package/dist/radio-card/radio-card.js +27 -26
  135. package/dist/react/src/index.js +3 -3
  136. package/dist/react/src/theme.js +30 -19
  137. package/dist/resizable/resizable.js +11 -11
  138. package/dist/scroll-area/scroll-area.js +4 -4
  139. package/dist/search/search.js +49 -49
  140. package/dist/select/select.js +27 -26
  141. package/dist/sheet/sheet.css +1 -1
  142. package/dist/sheet/sheet.js +11 -10
  143. package/dist/sheet/sheet.module.js +5 -5
  144. package/dist/side-nav/side-nav.js +91 -91
  145. package/dist/skip-nav/skip-nav.js +12 -12
  146. package/dist/slider/slider.js +13 -11
  147. package/dist/structured-list/structured-list.js +23 -23
  148. package/dist/styles.css +55 -5
  149. package/dist/tabs/tabs.js +49 -47
  150. package/dist/tags-input/tags-input.js +35 -35
  151. package/dist/textarea/textarea.js +22 -21
  152. package/dist/time-picker/time-picker.js +22 -21
  153. package/dist/toast/toast.js +15 -15
  154. package/dist/toc/toc.js +8 -8
  155. package/dist/toggle/toggle.js +15 -13
  156. package/dist/toggle-group/toggle-group.js +10 -10
  157. package/dist/toggletip/toggletip.js +9 -9
  158. package/dist/tooltip/tooltip.js +5 -5
  159. package/dist/tree-view/tree-view.js +32 -32
  160. package/package.json +10 -4
package/dist/index.d.ts CHANGED
@@ -47,33 +47,28 @@ interface ButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {
47
47
  */
48
48
  asChild?: boolean;
49
49
  }
50
- declare function Button({
51
- variant,
52
- size,
53
- loading,
54
- asChild,
55
- className,
56
- disabled,
57
- children,
58
- ...props
59
- }: ButtonProps): import("react").JSX.Element;
50
+ /**
51
+ * `forwardRef` so `ref` reaches the underlying `<button>` — and so it is TYPED. See
52
+ * `textarea.tsx` for the full rationale (2026-07-28 report C10).
53
+ *
54
+ * Under `asChild` the ref goes to `Slot`, which composes it onto the child element, so a
55
+ * consumer's ref lands on whatever they rendered rather than being dropped.
56
+ */
57
+ declare const Button: import("react").ForwardRefExoticComponent<ButtonProps & import("react").RefAttributes<HTMLButtonElement>>;
60
58
  interface InputProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'size'> {
61
59
  label?: string;
62
60
  hint?: string;
63
61
  error?: string;
64
62
  size?: 'sm' | 'md' | 'lg';
65
63
  }
66
- declare function Input({
67
- label,
68
- hint,
69
- error,
70
- size,
71
- className,
72
- id,
73
- onFocus,
74
- onBlur,
75
- ...props
76
- }: InputProps): import("react").JSX.Element;
64
+ /**
65
+ * `forwardRef` so `ref` reaches the underlying `<input>` — and so it is TYPED. See
66
+ * `textarea.tsx` for the full rationale (2026-07-28 report C10): the ref already worked at
67
+ * runtime under React 19, but nothing declared it, so passing one was a `ts(2322)` and every
68
+ * consumer had to cast. `forwardRef` rather than a bare `ref?: Ref<T>` prop keeps the
69
+ * `react >= 18` peer floor honest, since ref-as-prop does not work there.
70
+ */
71
+ declare const Input: import("react").ForwardRefExoticComponent<InputProps & import("react").RefAttributes<HTMLInputElement>>;
77
72
  interface CardProps extends HTMLAttributes<HTMLDivElement> {
78
73
  /**
79
74
  * Selects the visual style variant.
@@ -164,6 +159,22 @@ interface ModalProps {
164
159
  title?: string;
165
160
  description?: string;
166
161
  children?: ReactNode;
162
+ /**
163
+ * Dialog actions, rendered in a right-aligned row below the body and separated from it
164
+ * by a divider. Every consumer hand-rolled this before it existed.
165
+ *
166
+ * ```tsx
167
+ * <Modal open={open} title="Delete project" footer={
168
+ * <>
169
+ * <Button variant="ghost" onClick={close}>Cancel</Button>
170
+ * <Button variant="destructive" onClick={remove}>Delete</Button>
171
+ * </>
172
+ * }>
173
+ * …
174
+ * </Modal>
175
+ * ```
176
+ */
177
+ footer?: ReactNode;
167
178
  className?: string;
168
179
  size?: 'sm' | 'md' | 'lg';
169
180
  /**
@@ -180,6 +191,7 @@ declare function Modal({
180
191
  title,
181
192
  description,
182
193
  children,
194
+ footer,
183
195
  className,
184
196
  size,
185
197
  draggable
@@ -395,18 +407,21 @@ interface TextareaProps extends TextareaHTMLAttributes<HTMLTextAreaElement> {
395
407
  error?: string;
396
408
  resize?: 'none' | 'vertical' | 'both';
397
409
  }
398
- declare function Textarea({
399
- label,
400
- hint,
401
- error,
402
- resize,
403
- rows,
404
- className,
405
- id,
406
- onFocus,
407
- onBlur,
408
- ...props
409
- }: TextareaProps): import("react").JSX.Element;
410
+ /**
411
+ * `forwardRef` so `ref` reaches the underlying `<textarea>` — and so it is TYPED.
412
+ *
413
+ * Under React 19 the ref already arrived at runtime (it is passed as an ordinary prop and
414
+ * spread onto the element), but no component declared it, so `<Textarea ref={r} />` was a
415
+ * `ts(2322)` and every consumer needing the element had to cast. One needed it for caret
416
+ * restoration in a collaborative editor and kept the cast quarantined in its own file
417
+ * (2026-07-28 report C10).
418
+ *
419
+ * `forwardRef` rather than adding `ref?: Ref<T>` to the props interface: the peer floor is
420
+ * `react >= 18`, where ref-as-prop does NOT work — a bare type declaration would compile
421
+ * and silently hand back `null` there. This keeps the floor honest on both majors, and
422
+ * matches `IconButton`, which already used it.
423
+ */
424
+ declare const Textarea: import("react").ForwardRefExoticComponent<TextareaProps & import("react").RefAttributes<HTMLTextAreaElement>>;
410
425
  interface SelectOption {
411
426
  value: string;
412
427
  label: string;
@@ -426,21 +441,13 @@ interface SelectProps extends Omit<SelectHTMLAttributes<HTMLSelectElement>, 'siz
426
441
  options: SelectOption[];
427
442
  size?: 'sm' | 'md' | 'lg';
428
443
  }
429
- declare function Select({
430
- label,
431
- hint,
432
- error,
433
- placeholder,
434
- options,
435
- size,
436
- className,
437
- id,
438
- defaultValue,
439
- value,
440
- onFocus,
441
- onBlur,
442
- ...props
443
- }: SelectProps): import("react").JSX.Element;
444
+ /**
445
+ * `forwardRef` so `ref` reaches the underlying `<select>` — and so it is TYPED. See
446
+ * `textarea.tsx` for the full rationale (2026-07-28 report C10). `forwardRef` rather than a
447
+ * bare `ref?: Ref<T>` prop keeps the `react >= 18` peer floor honest, since ref-as-prop does
448
+ * not work there.
449
+ */
450
+ declare const Select: import("react").ForwardRefExoticComponent<SelectProps & import("react").RefAttributes<HTMLSelectElement>>;
444
451
  interface CheckboxProps extends InputHTMLAttributes<HTMLInputElement> {
445
452
  label?: string;
446
453
  /**
@@ -451,26 +458,27 @@ interface CheckboxProps extends InputHTMLAttributes<HTMLInputElement> {
451
458
  */
452
459
  indeterminate?: boolean;
453
460
  }
454
- declare function Checkbox({
455
- label,
456
- indeterminate,
457
- className,
458
- id,
459
- disabled,
460
- ...props
461
- }: CheckboxProps): import("react").JSX.Element;
461
+ /**
462
+ * `forwardRef` so `ref` reaches the underlying `<input>` — and so it is TYPED. See
463
+ * `textarea.tsx` for the full rationale (2026-07-28 report C10): the ref already worked at
464
+ * runtime under React 19, but nothing declared it, so passing one was a `ts(2322)` and every
465
+ * consumer had to cast. `forwardRef` rather than a bare `ref?: Ref<T>` prop keeps the
466
+ * `react >= 18` peer floor honest, since ref-as-prop does not work there.
467
+ */
468
+ declare const Checkbox: import("react").ForwardRefExoticComponent<CheckboxProps & import("react").RefAttributes<HTMLInputElement>>;
462
469
  interface RadioProps extends InputHTMLAttributes<HTMLInputElement> {
463
470
  label?: string;
464
471
  value: string;
465
472
  }
466
- declare function Radio({
467
- label,
468
- className,
469
- id,
470
- disabled,
471
- value,
472
- ...props
473
- }: RadioProps): import("react").JSX.Element;
473
+ /**
474
+ * `forwardRef` so `ref` reaches the underlying `<input>` — and so it is TYPED. See
475
+ * `textarea.tsx` for the full rationale (2026-07-28 report C10). `forwardRef` rather than a
476
+ * bare `ref?: Ref<T>` prop keeps the `react >= 18` peer floor honest, since ref-as-prop does
477
+ * not work there.
478
+ *
479
+ * Only `Radio` is wrapped; `RadioGroup` below is a layout container with no single host.
480
+ */
481
+ declare const Radio: import("react").ForwardRefExoticComponent<RadioProps & import("react").RefAttributes<HTMLInputElement>>;
474
482
  interface RadioGroupProps {
475
483
  name: string;
476
484
  value?: string;
@@ -511,30 +519,23 @@ interface ToggleProps extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, 'onC
511
519
  label?: string;
512
520
  size?: 'sm' | 'md';
513
521
  }
514
- declare function Toggle({
515
- checked,
516
- defaultChecked,
517
- onValueChange,
518
- onChange,
519
- label,
520
- size,
521
- className,
522
- disabled,
523
- ...props
524
- }: ToggleProps): import("react").JSX.Element;
522
+ /**
523
+ * `forwardRef` so `ref` reaches the underlying `<button>` — and so it is TYPED. See
524
+ * `textarea.tsx` for the full rationale (2026-07-28 report C10). `forwardRef` rather than a
525
+ * bare `ref?: Ref<T>` prop keeps the `react >= 18` peer floor honest, since ref-as-prop does
526
+ * not work there.
527
+ */
528
+ declare const Toggle: import("react").ForwardRefExoticComponent<ToggleProps & import("react").RefAttributes<HTMLButtonElement>>;
525
529
  interface SliderProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'type'> {
526
530
  label?: string;
527
531
  }
528
- declare function Slider({
529
- label,
530
- className,
531
- id,
532
- min,
533
- max,
534
- step,
535
- disabled,
536
- ...props
537
- }: SliderProps): import("react").JSX.Element;
532
+ /**
533
+ * `forwardRef` so `ref` reaches the underlying `<input>` — and so it is TYPED. See
534
+ * `textarea.tsx` for the full rationale (2026-07-28 report C10). `forwardRef` rather than a
535
+ * bare `ref?: Ref<T>` prop keeps the `react >= 18` peer floor honest, since ref-as-prop does
536
+ * not work there.
537
+ */
538
+ declare const Slider: import("react").ForwardRefExoticComponent<SliderProps & import("react").RefAttributes<HTMLInputElement>>;
538
539
  interface TooltipProps {
539
540
  content: ReactNode;
540
541
  /**
@@ -652,7 +653,12 @@ interface TabsTriggerProps extends HTMLAttributes<HTMLButtonElement> {
652
653
  value: string;
653
654
  disabled?: boolean;
654
655
  }
655
- declare function TabsTrigger(props: TabsTriggerProps): import("react").JSX.Element;
656
+ /**
657
+ * `forwardRef` so `ref` reaches the tab `<button>` — see `textarea.tsx` for the full
658
+ * rationale (2026-07-28 report C10). Threaded through the private Inner, which owns the
659
+ * button. Roving-focus navs need a real element here, so this is not cosmetic.
660
+ */
661
+ declare const TabsTrigger: import("react").ForwardRefExoticComponent<TabsTriggerProps & import("react").RefAttributes<HTMLButtonElement>>;
656
662
  interface TabsContentProps extends HTMLAttributes<HTMLDivElement> {
657
663
  value: string;
658
664
  }
@@ -682,7 +688,12 @@ declare function AccordionItem({
682
688
  children,
683
689
  ...props
684
690
  }: AccordionItemProps): import("react").JSX.Element;
685
- declare function AccordionTrigger(props: HTMLAttributes<HTMLButtonElement>): import("react").JSX.Element;
691
+ /**
692
+ * `forwardRef` so `ref` reaches the trigger `<button>` — see `textarea.tsx` for the full
693
+ * rationale (2026-07-28 report C10). The ref is threaded through the private Inner, which is
694
+ * where the button actually lives.
695
+ */
696
+ declare const AccordionTrigger: import("react").ForwardRefExoticComponent<HTMLAttributes<HTMLButtonElement> & import("react").RefAttributes<HTMLButtonElement>>;
686
697
  declare function AccordionContent(props: HTMLAttributes<HTMLDivElement>): import("react").JSX.Element;
687
698
  interface ActionSheetAction {
688
699
  label: ReactNode;
@@ -771,15 +782,13 @@ interface LinkProps extends AnchorHTMLAttributes<HTMLAnchorElement> {
771
782
  */
772
783
  asChild?: boolean;
773
784
  }
774
- declare function Link({
775
- variant,
776
- size,
777
- external,
778
- asChild,
779
- className,
780
- children,
781
- ...props
782
- }: LinkProps): import("react").JSX.Element;
785
+ /**
786
+ * `forwardRef` so `ref` reaches the underlying `<a>` — and so it is TYPED. See
787
+ * `textarea.tsx` for the full rationale (2026-07-28 report C10). `forwardRef` rather than a
788
+ * bare `ref?: Ref<T>` prop keeps the `react >= 18` peer floor honest, since ref-as-prop does
789
+ * not work there.
790
+ */
791
+ declare const Link: import("react").ForwardRefExoticComponent<LinkProps & import("react").RefAttributes<HTMLAnchorElement>>;
783
792
  interface BreadcrumbItem {
784
793
  label: string;
785
794
  href?: string;
@@ -1383,30 +1392,13 @@ interface NumberInputProps extends Omit<InputHTMLAttributes<HTMLInputElement>, '
1383
1392
  */
1384
1393
  decrementLabel?: string;
1385
1394
  }
1386
- declare function NumberInput({
1387
- value,
1388
- defaultValue,
1389
- onValueChange,
1390
- onChange,
1391
- min,
1392
- max,
1393
- step,
1394
- precision,
1395
- formatOptions,
1396
- label,
1397
- hint,
1398
- error,
1399
- size,
1400
- disabled,
1401
- incrementLabel,
1402
- decrementLabel,
1403
- className,
1404
- id,
1405
- onFocus,
1406
- onBlur,
1407
- onKeyDown,
1408
- ...props
1409
- }: NumberInputProps): import("react").JSX.Element;
1395
+ /**
1396
+ * `forwardRef` so `ref` reaches the underlying `<input>` — and so it is TYPED. See
1397
+ * `textarea.tsx` for the full rationale (2026-07-28 report C10). Enforced by
1398
+ * `ref-parity.test.ts`, which found this component: the plan's own list of 16 was itself
1399
+ * incomplete, which is why the rule is a guard and not a checklist.
1400
+ */
1401
+ declare const NumberInput: import("react").ForwardRefExoticComponent<NumberInputProps & import("react").RefAttributes<HTMLInputElement>>;
1410
1402
  interface Column<Row> {
1411
1403
  key: string;
1412
1404
  header: string;
@@ -1957,24 +1949,13 @@ interface TimePickerProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 's
1957
1949
  error?: string;
1958
1950
  size?: 'sm' | 'md' | 'lg';
1959
1951
  }
1960
- declare function TimePicker({
1961
- value,
1962
- defaultValue,
1963
- onValueChange,
1964
- onChange,
1965
- min,
1966
- max,
1967
- step,
1968
- label,
1969
- hint,
1970
- error,
1971
- size,
1972
- className,
1973
- id,
1974
- onFocus,
1975
- onBlur,
1976
- ...props
1977
- }: TimePickerProps): import("react").JSX.Element;
1952
+ /**
1953
+ * `forwardRef` so `ref` reaches the underlying `<input>` — and so it is TYPED. See
1954
+ * `textarea.tsx` for the full rationale (2026-07-28 report C10). Enforced by
1955
+ * `ref-parity.test.ts`, which found this component: the plan's own list of 16 was itself
1956
+ * incomplete, which is why the rule is a guard and not a checklist.
1957
+ */
1958
+ declare const TimePicker: import("react").ForwardRefExoticComponent<TimePickerProps & import("react").RefAttributes<HTMLInputElement>>;
1978
1959
  interface UsePopoverOptions {
1979
1960
  open?: boolean;
1980
1961
  onOpenChange?: (open: boolean) => void;
@@ -2000,10 +1981,24 @@ declare function Popover({
2000
1981
  }: PopoverProps): import("react").JSX.Element;
2001
1982
  interface PopoverTriggerProps {
2002
1983
  children: ReactNode;
1984
+ /**
1985
+ * Render the single child element as the trigger instead of wrapping it in
1986
+ * `PopoverTrigger`'s own `<button>` — the Slot pattern. Use this whenever the child is
1987
+ * already an interactive element (`Button`, `IconButton`, a router link): nesting a
1988
+ * `<button>` inside a `<button>` is invalid HTML, and it orphans the inner element's
1989
+ * `aria-label` on a node the accessibility tree does not expect there.
1990
+ *
1991
+ * ```tsx
1992
+ * <PopoverTrigger asChild>
1993
+ * <IconButton label="Theme" icon={<Palette />} />
1994
+ * </PopoverTrigger>
1995
+ * ```
1996
+ */
2003
1997
  asChild?: boolean;
2004
1998
  }
2005
1999
  declare function PopoverTrigger({
2006
- children
2000
+ children,
2001
+ asChild
2007
2002
  }: PopoverTriggerProps): import("react").JSX.Element;
2008
2003
  interface PopoverContentProps {
2009
2004
  children: ReactNode;
@@ -2254,17 +2249,13 @@ interface PasswordInputProps extends Omit<InputHTMLAttributes<HTMLInputElement>,
2254
2249
  size?: 'sm' | 'md' | 'lg';
2255
2250
  labels?: PasswordInputLabels;
2256
2251
  }
2257
- declare function PasswordInput({
2258
- showStrengthMeter,
2259
- size,
2260
- labels,
2261
- className,
2262
- id,
2263
- value,
2264
- defaultValue,
2265
- onChange,
2266
- ...props
2267
- }: PasswordInputProps): import("react").JSX.Element;
2252
+ /**
2253
+ * `forwardRef` so `ref` reaches the underlying `<input>` — and so it is TYPED. See
2254
+ * `textarea.tsx` for the full rationale (2026-07-28 report C10). Enforced by
2255
+ * `ref-parity.test.ts`, which found this component: the plan's own list of 16 was itself
2256
+ * incomplete, which is why the rule is a guard and not a checklist.
2257
+ */
2258
+ declare const PasswordInput: import("react").ForwardRefExoticComponent<PasswordInputProps & import("react").RefAttributes<HTMLInputElement>>;
2268
2259
  interface MultiSelectOption {
2269
2260
  label: string;
2270
2261
  value: string;
@@ -2500,14 +2491,14 @@ interface RadioCardProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'na
2500
2491
  disabled?: boolean;
2501
2492
  hideIndicator?: boolean;
2502
2493
  }
2503
- declare function RadioCard({
2504
- value,
2505
- title,
2506
- description,
2507
- disabled,
2508
- hideIndicator,
2509
- ...props
2510
- }: RadioCardProps): import("react").JSX.Element;
2494
+ /**
2495
+ * `forwardRef` so `ref` reaches the underlying `<input>` — and so it is TYPED. See
2496
+ * `textarea.tsx` for the rationale (2026-07-28 report C10).
2497
+ *
2498
+ * `RadioCard` (the item), not `RadioCardGroup` (the container): the group renders a <div>
2499
+ * and only the card owns a focusable control.
2500
+ */
2501
+ declare const RadioCard: import("react").ForwardRefExoticComponent<RadioCardProps & import("react").RefAttributes<HTMLInputElement>>;
2511
2502
  interface ShellHeaderBrand {
2512
2503
  prefix?: string;
2513
2504
  name: string;
@@ -2621,16 +2612,13 @@ interface CheckboxCardProps extends Omit<InputHTMLAttributes<HTMLInputElement>,
2621
2612
  onCheckedChange?: (checked: boolean) => void;
2622
2613
  className?: string | undefined;
2623
2614
  }
2624
- declare function CheckboxCard({
2625
- title,
2626
- description,
2627
- checked,
2628
- defaultChecked,
2629
- disabled,
2630
- onCheckedChange,
2631
- className,
2632
- ...props
2633
- }: CheckboxCardProps): import("react").JSX.Element;
2615
+ /**
2616
+ * `forwardRef` so `ref` reaches the underlying `<input>` — and so it is TYPED. See
2617
+ * `textarea.tsx` for the full rationale (2026-07-28 report C10). Enforced by
2618
+ * `ref-parity.test.ts`, which found this component: the plan's own list of 16 was itself
2619
+ * incomplete, which is why the rule is a guard and not a checklist.
2620
+ */
2621
+ declare const CheckboxCard: import("react").ForwardRefExoticComponent<CheckboxCardProps & import("react").RefAttributes<HTMLInputElement>>;
2634
2622
  interface CopyButtonProps extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, 'value'> {
2635
2623
  /** The text written to the clipboard on click. */
2636
2624
  value: string;
@@ -2640,13 +2628,13 @@ interface CopyButtonProps extends Omit<ButtonHTMLAttributes<HTMLButtonElement>,
2640
2628
  copied?: string;
2641
2629
  };
2642
2630
  }
2643
- declare function CopyButton({
2644
- value,
2645
- size,
2646
- labels,
2647
- className,
2648
- ...props
2649
- }: CopyButtonProps): import("react").JSX.Element;
2631
+ /**
2632
+ * `forwardRef` so `ref` reaches the underlying `<button>` — and so it is TYPED. See
2633
+ * `textarea.tsx` for the full rationale (2026-07-28 report C10). Enforced by
2634
+ * `ref-parity.test.ts`, which found this component: the plan's own list of 16 was itself
2635
+ * incomplete, which is why the rule is a guard and not a checklist.
2636
+ */
2637
+ declare const CopyButton: import("react").ForwardRefExoticComponent<CopyButtonProps & import("react").RefAttributes<HTMLButtonElement>>;
2650
2638
  interface StatProps extends Omit<HTMLAttributes<HTMLDivElement>, 'children'> {
2651
2639
  label: string;
2652
2640
  value: string | number;
@@ -2710,12 +2698,13 @@ interface SkipNavLinkProps extends Omit<AnchorHTMLAttributes<HTMLAnchorElement>,
2710
2698
  };
2711
2699
  }
2712
2700
  /** Render as the FIRST focusable element on the page — visually hidden until focused. */
2713
- declare function SkipNavLink({
2714
- targetId,
2715
- labels,
2716
- className,
2717
- ...props
2718
- }: SkipNavLinkProps): import("react").JSX.Element;
2701
+ /**
2702
+ * `forwardRef` so `ref` reaches the underlying `<a>` — and so it is TYPED. See
2703
+ * `textarea.tsx` for the full rationale (2026-07-28 report C10). Enforced by
2704
+ * `ref-parity.test.ts`, which found this component: the plan's own list of 16 was itself
2705
+ * incomplete, which is why the rule is a guard and not a checklist.
2706
+ */
2707
+ declare const SkipNavLink: import("react").ForwardRefExoticComponent<SkipNavLinkProps & import("react").RefAttributes<HTMLAnchorElement>>;
2719
2708
  interface SkipNavTargetProps extends HTMLAttributes<HTMLDivElement> {
2720
2709
  /**
2721
2710
  * SkipNavTarget: anchor id — must match the link targetId
@@ -4095,18 +4084,14 @@ interface NativeSelectProps extends Omit<SelectHTMLAttributes<HTMLSelectElement>
4095
4084
  * layers on a custom chevron and focus/invalid rings via CSS only. No JS interactivity, so no
4096
4085
  * signals: the browser owns all state. Distinct from the custom-rendered `Select` listbox.
4097
4086
  */
4098
- declare function NativeSelect({
4099
- options,
4100
- children,
4101
- size,
4102
- invalid,
4103
- disabled,
4104
- placeholder,
4105
- value,
4106
- defaultValue,
4107
- className,
4108
- ...props
4109
- }: NativeSelectProps): import("react").JSX.Element;
4087
+ /**
4088
+ * `forwardRef` so `ref` reaches the underlying `<select>` — and so it is TYPED. See
4089
+ * `textarea.tsx` for the full rationale (2026-07-28 report C10): the ref already worked at
4090
+ * runtime under React 19, but nothing declared it, so passing one was a `ts(2322)` and every
4091
+ * consumer had to cast. `forwardRef` rather than a bare `ref?: Ref<T>` prop keeps the
4092
+ * `react >= 18` peer floor honest, since ref-as-prop does not work there.
4093
+ */
4094
+ declare const NativeSelect: import("react").ForwardRefExoticComponent<NativeSelectProps & import("react").RefAttributes<HTMLSelectElement>>;
4110
4095
  type CodeLang = 'bash' | 'css' | 'js' | 'ts';
4111
4096
  interface CodeSnippetProps {
4112
4097
  /** The code to display (and copy). */
@@ -4640,8 +4625,31 @@ declare function PageHeader({
4640
4625
  /**
4641
4626
  * Set the active theme imperatively, from anywhere. Persists the choice and
4642
4627
  * drives the `data-theme` attribute through the mounted {@link ThemeProvider}.
4628
+ *
4629
+ * Requires a mounted {@link ThemeProvider} — this writes the signal, the provider writes
4630
+ * the DOM. Without one, nothing restyles (dev builds warn). To write the attribute
4631
+ * directly, with no provider and no React, use {@link applyTheme}.
4643
4632
  */
4644
4633
  declare function setTheme(next: string): void;
4634
+ /**
4635
+ * Write a theme onto an element directly, with no provider and no React.
4636
+ *
4637
+ * The escape hatch for imperative setups: a theme toggle in a non-React shell, a
4638
+ * pre-hydration inline script, a Storybook decorator, an e2e test. Also updates the theme
4639
+ * signal, so a React tree reading {@link useTheme} stays in sync.
4640
+ *
4641
+ * `setTheme` deliberately does **not** do this itself: it is SSR-callable, and
4642
+ * `ThemeProvider` can scope a theme to any subtree via its `target` ref. A direct document
4643
+ * write inside `setTheme` would break scoped theming and touch `document` on the server.
4644
+ *
4645
+ * ```ts
4646
+ * applyTheme('midnight') // <html data-theme="midnight">
4647
+ * applyTheme('warm', panelRef.current) // scope to a subtree
4648
+ * ```
4649
+ *
4650
+ * No-op on the server (no `document`).
4651
+ */
4652
+ declare function applyTheme(next: string, target?: HTMLElement | null): void;
4645
4653
  /**
4646
4654
  * Read and set the active theme. Returns the current theme **name** (a plain
4647
4655
  * string) and a setter — the component re-renders when the theme changes with no
@@ -4753,4 +4761,4 @@ declare function themePreloadScript(options?: {
4753
4761
  attribute?: string;
4754
4762
  defaultTheme?: string;
4755
4763
  }): string;
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 };
4764
+ export { Accordion, AccordionContent, AccordionItem, AccordionItemProps, AccordionProps, AccordionTrigger, ActionSheet, ActionSheetAction, ActionSheetProps, Alert, AlertDialog, AlertDialogLabels, AlertDialogProps, AlertProps, AppShell, AppShellProps, AspectRatio, AspectRatioProps, AutoGrid, AutoGridProps, Avatar, AvatarGroup, AvatarGroupLabels, AvatarGroupProps, AvatarProps, Badge, BadgeProps, Blockquote, BlockquoteProps, BottomSheet, BottomSheetProps, Breadcrumb, BreadcrumbItem, BreadcrumbProps, Button, ButtonGroup, ButtonGroupProps, ButtonProps, Calendar, CalendarLabels, CalendarProps, Card, CardContent, CardContentProps, CardFooter, CardFooterProps, CardHeader, CardHeaderProps, CardProps, CardTitle, CardTitleProps, Carousel, CarouselLabels, CarouselProps, Center, CenterProps, ChatBubble, ChatBubbleProps, ChatBubbleSide, Checkbox, CheckboxCard, CheckboxCardProps, CheckboxProps, Code, type CodeLang, CodeProps, CodeSnippet, CodeSnippetProps, Collapsible, CollapsibleProps, ColorPicker, ColorPickerLabels, ColorPickerProps, Column, Columns, ColumnsProps, Combobox, ComboboxLabels, ComboboxOption, ComboboxProps, CommandAction, CommandGroup, CommandItem, CommandMenu, CommandMenuProps, CommandPage, CommandScope, CommandStatus, Comparison, ComparisonProps, ContainedList, ContainedListItem, ContainedListItemProps, ContainedListProps, ContextMenu, ContextMenuItem, ContextMenuItemProps, ContextMenuProps, CopyButton, CopyButtonProps, DataList, DataListItem, DataListProps, DataTable, DataTableLabels, DataTableProps, DatePicker, DatePickerLabels, DatePickerProps, DateRange, DateRangePicker, DateRangePickerLabels, DateRangePickerProps, DateRangePreset, DismissableLayer, type DismissableLayerProps, Dock, DockItem, DockProps, Drawer, DrawerProps, Dropdown, DropdownItem, DropdownProps, Editable, EditableProps, EmptyState, EmptyStateProps, ErrorBoundary, Fab, FabAction, FabProps, Field, FieldProps, FileUploader, FileUploaderLabels, FileUploaderProps, Filter, FilterOption, FilterProps, FilterVariant, Flex, FlexProps, FocusScope, Form, FormConfig, FormProps, FormStore, FuzzyMatch, Grid, GridAlign, GridItem, GridItemProps, GridProps, Header, HeaderLabels, HeaderLink, HeaderPanel, HeaderPanelLabels, HeaderPanelProps, HeaderProps, Heading, HeadingLevel, HeadingProps, HeadingSize, HoverCard, HoverCardContent, HoverCardContentProps, HoverCardProps, HoverCardTrigger, HoverCardTriggerProps, IconButton, IconButtonProps, Image, ImageProps, Indicator, IndicatorPlacement, IndicatorProps, InlineLoading, InlineLoadingProps, InlineLoadingStatus, Input, InputGroup, InputGroupAddon, type InputGroupAddonProps, type InputGroupProps, InputProps, Item, ItemActions, ItemActionsProps, ItemContent, ItemContentProps, ItemDescription, ItemDescriptionProps, ItemMedia, ItemMediaProps, ItemProps, ItemTitle, ItemTitleProps, Join, JoinOrientation, JoinProps, Kbd, KbdProps, Label, LabelProps, Link, type LinkComponent, type LinkComponentProps, LinkProps, List, ListItem, ListItemProps, ListProps, LogLevel, LogLine, LogViewer, LogViewerLabels, LogViewerProps, type Machine, type MachineConfig, Menu, MenuButton, MenuButtonItem, MenuButtonProps, MenuItem, MenuItemProps, MenuProps, MenuSeparator, MenuTrigger, MenuTriggerProps, Menubar, MenubarItem, MenubarMenu, MenubarProps, Modal, ModalProps, MultiSelect, MultiSelectLabels, MultiSelectOption, MultiSelectProps, NativeSelect, NativeSelectOption, NativeSelectProps, NavigationMenu, NavigationMenuItem, NavigationMenuProps, Notification, NotificationProps, NotificationVariant, NumberInput, NumberInputProps, OtpInput, OtpInputProps, OverflowMenu, OverflowMenuItem, OverflowMenuProps, PageHeader, PageHeaderProps, Pagination, PaginationLabels, PaginationProps, PasswordInput, PasswordInputLabels, PasswordInputProps, Popover, PopoverContent, PopoverContentProps, PopoverProps, PopoverTrigger, PopoverTriggerProps, Portal, Presence, Progress, ProgressBar, ProgressBarProps, ProgressCircle, ProgressCircleProps, ProgressIndicator, ProgressIndicatorProps, ProgressProps, ProgressSize, ProgressStep, ProgressVariant, Prose, ProseProps, PullToRefresh, PullToRefreshProps, QrCode, QrCodeProps, RadialProgress, RadialProgressProps, RadialProgressSize, RadialProgressVariant, Radio, RadioCard, RadioCardGroup, RadioCardGroupProps, RadioCardProps, RadioGroup, RadioGroupProps, RadioProps, RatingGroup, RatingGroupLabels, RatingGroupProps, RelativeTime, RelativeTimeProps, Resizable, ResizableProps, Responsive, ScrollArea, ScrollAreaProps, Search, SearchProps, SegmentedControl, SegmentedControlOption, SegmentedControlProps, Select, SelectOption, SelectProps, Separator, SeparatorProps, Sheet, SheetProps, ShellHeader, ShellHeaderAction, ShellHeaderBrand, ShellHeaderLabels, ShellHeaderNavItem, ShellHeaderNavLink, ShellHeaderNavMenu, ShellHeaderNavMenuItem, ShellHeaderProps, SideNav, SideNavGroup, SideNavItem, SideNavLinkProps, SideNavLinkSubItem, SideNavProps, SideNavSubItem, SideNavTone, Skeleton, SkeletonProps, SkipNavLink, SkipNavLinkProps, SkipNavTarget, SkipNavTargetProps, Slider, SliderProps, Slot, type SlotProps, SortDirection, SortState, Spacer, SpacerProps, Spinner, SpinnerProps, Stack, StackProps, type StandardSchemaV1, Stat, StatProps, Status, StatusProps, Step, StepState, Steps, StepsProps, StructuredList, StructuredListItem, StructuredListProps, SuspenseBoundary, Swap, SwapMode, SwapProps, SwipeAction, SwipeItem, SwipeItemProps, Switcher, SwitcherEntry, SwitcherLink, SwitcherProps, Tabs, TabsContent, TabsContentProps, TabsList, TabsProps, TabsTrigger, TabsTriggerProps, Tag, TagProps, TagsInput, TagsInputProps, Text, TextProps, Textarea, TextareaProps, ThemeProvider, type ThemeProviderProps, Tile, TileProps, TimePicker, TimePickerProps, Timeline, TimelineItem, TimelineProps, ToastOptions, ToastProvider, ToastVariant, Toc, TocItem, TocProps, Toggle, ToggleGroup, ToggleGroupItem, ToggleGroupProps, ToggleProps, Toggletip, ToggletipPlacement, ToggletipProps, Tooltip, TooltipProps, TreeNode, TreeView, TreeViewProps, UploaderFile, type UseClipboardOptions, type UseClipboardReturn, type UseControllableSignalOptions, type UseDisclosureOptions, type UseDisclosureReturn, type UsePopoverOptions, type UsePopoverReturn, type UseTocFromRegionOptions, User, UserProps, VisuallyHidden, VisuallyHiddenProps, applyTheme, batch, cn, composeRefs, computePosition, computed, createForm, createMachine, createScope, createStreamBuffer, dismissAllToasts, effect, fuzzyMatch, fuzzyScore, getLinkComponent, mergeProps, setLinkComponent, setTheme, signal, themePreloadScript, themeSignal, treeViewMessages, useAnchorPosition, useClipboard, useComputed, useControllableSignal, useDisclosure, useEffectPropSignal, useForm, useId, useMachine, useMediaQuery, usePopover, useRovingFocus, useScope, useScrollLock, useSignal, useSignalEffect, useSignals, useStreamBuffer, useTheme, useToast, useTocFromRegion, useTypeahead };
@@ -2,53 +2,54 @@
2
2
 
3
3
  import e from "./input.module.js";
4
4
  import { cn as t, createMachine as n, useMachine as r } from "@cascivo/core";
5
- import { jsx as i, jsxs as a } from "react/jsx-runtime";
5
+ import { forwardRef as i } from "react";
6
+ import { jsx as a, jsxs as o } from "react/jsx-runtime";
6
7
  //#region ../components/src/input/input.tsx
7
- var o = n({
8
+ var s = n({
8
9
  initial: "idle",
9
10
  states: {
10
11
  idle: { on: { FOCUS: "focused" } },
11
12
  focused: { on: { BLUR: "idle" } }
12
13
  }
13
- });
14
- function s({ label: n, hint: s, error: c, size: l = "md", className: u, id: d, onFocus: f, onBlur: p, ...m }) {
15
- let [h, g] = r(o), _ = d ?? (n ? `cascade-input-${n.toLowerCase().replace(/\s+/g, "-")}` : void 0);
16
- return /* @__PURE__ */ a("div", {
14
+ }), c = i(function({ label: n, hint: i, error: c, size: l = "md", className: u, id: d, onFocus: f, onBlur: p, ...m }, h) {
15
+ let [g, _] = r(s), v = d ?? (n ? `cascade-input-${n.toLowerCase().replace(/\s+/g, "-")}` : void 0);
16
+ return /* @__PURE__ */ o("div", {
17
17
  className: t(e.wrapper, u),
18
- "data-state": c ? "error" : h.value,
18
+ "data-state": c ? "error" : g.value,
19
19
  "data-size": l,
20
20
  children: [
21
- n && /* @__PURE__ */ i("label", {
21
+ n && /* @__PURE__ */ a("label", {
22
22
  className: e.label,
23
- htmlFor: _,
23
+ htmlFor: v,
24
24
  children: n
25
25
  }),
26
- /* @__PURE__ */ i("input", {
27
- id: _,
26
+ /* @__PURE__ */ a("input", {
27
+ ref: h,
28
+ id: v,
28
29
  className: e.input,
29
30
  "aria-invalid": c ? !0 : void 0,
30
- "aria-describedby": c ? `${_}-error` : s ? `${_}-hint` : void 0,
31
+ "aria-describedby": c ? `${v}-error` : i ? `${v}-hint` : void 0,
31
32
  onFocus: (e) => {
32
- g("FOCUS"), f?.(e);
33
+ _("FOCUS"), f?.(e);
33
34
  },
34
35
  onBlur: (e) => {
35
- g("BLUR"), p?.(e);
36
+ _("BLUR"), p?.(e);
36
37
  },
37
38
  ...m
38
39
  }),
39
- c && /* @__PURE__ */ i("span", {
40
- id: `${_}-error`,
40
+ c && /* @__PURE__ */ a("span", {
41
+ id: `${v}-error`,
41
42
  className: e.error,
42
43
  role: "alert",
43
44
  children: c
44
45
  }),
45
- !c && s && /* @__PURE__ */ i("span", {
46
- id: `${_}-hint`,
46
+ !c && i && /* @__PURE__ */ a("span", {
47
+ id: `${v}-hint`,
47
48
  className: e.hint,
48
- children: s
49
+ children: i
49
50
  })
50
51
  ]
51
52
  });
52
- }
53
+ });
53
54
  //#endregion
54
- export { s as Input };
55
+ export { c as Input };