@datum-cloud/datum-ui 3.7.0 → 3.8.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 (196) hide show
  1. package/dist/{action-row-DTvs91_3.mjs → action-row-BEzE9x37.mjs} +2 -3
  2. package/dist/{adapter-context-h0jCVqGO.mjs → adapter-context-XT749tyT.mjs} +1 -2
  3. package/dist/alert/index.mjs +1 -2
  4. package/dist/{alert-SAPwee1h.mjs → alert-CVckvox4.mjs} +2 -3
  5. package/dist/app-navigation/index.mjs +2 -2
  6. package/dist/{app-navigation-BB_NLEWv.mjs → app-navigation-DyNZwlSG.mjs} +14 -20
  7. package/dist/assistant/index.mjs +57 -63
  8. package/dist/autocomplete/index.mjs +1 -2
  9. package/dist/{autocomplete-BxtzndxZ.mjs → autocomplete-D0zAcT78.mjs} +6 -8
  10. package/dist/autosearch/index.mjs +8 -10
  11. package/dist/avatar/index.mjs +2 -3
  12. package/dist/avatar-stack/index.mjs +1 -2
  13. package/dist/{avatar-stack-BUcsjhA6.mjs → avatar-stack-2ow672bR.mjs} +3 -4
  14. package/dist/badge/index.mjs +181 -1
  15. package/dist/breadcrumb/index.mjs +1 -2
  16. package/dist/{breadcrumb-DmdhC8bE.mjs → breadcrumb-D97jAZ2N.mjs} +2 -3
  17. package/dist/button/index.mjs +2 -2
  18. package/dist/{button-CsdF61EI.mjs → button-C57mkFkS.mjs} +2 -3
  19. package/dist/{button-DoMqfQLu.mjs → button-Cn4KagBO.mjs} +4 -6
  20. package/dist/{button-CDPui_Ov.mjs → button-IK-Lnu_9.mjs} +3 -4
  21. package/dist/button-group/index.mjs +1 -2
  22. package/dist/{button-group-DFrTH4L8.mjs → button-group-C3GKo-0p.mjs} +3 -4
  23. package/dist/calendar/index.mjs +4 -5
  24. package/dist/{calendar-date-picker-DPvVAW2I.mjs → calendar-date-picker-CknZM6a2.mjs} +3 -4
  25. package/dist/card/index.mjs +1 -2
  26. package/dist/{card-save-bar-BZzNnKYj.mjs → card-save-bar-Te8jf-ie.mjs} +5 -8
  27. package/dist/chart/index.mjs +1 -2
  28. package/dist/{chart-EgzTS28l.mjs → chart-BsGsx2jb.mjs} +2 -3
  29. package/dist/checkbox/index.mjs +1 -2
  30. package/dist/checkbox-BAo5sbHk.mjs +84 -0
  31. package/dist/{close.icon-DdXKQ4m0.mjs → close.icon-BCPmH4nN.mjs} +2 -3
  32. package/dist/code-editor/index.mjs +1 -2
  33. package/dist/{col-BYGWTB4j.mjs → col-CYHIfPJq.mjs} +5 -9
  34. package/dist/collapsible/index.mjs +1 -7
  35. package/dist/collapsible-B-KP3JZ-.mjs +104 -0
  36. package/dist/command/index.mjs +1 -2
  37. package/dist/{command-C0aGIYnQ.mjs → command-B0be-zU5.mjs} +3 -4
  38. package/dist/components/base/checkbox/checkbox.d.ts +11 -3
  39. package/dist/components/base/collapsible/collapsible.d.ts +28 -0
  40. package/dist/components/base/collapsible/index.d.ts +1 -1
  41. package/dist/components/base/radio-group/radio-group.d.ts +11 -5
  42. package/dist/components/base/spinner/index.d.ts +1 -1
  43. package/dist/components/base/spinner/spinner.d.ts +11 -0
  44. package/dist/components/base/switch/switch.d.ts +6 -1
  45. package/dist/components/base/typography/typography.d.ts +1 -1
  46. package/dist/components/features/_shared/copy-state-icon.d.ts +12 -0
  47. package/dist/components/features/_shared/index.d.ts +2 -0
  48. package/dist/components/features/_shared/motion-chip.d.ts +293 -0
  49. package/dist/components/features/assistant/components/message/plan-card.d.ts +1 -1
  50. package/dist/components/icons/spinner.icon.d.ts +17 -3
  51. package/dist/copy-state-icon-DMvXXsZm.mjs +61 -0
  52. package/dist/data-table/index.mjs +1 -2
  53. package/dist/{data-table-CJiQQ6TM.mjs → data-table-CpBwO8Ea.mjs} +39 -66
  54. package/dist/date-picker/index.mjs +3 -3
  55. package/dist/date-time/index.mjs +1 -2
  56. package/dist/{date-time-lZdefM4H.mjs → date-time-BBRVM9qb.mjs} +4 -6
  57. package/dist/date-time-picker/index.mjs +1 -2
  58. package/dist/{date-time-picker-CricsXgF.mjs → date-time-picker-Bc41Ixrs.mjs} +3 -4
  59. package/dist/{date-time-range-picker-DM4AIvQ1.mjs → date-time-range-picker-yy1Acntn.mjs} +36 -59
  60. package/dist/dialog/index.mjs +1 -2
  61. package/dist/{dialog-Gu70fban.mjs → dialog-C8RXIQYm.mjs} +4 -5
  62. package/dist/{dialog-CmkrpaYy.mjs → dialog-D6sDXaH6.mjs} +2 -3
  63. package/dist/dropdown/index.mjs +1 -2
  64. package/dist/{dropdown-Xvduih96.mjs → dropdown-DR9j3Ni_.mjs} +3 -4
  65. package/dist/{dropdown-menu-b8zY5Cs6.mjs → dropdown-menu-CjgTr8Ab.mjs} +2 -3
  66. package/dist/dropzone/index.mjs +1 -2
  67. package/dist/{dropzone-ihksfjN2.mjs → dropzone-qKYfSe7o.mjs} +6 -8
  68. package/dist/empty-content/index.mjs +1 -2
  69. package/dist/{empty-content-CmuVcU0P.mjs → empty-content-CTMHak36.mjs} +8 -13
  70. package/dist/form/adapters/conform/index.mjs +4 -6
  71. package/dist/form/adapters/rhf/index.mjs +6 -9
  72. package/dist/form/index.mjs +2 -2
  73. package/dist/form/stepper/index.mjs +11 -16
  74. package/dist/{form-D4R6C609.mjs → form-DTaVgDSV.mjs} +64 -89
  75. package/dist/{form-context-DzB2a-dw.mjs → form-context-BRzt53M5.mjs} +1 -2
  76. package/dist/grid/index.mjs +1 -2
  77. package/dist/grouped-table/index.mjs +1 -2
  78. package/dist/{grouped-table-fHguJz9W.mjs → grouped-table-Dl6DclbV.mjs} +17 -25
  79. package/dist/hooks/index.mjs +4 -4
  80. package/dist/{hooks-CwZ6hyI1.mjs → hooks-WVJbyhCz.mjs} +1 -2
  81. package/dist/hover-card/index.mjs +1 -2
  82. package/dist/{hover-card-BNOE5vT5.mjs → hover-card-DSt1lZGg.mjs} +3 -5
  83. package/dist/{icon-wrapper-DKfJlJd0.mjs → icon-wrapper-CIk2th6R.mjs} +1 -2
  84. package/dist/icons/index.mjs +3 -3
  85. package/dist/index.mjs +80 -80
  86. package/dist/input/index.mjs +1 -2
  87. package/dist/{input-j4tbmYYz.mjs → input-DsT5qkJn.mjs} +3 -4
  88. package/dist/{input-DR-XbgpD.mjs → input-Wl1K48ca.mjs} +2 -3
  89. package/dist/input-group/index.mjs +1 -2
  90. package/dist/{input-group-DieA8aBt.mjs → input-group-CCzvJIZM.mjs} +5 -6
  91. package/dist/input-number/index.mjs +1 -2
  92. package/dist/{input-number-TXmW-X9o.mjs → input-number-DF-bfIo8.mjs} +5 -6
  93. package/dist/input-with-addons/index.mjs +2 -3
  94. package/dist/label/index.mjs +1 -2
  95. package/dist/{label-Bk6FXsju.mjs → label-BR1V3Imy.mjs} +3 -5
  96. package/dist/{layers-DWYdrGmC.mjs → layers-DLUbkJtt.mjs} +26 -27
  97. package/dist/loader-overlay/index.mjs +1 -2
  98. package/dist/{loader-overlay-DD94azZX.mjs → loader-overlay-DP0pvHuG.mjs} +3 -4
  99. package/dist/logo/index.mjs +2 -2
  100. package/dist/logo/themed/index.mjs +3 -4
  101. package/dist/{logo-C3FxD7jb.mjs → logo-CkzKra6H.mjs} +2 -3
  102. package/dist/{logo-text-Dpm5O6Kg.mjs → logo-text-B54YiEte.mjs} +6 -11
  103. package/dist/logs/fixtures/index.mjs +2 -4
  104. package/dist/logs/index.mjs +68 -87
  105. package/dist/map/index.mjs +1 -2
  106. package/dist/{map-leaflet-imports-S3kx8Q-S.mjs → map-leaflet-imports-Xdz9Xiaf.mjs} +1 -2
  107. package/dist/mobile-sheet/index.mjs +1 -2
  108. package/dist/{mobile-sheet-9TootJGg.mjs → mobile-sheet-1995HYY_.mjs} +6 -9
  109. package/dist/more-actions/index.mjs +2 -2
  110. package/dist/{more-actions-C3DYWO0a.mjs → more-actions-BlSOVwa8.mjs} +6 -7
  111. package/dist/{motion-DvGRWdsm.mjs → motion-DOrRbLmy.mjs} +1 -2
  112. package/dist/motion-chip-BczV7spP.mjs +52 -0
  113. package/dist/multi-select/index.mjs +1 -2
  114. package/dist/{multi-select-CF0Yq5yf.mjs → multi-select-C2cBrqXl.mjs} +61 -57
  115. package/dist/nprogress/index.mjs +1 -2
  116. package/dist/page-title/index.mjs +1 -2
  117. package/dist/{page-title-ipRWEOeM.mjs → page-title-Djl3LvPT.mjs} +2 -3
  118. package/dist/picker/index.mjs +2 -2
  119. package/dist/{picker-BoKXW6_s.mjs → picker-DC3GErYg.mjs} +14 -25
  120. package/dist/popover/index.mjs +1 -2
  121. package/dist/{popover-X82NwhX9.mjs → popover-7YxyP_W0.mjs} +3 -5
  122. package/dist/radio-group/index.mjs +1 -2
  123. package/dist/radio-group-Boxi2hm0.mjs +83 -0
  124. package/dist/responsive-dropdown/index.mjs +1 -2
  125. package/dist/{responsive-dropdown-C_KKgLbH.mjs → responsive-dropdown-DsWgpE_i.mjs} +5 -6
  126. package/dist/responsive-popover/index.mjs +1 -2
  127. package/dist/{responsive-popover-8VcjBM2d.mjs → responsive-popover-DJYd8lOK.mjs} +5 -6
  128. package/dist/rich-text-content/index.mjs +1 -2
  129. package/dist/{rich-text-content-DNonBD39.mjs → rich-text-content-BiIIowBU.mjs} +2 -3
  130. package/dist/rich-text-editor/index.mjs +2 -2
  131. package/dist/{rich-text-editor-CP1YyxMR.mjs → rich-text-editor-BUz06s-b.mjs} +14 -22
  132. package/dist/select/index.mjs +1 -2
  133. package/dist/{select-D4pk9e2d.mjs → select-DemYhwnG.mjs} +3 -4
  134. package/dist/{select-daE2Nn0Z.mjs → select-jgK6wyXj.mjs} +2 -3
  135. package/dist/separator/index.mjs +1 -2
  136. package/dist/{separator-vbPD_WFQ.mjs → separator-DNiiN2BN.mjs} +2 -3
  137. package/dist/settings-nav/index.mjs +1 -2
  138. package/dist/{settings-nav-Hf3GrCGv.mjs → settings-nav-CCZdPD-x.mjs} +2 -3
  139. package/dist/sheet/index.mjs +2 -2
  140. package/dist/{sheet-DHn6C_rs.mjs → sheet-DEpEJ_Rk.mjs} +4 -5
  141. package/dist/{sheet-DXCZyMHI.mjs → sheet-DYPtVIb2.mjs} +2 -3
  142. package/dist/sidebar/index.mjs +1 -2
  143. package/dist/{sidebar-sbqOOFii.mjs → sidebar-DWnxQWQ8.mjs} +13 -18
  144. package/dist/skeleton/index.mjs +3 -4
  145. package/dist/{skeleton-DFExK4GX.mjs → skeleton-CDPoo7-M.mjs} +2 -3
  146. package/dist/spinner/index.mjs +1 -2
  147. package/dist/spinner-DSlDJdWl.mjs +23 -0
  148. package/dist/spinner.icon-BiUnMAxw.mjs +104 -0
  149. package/dist/stepper/index.mjs +1 -2
  150. package/dist/{stepper-dNvkipop.mjs → stepper-ZipxpzWY.mjs} +10 -11
  151. package/dist/switch/index.mjs +1 -2
  152. package/dist/switch-IduVwiPZ.mjs +114 -0
  153. package/dist/table/index.mjs +2 -3
  154. package/dist/tabs/index.mjs +3 -4
  155. package/dist/tag-input/index.mjs +1 -2
  156. package/dist/{tag-input-c9OvWTSe.mjs → tag-input-a3ktkGrH.mjs} +46 -43
  157. package/dist/task-queue/index.mjs +1 -2
  158. package/dist/{task-queue-dropdown-CHPP5WIm.mjs → task-queue-dropdown-DuCAAybs.mjs} +39 -59
  159. package/dist/textarea/index.mjs +1 -2
  160. package/dist/{textarea-DiSGxCBO.mjs → textarea-CvhdK6JY.mjs} +3 -4
  161. package/dist/{textarea-CCxpXJdh.mjs → textarea-D36SE4ki.mjs} +2 -3
  162. package/dist/theme/index.mjs +1 -2
  163. package/dist/{themes-Ba2bajuF.mjs → themes-BoxnQbbu.mjs} +8 -10
  164. package/dist/time-picker/index.mjs +1 -2
  165. package/dist/{time-picker-DQlc2gKW.mjs → time-picker-B_am4eAK.mjs} +3 -4
  166. package/dist/{to-api-format-QuJ81vQ9.mjs → to-api-format-DyImCzCn.mjs} +15 -23
  167. package/dist/toast/index.mjs +2 -2
  168. package/dist/{toast-BUPlDkN3.mjs → toast-CizxCEcK.mjs} +4 -6
  169. package/dist/tooltip/index.mjs +1 -2
  170. package/dist/{tooltip-DhbN1BDK.mjs → tooltip-OIySjJWW.mjs} +3 -5
  171. package/dist/transfer/index.mjs +1 -2
  172. package/dist/{transfer-DsshYgIk.mjs → transfer-DGUeAQUL.mjs} +8 -14
  173. package/dist/{types-agDpVXBG.mjs → types-ChINrR8H.mjs} +7 -11
  174. package/dist/typography/index.mjs +1 -2
  175. package/dist/{typography-B1bpHKmV.mjs → typography-XFfN6PGD.mjs} +2 -3
  176. package/dist/{use-breakpoint-CwiUJSmk.mjs → use-breakpoint-zY_JYINK.mjs} +1 -2
  177. package/dist/{use-controllable-state-Dna7u3r9.mjs → use-controllable-state-DLeVgbAb.mjs} +1 -2
  178. package/dist/{use-copy-to-clipboard-DZDq_85T.mjs → use-copy-to-clipboard-CWKWHLxI.mjs} +1 -2
  179. package/dist/{use-debounced-search-input-yu_F0QBt.mjs → use-debounced-search-input-B4u28iLx.mjs} +1 -2
  180. package/dist/{use-deprecation-warning-DXrGc0jX.mjs → use-deprecation-warning-BS1V4IS5.mjs} +1 -2
  181. package/dist/{use-display-touched-CMEEv7aT.mjs → use-display-touched-BSq0Ninl.mjs} +3 -5
  182. package/dist/{use-option-picker-s2bUYwXC.mjs → use-option-picker-DXY2SNnT.mjs} +6 -9
  183. package/dist/{use-toast-Bpq0yJIT.mjs → use-toast-CZAZeS95.mjs} +3 -5
  184. package/dist/utils/index.mjs +3 -3
  185. package/dist/{utils-CA4QEIJ8.mjs → utils-CPJ5MCfd.mjs} +1 -2
  186. package/dist/{utils-Bu32wN-x.mjs → utils-CTIuhCOs.mjs} +1 -2
  187. package/dist/visually-hidden/index.mjs +1 -2
  188. package/dist/{visuallyhidden-D7L_qs8b.mjs → visuallyhidden-Mg4OsZ-l.mjs} +1 -2
  189. package/dist/{zod-helpers-YEhVo2S-.mjs → zod-helpers-JcfFVJJd.mjs} +1 -2
  190. package/package.json +20 -23
  191. package/dist/badge-DOZUr5DV.mjs +0 -183
  192. package/dist/checkbox-C6P12fio.mjs +0 -30
  193. package/dist/radio-group-LduBVTnh.mjs +0 -45
  194. package/dist/spinner-C5Xv-i2C.mjs +0 -14
  195. package/dist/spinner.icon-BYUMQ8H-.mjs +0 -48
  196. package/dist/switch-BaR-Vna4.mjs +0 -34
@@ -0,0 +1,104 @@
1
+ import { n as EASE, t as DURATION } from "./motion-DOrRbLmy.mjs";
2
+ import { t as useControllableState } from "./use-controllable-state-DLeVgbAb.mjs";
3
+ import * as React from "react";
4
+ import { jsx } from "react/jsx-runtime";
5
+ import { motion, useReducedMotion } from "motion/react";
6
+ import * as CollapsiblePrimitive from "@radix-ui/react-collapsible";
7
+ // src/components/base/collapsible/collapsible.tsx
8
+ /**
9
+ * Open state, mirrored from the root so `CollapsibleContent` can drive Motion.
10
+ * `null` means the content sits under a bare Radix root rather than ours, and
11
+ * falls back to Radix's own mount/unmount with no animation.
12
+ */
13
+ const CollapsibleOpenContext = React.createContext(null);
14
+ function Collapsible({ ref, open: openProp, defaultOpen, onOpenChange, ...props }) {
15
+ const [open, setOpen] = useControllableState(openProp, defaultOpen ?? false, onOpenChange);
16
+ return /* @__PURE__ */ jsx(CollapsibleOpenContext, {
17
+ value: open,
18
+ children: /* @__PURE__ */ jsx(CollapsiblePrimitive.Root, {
19
+ ref,
20
+ "data-slot": "collapsible",
21
+ open,
22
+ onOpenChange: setOpen,
23
+ ...props
24
+ })
25
+ });
26
+ }
27
+ Collapsible.displayName = "Collapsible";
28
+ const CollapsibleTrigger = CollapsiblePrimitive.Trigger;
29
+ const OPEN = {
30
+ height: {
31
+ duration: DURATION.medium,
32
+ ease: EASE.out
33
+ },
34
+ opacity: {
35
+ duration: DURATION.medium,
36
+ ease: EASE.out
37
+ }
38
+ };
39
+ const CLOSE = {
40
+ height: {
41
+ duration: .2,
42
+ ease: EASE.out
43
+ },
44
+ opacity: {
45
+ duration: .12,
46
+ ease: EASE.out
47
+ }
48
+ };
49
+ /**
50
+ * Collapsible content that animates its height and opacity with Motion.
51
+ *
52
+ * The node stays mounted. Radix would unmount it on close and drive the height
53
+ * from a measured CSS variable, which restarts from zero if the user toggles
54
+ * mid-animation and can measure 0px inside scroll containers. Motion animates
55
+ * to and from `height: auto` instead and retargets smoothly when interrupted.
56
+ * While closed the content is `inert`, so it is out of the tab order and the
57
+ * accessibility tree just as an unmounted node would be.
58
+ *
59
+ * Under reduced motion the height changes instantly and only the fade remains.
60
+ */
61
+ function CollapsibleContent({ ref, className, children, ...props }) {
62
+ const open = React.use(CollapsibleOpenContext);
63
+ const reduceMotion = Boolean(useReducedMotion());
64
+ const [settledClosed, setSettledClosed] = React.useState(open === false);
65
+ if (open && settledClosed) setSettledClosed(false);
66
+ if (open === null || props.asChild) return /* @__PURE__ */ jsx(CollapsiblePrimitive.Content, {
67
+ ref,
68
+ "data-slot": "collapsible-content",
69
+ className,
70
+ ...props,
71
+ children
72
+ });
73
+ const transition = open ? OPEN : CLOSE;
74
+ return /* @__PURE__ */ jsx(CollapsiblePrimitive.Content, {
75
+ ref,
76
+ forceMount: true,
77
+ hidden: !open && settledClosed,
78
+ asChild: true,
79
+ ...props,
80
+ children: /* @__PURE__ */ jsx(motion.div, {
81
+ "data-slot": "collapsible-content",
82
+ initial: false,
83
+ animate: {
84
+ height: open ? "auto" : 0,
85
+ opacity: open ? 1 : 0
86
+ },
87
+ transition: reduceMotion ? {
88
+ ...transition,
89
+ height: { duration: 0 }
90
+ } : transition,
91
+ onAnimationComplete: () => {
92
+ if (!open) setSettledClosed(true);
93
+ },
94
+ inert: !open,
95
+ style: { overflow: "hidden" },
96
+ children: /* @__PURE__ */ jsx("div", {
97
+ className,
98
+ children
99
+ })
100
+ })
101
+ });
102
+ }
103
+ CollapsibleContent.displayName = "CollapsibleContent";
104
+ export { CollapsibleContent as n, CollapsibleTrigger as r, Collapsible as t };
@@ -1,2 +1 @@
1
- import { a as CommandInput, c as CommandSeparator, i as CommandGroup, l as CommandShortcut, n as CommandDialog, o as CommandItem, r as CommandEmpty, s as CommandList, t as Command } from "../command-C0aGIYnQ.mjs";
2
- export { Command, CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator, CommandShortcut };
1
+ export { t as Command, n as CommandDialog, r as CommandEmpty, i as CommandGroup, a as CommandInput, o as CommandItem, s as CommandList, c as CommandSeparator, l as CommandShortcut } from "../command-B0be-zU5.mjs";
@@ -1,10 +1,10 @@
1
- import { t as cn } from "./utils-Bu32wN-x.mjs";
2
- import { i as DialogDescription, l as DialogTitle, o as DialogHeader, r as DialogContent, t as Dialog } from "./dialog-CmkrpaYy.mjs";
1
+ import { t as cn } from "./utils-CTIuhCOs.mjs";
2
+ import { i as DialogDescription, l as DialogTitle, o as DialogHeader, r as DialogContent, t as Dialog } from "./dialog-D6sDXaH6.mjs";
3
3
  import { SearchIcon } from "lucide-react";
4
4
  import "react";
5
5
  import { jsx, jsxs } from "react/jsx-runtime";
6
6
  import { Command } from "cmdk";
7
- //#region ../shadcn/ui/command.tsx
7
+ // ../shadcn/ui/command.tsx
8
8
  function Command$1({ className, ...props }) {
9
9
  return /* @__PURE__ */ jsx(Command, {
10
10
  "data-slot": "command",
@@ -80,5 +80,4 @@ function CommandShortcut({ className, ...props }) {
80
80
  ...props
81
81
  });
82
82
  }
83
- //#endregion
84
83
  export { CommandInput as a, CommandSeparator as c, CommandGroup as i, CommandShortcut as l, CommandDialog as n, CommandItem as o, CommandEmpty as r, CommandList as s, Command$1 as t };
@@ -1,7 +1,15 @@
1
- import { Checkbox as ShadcnCheckbox } from '../../../_shadcn/ui/checkbox';
1
+ import * as CheckboxPrimitive from '@radix-ui/react-checkbox';
2
2
  import * as React from 'react';
3
- declare function Checkbox({ ref, className, ...props }: React.ComponentProps<typeof ShadcnCheckbox> & {
4
- ref?: React.RefObject<React.ElementRef<typeof ShadcnCheckbox> | null>;
3
+ /**
4
+ * Checkbox renders the Radix primitive directly rather than wrapping the
5
+ * shadcn one, so the indicator can stay mounted and animate out as well as in.
6
+ * The shadcn base stays untouched and can be regenerated from upstream.
7
+ *
8
+ * The checked state is mirrored here (controlled or not) because Motion needs
9
+ * it in JS to drive the check mark.
10
+ */
11
+ declare function Checkbox({ ref, className, checked: checkedProp, defaultChecked, onCheckedChange, ...props }: React.ComponentProps<typeof CheckboxPrimitive.Root> & {
12
+ ref?: React.RefObject<React.ElementRef<typeof CheckboxPrimitive.Root> | null>;
5
13
  }): React.JSX.Element;
6
14
  declare namespace Checkbox {
7
15
  var displayName: string;
@@ -0,0 +1,28 @@
1
+ import * as CollapsiblePrimitive from '@radix-ui/react-collapsible';
2
+ import * as React from 'react';
3
+ declare function Collapsible({ ref, open: openProp, defaultOpen, onOpenChange, ...props }: React.ComponentProps<typeof CollapsiblePrimitive.Root> & {
4
+ ref?: React.RefObject<React.ElementRef<typeof CollapsiblePrimitive.Root> | null>;
5
+ }): React.JSX.Element;
6
+ declare namespace Collapsible {
7
+ var displayName: string;
8
+ }
9
+ declare const CollapsibleTrigger: React.ForwardRefExoticComponent<CollapsiblePrimitive.CollapsibleTriggerProps & React.RefAttributes<HTMLButtonElement>>;
10
+ /**
11
+ * Collapsible content that animates its height and opacity with Motion.
12
+ *
13
+ * The node stays mounted. Radix would unmount it on close and drive the height
14
+ * from a measured CSS variable, which restarts from zero if the user toggles
15
+ * mid-animation and can measure 0px inside scroll containers. Motion animates
16
+ * to and from `height: auto` instead and retargets smoothly when interrupted.
17
+ * While closed the content is `inert`, so it is out of the tab order and the
18
+ * accessibility tree just as an unmounted node would be.
19
+ *
20
+ * Under reduced motion the height changes instantly and only the fade remains.
21
+ */
22
+ declare function CollapsibleContent({ ref, className, children, ...props }: React.ComponentProps<typeof CollapsiblePrimitive.Content> & {
23
+ ref?: React.RefObject<React.ElementRef<typeof CollapsiblePrimitive.Content> | null>;
24
+ }): React.JSX.Element;
25
+ declare namespace CollapsibleContent {
26
+ var displayName: string;
27
+ }
28
+ export { Collapsible, CollapsibleContent, CollapsibleTrigger };
@@ -1 +1 @@
1
- export * from '../../../_shadcn/ui/collapsible';
1
+ export { Collapsible, CollapsibleContent, CollapsibleTrigger } from './collapsible';
@@ -1,13 +1,19 @@
1
- import { RadioGroup as ShadcnRadioGroup, RadioGroupItem as ShadcnRadioGroupItem } from '../../../_shadcn/ui/radio-group';
1
+ import * as RadioGroupPrimitive from '@radix-ui/react-radio-group';
2
2
  import * as React from 'react';
3
- declare function RadioGroup({ ref, className, ...props }: React.ComponentProps<typeof ShadcnRadioGroup> & {
4
- ref?: React.RefObject<React.ElementRef<typeof ShadcnRadioGroup> | null>;
3
+ declare function RadioGroup({ ref, className, value: valueProp, defaultValue, onValueChange, ...props }: React.ComponentProps<typeof RadioGroupPrimitive.Root> & {
4
+ ref?: React.RefObject<React.ElementRef<typeof RadioGroupPrimitive.Root> | null>;
5
5
  }): React.JSX.Element;
6
6
  declare namespace RadioGroup {
7
7
  var displayName: string;
8
8
  }
9
- declare function RadioGroupItem({ ref, className, ...props }: React.ComponentProps<typeof ShadcnRadioGroupItem> & {
10
- ref?: React.RefObject<React.ElementRef<typeof ShadcnRadioGroupItem> | null>;
9
+ /**
10
+ * RadioGroupItem renders the Radix primitive directly (not the shadcn wrapper)
11
+ * so the dot can stay mounted and animate out as well as in. The dot pops in
12
+ * from half size with a small spring and fades out quickly when another option
13
+ * takes the selection. Under reduced motion it only fades.
14
+ */
15
+ declare function RadioGroupItem({ ref, className, value, ...props }: React.ComponentProps<typeof RadioGroupPrimitive.Item> & {
16
+ ref?: React.RefObject<React.ElementRef<typeof RadioGroupPrimitive.Item> | null>;
11
17
  }): React.JSX.Element;
12
18
  declare namespace RadioGroupItem {
13
19
  var displayName: string;
@@ -1 +1 @@
1
- export * from '../../../_shadcn/ui/spinner';
1
+ export { Spinner } from './spinner';
@@ -0,0 +1,11 @@
1
+ import type * as React from 'react';
2
+ /**
3
+ * Standalone loading indicator, announced to assistive tech as a status.
4
+ *
5
+ * Built on `SpinnerIcon`. It differs in three ways: it is `size-4` unless a
6
+ * size class is passed, it carries `role="status"`, and its colour comes from
7
+ * `className` (default `text-primary`), so `<Spinner className="text-white" />`
8
+ * recolours the arc and its track together.
9
+ */
10
+ declare function Spinner({ className, ...props }: React.ComponentProps<'svg'>): React.JSX.Element;
11
+ export { Spinner };
@@ -5,8 +5,13 @@ import * as React from 'react';
5
5
  * one, because its state glyphs go inside the thumb. Building it here keeps the
6
6
  * shadcn base untouched, so that base can be regenerated from upstream without
7
7
  * losing anything of ours.
8
+ *
9
+ * Motion drives the thumb: it slides on a light spring, stretches while the
10
+ * pointer is held down (so the press registers before the release toggles it),
11
+ * and the on/off glyphs cross-fade. Under reduced motion the thumb moves
12
+ * instantly and only the glyphs fade.
8
13
  */
9
- declare function Switch({ ref, className, ...props }: React.ComponentProps<typeof SwitchPrimitive.Root> & {
14
+ declare function Switch({ ref, className, checked: checkedProp, defaultChecked, onCheckedChange, onPointerDown, onPointerUp, onPointerLeave, onPointerCancel, ...props }: React.ComponentProps<typeof SwitchPrimitive.Root> & {
10
15
  ref?: React.RefObject<React.ElementRef<typeof SwitchPrimitive.Root> | null>;
11
16
  }): React.JSX.Element;
12
17
  declare namespace Switch {
@@ -1,7 +1,7 @@
1
1
  import type { VariantProps } from 'class-variance-authority';
2
2
  import * as React from 'react';
3
3
  declare const titleVariants: (props?: ({
4
- level?: 1 | 2 | 3 | 4 | 5 | 6 | 7 | null | undefined;
4
+ level?: 1 | 2 | 4 | 3 | 5 | 6 | 7 | null | undefined;
5
5
  weight?: "bold" | "normal" | "medium" | "semibold" | "extrabold" | null | undefined;
6
6
  textColor?: "default" | "secondary" | "destructive" | "success" | "info" | "warning" | "primary" | "muted" | null | undefined;
7
7
  } & import("class-variance-authority/types").ClassProp) | undefined) => string;
@@ -0,0 +1,12 @@
1
+ import type { LucideProps } from 'lucide-react';
2
+ /**
3
+ * Copy glyph that turns into a check once the copy has happened, and back again
4
+ * when `copied` resets. The two glyphs are stacked and cross-fade with a scale
5
+ * and a light blur, so the swap reads as one icon changing rather than two
6
+ * swapping places. Under reduced motion it only fades.
7
+ *
8
+ * Decorative: the owning button carries the accessible label.
9
+ */
10
+ export declare function CopyStateIcon({ copied, ...iconProps }: LucideProps & {
11
+ copied: boolean;
12
+ }): import("react").JSX.Element;
@@ -1,2 +1,4 @@
1
+ export { CopyStateIcon } from './copy-state-icon';
2
+ export { MotionBadge, useChipMotion } from './motion-chip';
1
3
  export { endOfDayInTz, startOfDayInTz } from './timezone';
2
4
  export { useDeprecationWarning } from './use-deprecation-warning';
@@ -0,0 +1,293 @@
1
+ import type { HTMLMotionProps } from 'motion/react';
2
+ /** `Badge` as a Motion component, so chips can enter, exit and reflow. */
3
+ export declare const MotionBadge: import("react").ComponentType<Omit<{
4
+ slot?: string | undefined;
5
+ title?: string | undefined;
6
+ className?: string | undefined;
7
+ defaultChecked?: boolean | undefined;
8
+ defaultValue?: string | number | readonly string[] | undefined;
9
+ suppressContentEditableWarning?: boolean | undefined;
10
+ suppressHydrationWarning?: boolean | undefined;
11
+ accessKey?: string | undefined;
12
+ autoCapitalize?: "none" | (string & {}) | "off" | "on" | "sentences" | "words" | "characters" | undefined;
13
+ autoFocus?: boolean | undefined;
14
+ contentEditable?: (boolean | "true" | "false") | "inherit" | "plaintext-only" | undefined;
15
+ contextMenu?: string | undefined;
16
+ dir?: string | undefined;
17
+ draggable?: (boolean | "true" | "false") | undefined;
18
+ enterKeyHint?: "search" | "enter" | "done" | "go" | "next" | "previous" | "send" | undefined;
19
+ hidden?: boolean | undefined;
20
+ id?: string | undefined;
21
+ lang?: string | undefined;
22
+ nonce?: string | undefined;
23
+ spellCheck?: (boolean | "true" | "false") | undefined;
24
+ tabIndex?: number | undefined;
25
+ translate?: "yes" | "no" | undefined;
26
+ radioGroup?: string | undefined;
27
+ role?: import("react").AriaRole | undefined;
28
+ about?: string | undefined;
29
+ content?: string | undefined;
30
+ datatype?: string | undefined;
31
+ inlist?: any;
32
+ prefix?: string | undefined;
33
+ property?: string | undefined;
34
+ rel?: string | undefined;
35
+ resource?: string | undefined;
36
+ rev?: string | undefined;
37
+ typeof?: string | undefined;
38
+ vocab?: string | undefined;
39
+ autoCorrect?: string | undefined;
40
+ autoSave?: string | undefined;
41
+ color?: string | undefined;
42
+ itemProp?: string | undefined;
43
+ itemScope?: boolean | undefined;
44
+ itemType?: string | undefined;
45
+ itemID?: string | undefined;
46
+ itemRef?: string | undefined;
47
+ results?: number | undefined;
48
+ security?: string | undefined;
49
+ unselectable?: "off" | "on" | undefined;
50
+ popover?: "" | "auto" | "manual" | "hint" | undefined;
51
+ popoverTargetAction?: "toggle" | "show" | "hide" | undefined;
52
+ popoverTarget?: string | undefined;
53
+ inert?: boolean | undefined;
54
+ inputMode?: "search" | "text" | "none" | "tel" | "url" | "email" | "numeric" | "decimal" | undefined;
55
+ is?: string | undefined;
56
+ exportparts?: string | undefined;
57
+ part?: string | undefined;
58
+ "aria-activedescendant"?: string | undefined;
59
+ "aria-atomic"?: (boolean | "true" | "false") | undefined;
60
+ "aria-autocomplete"?: "list" | "none" | "inline" | "both" | undefined;
61
+ "aria-braillelabel"?: string | undefined;
62
+ "aria-brailleroledescription"?: string | undefined;
63
+ "aria-busy"?: (boolean | "true" | "false") | undefined;
64
+ "aria-checked"?: boolean | "true" | "false" | "mixed" | undefined;
65
+ "aria-colcount"?: number | undefined;
66
+ "aria-colindex"?: number | undefined;
67
+ "aria-colindextext"?: string | undefined;
68
+ "aria-colspan"?: number | undefined;
69
+ "aria-controls"?: string | undefined;
70
+ "aria-current"?: boolean | "true" | "false" | "time" | "page" | "step" | "location" | "date" | undefined;
71
+ "aria-describedby"?: string | undefined;
72
+ "aria-description"?: string | undefined;
73
+ "aria-details"?: string | undefined;
74
+ "aria-disabled"?: (boolean | "true" | "false") | undefined;
75
+ "aria-dropeffect"?: "link" | "none" | "copy" | "execute" | "move" | "popup" | undefined;
76
+ "aria-errormessage"?: string | undefined;
77
+ "aria-expanded"?: (boolean | "true" | "false") | undefined;
78
+ "aria-flowto"?: string | undefined;
79
+ "aria-grabbed"?: (boolean | "true" | "false") | undefined;
80
+ "aria-haspopup"?: boolean | "true" | "false" | "dialog" | "menu" | "grid" | "listbox" | "tree" | undefined;
81
+ "aria-hidden"?: (boolean | "true" | "false") | undefined;
82
+ "aria-invalid"?: boolean | "true" | "false" | "grammar" | "spelling" | undefined;
83
+ "aria-keyshortcuts"?: string | undefined;
84
+ "aria-label"?: string | undefined;
85
+ "aria-labelledby"?: string | undefined;
86
+ "aria-level"?: number | undefined;
87
+ "aria-live"?: "off" | "assertive" | "polite" | undefined;
88
+ "aria-modal"?: (boolean | "true" | "false") | undefined;
89
+ "aria-multiline"?: (boolean | "true" | "false") | undefined;
90
+ "aria-multiselectable"?: (boolean | "true" | "false") | undefined;
91
+ "aria-orientation"?: "horizontal" | "vertical" | undefined;
92
+ "aria-owns"?: string | undefined;
93
+ "aria-placeholder"?: string | undefined;
94
+ "aria-posinset"?: number | undefined;
95
+ "aria-pressed"?: boolean | "true" | "false" | "mixed" | undefined;
96
+ "aria-readonly"?: (boolean | "true" | "false") | undefined;
97
+ "aria-relevant"?: "text" | "all" | "additions" | "additions removals" | "additions text" | "removals" | "removals additions" | "removals text" | "text additions" | "text removals" | undefined;
98
+ "aria-required"?: (boolean | "true" | "false") | undefined;
99
+ "aria-roledescription"?: string | undefined;
100
+ "aria-rowcount"?: number | undefined;
101
+ "aria-rowindex"?: number | undefined;
102
+ "aria-rowindextext"?: string | undefined;
103
+ "aria-rowspan"?: number | undefined;
104
+ "aria-selected"?: (boolean | "true" | "false") | undefined;
105
+ "aria-setsize"?: number | undefined;
106
+ "aria-sort"?: "none" | "ascending" | "descending" | "other" | undefined;
107
+ "aria-valuemax"?: number | undefined;
108
+ "aria-valuemin"?: number | undefined;
109
+ "aria-valuenow"?: number | undefined;
110
+ "aria-valuetext"?: string | undefined;
111
+ dangerouslySetInnerHTML?: {
112
+ __html: string | TrustedHTML;
113
+ } | undefined;
114
+ onCopy?: import("react").ClipboardEventHandler<HTMLDivElement> | undefined;
115
+ onCopyCapture?: import("react").ClipboardEventHandler<HTMLDivElement> | undefined;
116
+ onCut?: import("react").ClipboardEventHandler<HTMLDivElement> | undefined;
117
+ onCutCapture?: import("react").ClipboardEventHandler<HTMLDivElement> | undefined;
118
+ onPaste?: import("react").ClipboardEventHandler<HTMLDivElement> | undefined;
119
+ onPasteCapture?: import("react").ClipboardEventHandler<HTMLDivElement> | undefined;
120
+ onCompositionEnd?: import("react").CompositionEventHandler<HTMLDivElement> | undefined;
121
+ onCompositionEndCapture?: import("react").CompositionEventHandler<HTMLDivElement> | undefined;
122
+ onCompositionStart?: import("react").CompositionEventHandler<HTMLDivElement> | undefined;
123
+ onCompositionStartCapture?: import("react").CompositionEventHandler<HTMLDivElement> | undefined;
124
+ onCompositionUpdate?: import("react").CompositionEventHandler<HTMLDivElement> | undefined;
125
+ onCompositionUpdateCapture?: import("react").CompositionEventHandler<HTMLDivElement> | undefined;
126
+ onFocus?: import("react").FocusEventHandler<HTMLDivElement> | undefined;
127
+ onFocusCapture?: import("react").FocusEventHandler<HTMLDivElement> | undefined;
128
+ onBlur?: import("react").FocusEventHandler<HTMLDivElement> | undefined;
129
+ onBlurCapture?: import("react").FocusEventHandler<HTMLDivElement> | undefined;
130
+ onChange?: import("react").ChangeEventHandler<HTMLDivElement, Element> | undefined;
131
+ onChangeCapture?: import("react").ChangeEventHandler<HTMLDivElement, Element> | undefined;
132
+ onBeforeInput?: import("react").InputEventHandler<HTMLDivElement> | undefined;
133
+ onBeforeInputCapture?: import("react").InputEventHandler<HTMLDivElement> | undefined;
134
+ onInput?: import("react").InputEventHandler<HTMLDivElement> | undefined;
135
+ onInputCapture?: import("react").InputEventHandler<HTMLDivElement> | undefined;
136
+ onReset?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
137
+ onResetCapture?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
138
+ onSubmit?: import("react").SubmitEventHandler<HTMLDivElement> | undefined;
139
+ onSubmitCapture?: import("react").SubmitEventHandler<HTMLDivElement> | undefined;
140
+ onInvalid?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
141
+ onInvalidCapture?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
142
+ onLoad?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
143
+ onLoadCapture?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
144
+ onError?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
145
+ onErrorCapture?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
146
+ onKeyDown?: import("react").KeyboardEventHandler<HTMLDivElement> | undefined;
147
+ onKeyDownCapture?: import("react").KeyboardEventHandler<HTMLDivElement> | undefined;
148
+ onKeyPress?: import("react").KeyboardEventHandler<HTMLDivElement> | undefined;
149
+ onKeyPressCapture?: import("react").KeyboardEventHandler<HTMLDivElement> | undefined;
150
+ onKeyUp?: import("react").KeyboardEventHandler<HTMLDivElement> | undefined;
151
+ onKeyUpCapture?: import("react").KeyboardEventHandler<HTMLDivElement> | undefined;
152
+ onAbort?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
153
+ onAbortCapture?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
154
+ onCanPlay?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
155
+ onCanPlayCapture?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
156
+ onCanPlayThrough?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
157
+ onCanPlayThroughCapture?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
158
+ onDurationChange?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
159
+ onDurationChangeCapture?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
160
+ onEmptied?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
161
+ onEmptiedCapture?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
162
+ onEncrypted?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
163
+ onEncryptedCapture?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
164
+ onEnded?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
165
+ onEndedCapture?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
166
+ onLoadedData?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
167
+ onLoadedDataCapture?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
168
+ onLoadedMetadata?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
169
+ onLoadedMetadataCapture?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
170
+ onLoadStart?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
171
+ onLoadStartCapture?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
172
+ onPause?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
173
+ onPauseCapture?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
174
+ onPlay?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
175
+ onPlayCapture?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
176
+ onPlaying?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
177
+ onPlayingCapture?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
178
+ onProgress?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
179
+ onProgressCapture?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
180
+ onRateChange?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
181
+ onRateChangeCapture?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
182
+ onSeeked?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
183
+ onSeekedCapture?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
184
+ onSeeking?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
185
+ onSeekingCapture?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
186
+ onStalled?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
187
+ onStalledCapture?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
188
+ onSuspend?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
189
+ onSuspendCapture?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
190
+ onTimeUpdate?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
191
+ onTimeUpdateCapture?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
192
+ onVolumeChange?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
193
+ onVolumeChangeCapture?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
194
+ onWaiting?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
195
+ onWaitingCapture?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
196
+ onAuxClick?: import("react").MouseEventHandler<HTMLDivElement> | undefined;
197
+ onAuxClickCapture?: import("react").MouseEventHandler<HTMLDivElement> | undefined;
198
+ onClick?: import("react").MouseEventHandler<HTMLDivElement> | undefined;
199
+ onClickCapture?: import("react").MouseEventHandler<HTMLDivElement> | undefined;
200
+ onContextMenu?: import("react").MouseEventHandler<HTMLDivElement> | undefined;
201
+ onContextMenuCapture?: import("react").MouseEventHandler<HTMLDivElement> | undefined;
202
+ onDoubleClick?: import("react").MouseEventHandler<HTMLDivElement> | undefined;
203
+ onDoubleClickCapture?: import("react").MouseEventHandler<HTMLDivElement> | undefined;
204
+ onDragCapture?: import("react").DragEventHandler<HTMLDivElement> | undefined;
205
+ onDragEndCapture?: import("react").DragEventHandler<HTMLDivElement> | undefined;
206
+ onDragEnter?: import("react").DragEventHandler<HTMLDivElement> | undefined;
207
+ onDragEnterCapture?: import("react").DragEventHandler<HTMLDivElement> | undefined;
208
+ onDragExit?: import("react").DragEventHandler<HTMLDivElement> | undefined;
209
+ onDragExitCapture?: import("react").DragEventHandler<HTMLDivElement> | undefined;
210
+ onDragLeave?: import("react").DragEventHandler<HTMLDivElement> | undefined;
211
+ onDragLeaveCapture?: import("react").DragEventHandler<HTMLDivElement> | undefined;
212
+ onDragOver?: import("react").DragEventHandler<HTMLDivElement> | undefined;
213
+ onDragOverCapture?: import("react").DragEventHandler<HTMLDivElement> | undefined;
214
+ onDragStartCapture?: import("react").DragEventHandler<HTMLDivElement> | undefined;
215
+ onDrop?: import("react").DragEventHandler<HTMLDivElement> | undefined;
216
+ onDropCapture?: import("react").DragEventHandler<HTMLDivElement> | undefined;
217
+ onMouseDown?: import("react").MouseEventHandler<HTMLDivElement> | undefined;
218
+ onMouseDownCapture?: import("react").MouseEventHandler<HTMLDivElement> | undefined;
219
+ onMouseEnter?: import("react").MouseEventHandler<HTMLDivElement> | undefined;
220
+ onMouseLeave?: import("react").MouseEventHandler<HTMLDivElement> | undefined;
221
+ onMouseMove?: import("react").MouseEventHandler<HTMLDivElement> | undefined;
222
+ onMouseMoveCapture?: import("react").MouseEventHandler<HTMLDivElement> | undefined;
223
+ onMouseOut?: import("react").MouseEventHandler<HTMLDivElement> | undefined;
224
+ onMouseOutCapture?: import("react").MouseEventHandler<HTMLDivElement> | undefined;
225
+ onMouseOver?: import("react").MouseEventHandler<HTMLDivElement> | undefined;
226
+ onMouseOverCapture?: import("react").MouseEventHandler<HTMLDivElement> | undefined;
227
+ onMouseUp?: import("react").MouseEventHandler<HTMLDivElement> | undefined;
228
+ onMouseUpCapture?: import("react").MouseEventHandler<HTMLDivElement> | undefined;
229
+ onSelect?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
230
+ onSelectCapture?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
231
+ onTouchCancel?: import("react").TouchEventHandler<HTMLDivElement> | undefined;
232
+ onTouchCancelCapture?: import("react").TouchEventHandler<HTMLDivElement> | undefined;
233
+ onTouchEnd?: import("react").TouchEventHandler<HTMLDivElement> | undefined;
234
+ onTouchEndCapture?: import("react").TouchEventHandler<HTMLDivElement> | undefined;
235
+ onTouchMove?: import("react").TouchEventHandler<HTMLDivElement> | undefined;
236
+ onTouchMoveCapture?: import("react").TouchEventHandler<HTMLDivElement> | undefined;
237
+ onTouchStart?: import("react").TouchEventHandler<HTMLDivElement> | undefined;
238
+ onTouchStartCapture?: import("react").TouchEventHandler<HTMLDivElement> | undefined;
239
+ onPointerDown?: import("react").PointerEventHandler<HTMLDivElement> | undefined;
240
+ onPointerDownCapture?: import("react").PointerEventHandler<HTMLDivElement> | undefined;
241
+ onPointerMove?: import("react").PointerEventHandler<HTMLDivElement> | undefined;
242
+ onPointerMoveCapture?: import("react").PointerEventHandler<HTMLDivElement> | undefined;
243
+ onPointerUp?: import("react").PointerEventHandler<HTMLDivElement> | undefined;
244
+ onPointerUpCapture?: import("react").PointerEventHandler<HTMLDivElement> | undefined;
245
+ onPointerCancel?: import("react").PointerEventHandler<HTMLDivElement> | undefined;
246
+ onPointerCancelCapture?: import("react").PointerEventHandler<HTMLDivElement> | undefined;
247
+ onPointerEnter?: import("react").PointerEventHandler<HTMLDivElement> | undefined;
248
+ onPointerLeave?: import("react").PointerEventHandler<HTMLDivElement> | undefined;
249
+ onPointerOver?: import("react").PointerEventHandler<HTMLDivElement> | undefined;
250
+ onPointerOverCapture?: import("react").PointerEventHandler<HTMLDivElement> | undefined;
251
+ onPointerOut?: import("react").PointerEventHandler<HTMLDivElement> | undefined;
252
+ onPointerOutCapture?: import("react").PointerEventHandler<HTMLDivElement> | undefined;
253
+ onGotPointerCapture?: import("react").PointerEventHandler<HTMLDivElement> | undefined;
254
+ onGotPointerCaptureCapture?: import("react").PointerEventHandler<HTMLDivElement> | undefined;
255
+ onLostPointerCapture?: import("react").PointerEventHandler<HTMLDivElement> | undefined;
256
+ onLostPointerCaptureCapture?: import("react").PointerEventHandler<HTMLDivElement> | undefined;
257
+ onScroll?: import("react").UIEventHandler<HTMLDivElement> | undefined;
258
+ onScrollCapture?: import("react").UIEventHandler<HTMLDivElement> | undefined;
259
+ onScrollEnd?: import("react").UIEventHandler<HTMLDivElement> | undefined;
260
+ onScrollEndCapture?: import("react").UIEventHandler<HTMLDivElement> | undefined;
261
+ onWheel?: import("react").WheelEventHandler<HTMLDivElement> | undefined;
262
+ onWheelCapture?: import("react").WheelEventHandler<HTMLDivElement> | undefined;
263
+ onAnimationStartCapture?: import("react").AnimationEventHandler<HTMLDivElement> | undefined;
264
+ onAnimationEnd?: import("react").AnimationEventHandler<HTMLDivElement> | undefined;
265
+ onAnimationEndCapture?: import("react").AnimationEventHandler<HTMLDivElement> | undefined;
266
+ onAnimationIteration?: import("react").AnimationEventHandler<HTMLDivElement> | undefined;
267
+ onAnimationIterationCapture?: import("react").AnimationEventHandler<HTMLDivElement> | undefined;
268
+ onToggle?: import("react").ToggleEventHandler<HTMLDivElement> | undefined;
269
+ onBeforeToggle?: import("react").ToggleEventHandler<HTMLDivElement> | undefined;
270
+ onTransitionCancel?: import("react").TransitionEventHandler<HTMLDivElement> | undefined;
271
+ onTransitionCancelCapture?: import("react").TransitionEventHandler<HTMLDivElement> | undefined;
272
+ onTransitionEnd?: import("react").TransitionEventHandler<HTMLDivElement> | undefined;
273
+ onTransitionEndCapture?: import("react").TransitionEventHandler<HTMLDivElement> | undefined;
274
+ onTransitionRun?: import("react").TransitionEventHandler<HTMLDivElement> | undefined;
275
+ onTransitionRunCapture?: import("react").TransitionEventHandler<HTMLDivElement> | undefined;
276
+ onTransitionStart?: import("react").TransitionEventHandler<HTMLDivElement> | undefined;
277
+ onTransitionStartCapture?: import("react").TransitionEventHandler<HTMLDivElement> | undefined;
278
+ type?: "secondary" | "success" | "info" | "warning" | "primary" | "tertiary" | "quaternary" | "danger" | "muted" | null | undefined;
279
+ theme?: "outline" | "solid" | "light" | null | undefined;
280
+ } & import("motion/react").MotionProps, "children"> & {
281
+ children?: import("react").ReactNode | import("motion/react").MotionValue<number> | import("motion/react").MotionValue<string>;
282
+ }>;
283
+ /**
284
+ * Motion props for a chip in a wrapping list, for use with `MotionBadge`
285
+ * inside `<AnimatePresence initial={false} mode="popLayout">`.
286
+ *
287
+ * A chip scales up slightly as it fades in, and fades out a little faster
288
+ * when removed. `popLayout` takes the leaving chip out of flow straight away,
289
+ * and `layout="position"` slides the chips after it into the gap rather than
290
+ * snapping. The list needs `position: relative` for `popLayout` to place the
291
+ * leaving chip. Under reduced motion chips only fade and nothing slides.
292
+ */
293
+ export declare function useChipMotion(): Pick<HTMLMotionProps<'div'>, 'initial' | 'animate' | 'exit' | 'transition' | 'layout'>;
@@ -8,7 +8,7 @@ export interface AssistantPlanCardProps {
8
8
  onApprove?: () => void;
9
9
  /** "Change something": the host puts the person in the composer to say what. */
10
10
  onChange?: () => void;
11
- /** The clock, for tests. */
11
+ /** A fixed clock, for tests. Without it the card keeps its own. */
12
12
  now?: number;
13
13
  }
14
14
  /**
@@ -1,12 +1,26 @@
1
1
  import type { VariantProps } from 'class-variance-authority';
2
+ import * as React from 'react';
2
3
  declare const spinnerVariants: (props?: ({
3
4
  size?: "xs" | "sm" | "md" | "lg" | "xl" | "2xl" | "3xl" | "4xl" | "5xl" | "6xl" | "7xl" | "8xl" | "9xl" | null | undefined;
4
5
  } & import("class-variance-authority/types").ClassProp) | undefined) => string;
5
6
  export interface SpinnerIconProps extends React.SVGProps<SVGSVGElement>, VariantProps<typeof spinnerVariants> {
6
- /** Color of the track (background circle) */
7
+ /**
8
+ * Colour of the track (background circle). By default the track is the
9
+ * indicator colour at low opacity, so recolouring the indicator recolours both.
10
+ */
7
11
  trackClassName?: string;
8
- /** Color of the spinning indicator */
12
+ /** Colour of the spinning indicator */
9
13
  indicatorClassName?: string;
10
14
  }
11
- export declare function SpinnerIcon({ size, className, trackClassName, indicatorClassName, ...props }: SpinnerIconProps): import("react").JSX.Element;
15
+ /**
16
+ * A loading spinner: a faint full-circle track with an arc that fades from a
17
+ * transparent tail to a solid, rounded head, turning clockwise.
18
+ *
19
+ * The rotation runs through Motion as a full `transform` keyframe animation,
20
+ * which Motion hands to the Web Animations API. That keeps it on the
21
+ * compositor, so the spinner stays smooth while the main thread is busy doing
22
+ * whatever the user is waiting for. It keeps spinning under reduced motion:
23
+ * it is essential loading feedback, not decoration.
24
+ */
25
+ export declare function SpinnerIcon({ size, className, trackClassName, indicatorClassName, ...props }: SpinnerIconProps): React.JSX.Element;
12
26
  export {};