@uisatin/ui 0.0.0-stage → 0.1.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 (334) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +67 -2
  3. package/chunk-2HKBZFIK.js +339 -0
  4. package/chunk-2HKBZFIK.js.map +1 -0
  5. package/chunk-3DINAQLL.js +153 -0
  6. package/chunk-3DINAQLL.js.map +1 -0
  7. package/chunk-3ERGAHKA.js +179 -0
  8. package/chunk-3ERGAHKA.js.map +1 -0
  9. package/chunk-6C7CGJX2.js +86 -0
  10. package/chunk-6C7CGJX2.js.map +1 -0
  11. package/chunk-6QMSWITQ.js +140 -0
  12. package/chunk-6QMSWITQ.js.map +1 -0
  13. package/chunk-6YXUBP27.js +474 -0
  14. package/chunk-6YXUBP27.js.map +1 -0
  15. package/chunk-72OCFAPT.js +175 -0
  16. package/chunk-72OCFAPT.js.map +1 -0
  17. package/chunk-7TXHCRAG.js +51 -0
  18. package/chunk-7TXHCRAG.js.map +1 -0
  19. package/chunk-A5XEM3GF.js +260 -0
  20. package/chunk-A5XEM3GF.js.map +1 -0
  21. package/chunk-AN2RNJLR.js +79 -0
  22. package/chunk-AN2RNJLR.js.map +1 -0
  23. package/chunk-B2K45IUR.js +36 -0
  24. package/chunk-B2K45IUR.js.map +1 -0
  25. package/chunk-B6V4VSGH.js +82 -0
  26. package/chunk-B6V4VSGH.js.map +1 -0
  27. package/chunk-BKZBWPUH.js +59 -0
  28. package/chunk-BKZBWPUH.js.map +1 -0
  29. package/chunk-BNTPPZCK.js +220 -0
  30. package/chunk-BNTPPZCK.js.map +1 -0
  31. package/chunk-BNZVTLHV.js +98 -0
  32. package/chunk-BNZVTLHV.js.map +1 -0
  33. package/chunk-CL2II6BX.js +89 -0
  34. package/chunk-CL2II6BX.js.map +1 -0
  35. package/chunk-D7RZNTFC.js +95 -0
  36. package/chunk-D7RZNTFC.js.map +1 -0
  37. package/chunk-DETGJAIC.js +147 -0
  38. package/chunk-DETGJAIC.js.map +1 -0
  39. package/chunk-DO3TBNSC.js +130 -0
  40. package/chunk-DO3TBNSC.js.map +1 -0
  41. package/chunk-ESC5JCVQ.js +90 -0
  42. package/chunk-ESC5JCVQ.js.map +1 -0
  43. package/chunk-FDKIX4DC.js +55 -0
  44. package/chunk-FDKIX4DC.js.map +1 -0
  45. package/chunk-GICKPMJU.js +239 -0
  46. package/chunk-GICKPMJU.js.map +1 -0
  47. package/chunk-GQA24FYG.js +57 -0
  48. package/chunk-GQA24FYG.js.map +1 -0
  49. package/chunk-H4NU7NPO.js +264 -0
  50. package/chunk-H4NU7NPO.js.map +1 -0
  51. package/chunk-H63FYCMY.js +11 -0
  52. package/chunk-H63FYCMY.js.map +1 -0
  53. package/chunk-HL42K2NH.js +76 -0
  54. package/chunk-HL42K2NH.js.map +1 -0
  55. package/chunk-HNQUX43Z.js +109 -0
  56. package/chunk-HNQUX43Z.js.map +1 -0
  57. package/chunk-HRKPV66B.js +32 -0
  58. package/chunk-HRKPV66B.js.map +1 -0
  59. package/chunk-J3NSDRVH.js +83 -0
  60. package/chunk-J3NSDRVH.js.map +1 -0
  61. package/chunk-JPNWHWAQ.js +151 -0
  62. package/chunk-JPNWHWAQ.js.map +1 -0
  63. package/chunk-KNUWZNFV.js +240 -0
  64. package/chunk-KNUWZNFV.js.map +1 -0
  65. package/chunk-L6NCCSIP.js +213 -0
  66. package/chunk-L6NCCSIP.js.map +1 -0
  67. package/chunk-LLHTVIM3.js +50 -0
  68. package/chunk-LLHTVIM3.js.map +1 -0
  69. package/chunk-LW3TRU5W.js +131 -0
  70. package/chunk-LW3TRU5W.js.map +1 -0
  71. package/chunk-LZMKSFCF.js +79 -0
  72. package/chunk-LZMKSFCF.js.map +1 -0
  73. package/chunk-MR3JDI7E.js +122 -0
  74. package/chunk-MR3JDI7E.js.map +1 -0
  75. package/chunk-NN6PKJWS.js +44 -0
  76. package/chunk-NN6PKJWS.js.map +1 -0
  77. package/chunk-NSRTTYQ4.js +252 -0
  78. package/chunk-NSRTTYQ4.js.map +1 -0
  79. package/chunk-O7F3CIDV.js +45 -0
  80. package/chunk-O7F3CIDV.js.map +1 -0
  81. package/chunk-P4O6TGDR.js +166 -0
  82. package/chunk-P4O6TGDR.js.map +1 -0
  83. package/chunk-PF3YBUKT.js +81 -0
  84. package/chunk-PF3YBUKT.js.map +1 -0
  85. package/chunk-PVOLDO4G.js +47 -0
  86. package/chunk-PVOLDO4G.js.map +1 -0
  87. package/chunk-QS4N4MNP.js +215 -0
  88. package/chunk-QS4N4MNP.js.map +1 -0
  89. package/chunk-QUF2IPOZ.js +98 -0
  90. package/chunk-QUF2IPOZ.js.map +1 -0
  91. package/chunk-RTJ76X5U.js +126 -0
  92. package/chunk-RTJ76X5U.js.map +1 -0
  93. package/chunk-SH6NG6VN.js +40 -0
  94. package/chunk-SH6NG6VN.js.map +1 -0
  95. package/chunk-SHDFUXYV.js +195 -0
  96. package/chunk-SHDFUXYV.js.map +1 -0
  97. package/chunk-TKO44NDI.js +84 -0
  98. package/chunk-TKO44NDI.js.map +1 -0
  99. package/chunk-TVLGZGYN.js +59 -0
  100. package/chunk-TVLGZGYN.js.map +1 -0
  101. package/chunk-TX3H3QMA.js +520 -0
  102. package/chunk-TX3H3QMA.js.map +1 -0
  103. package/chunk-UBNHSZSE.js +88 -0
  104. package/chunk-UBNHSZSE.js.map +1 -0
  105. package/chunk-UC3ZJWOD.js +73 -0
  106. package/chunk-UC3ZJWOD.js.map +1 -0
  107. package/chunk-UGRSWP6U.js +69 -0
  108. package/chunk-UGRSWP6U.js.map +1 -0
  109. package/chunk-VAGIAREV.js +214 -0
  110. package/chunk-VAGIAREV.js.map +1 -0
  111. package/chunk-WTMZT3IT.js +105 -0
  112. package/chunk-WTMZT3IT.js.map +1 -0
  113. package/chunk-WX6BP5ZP.js +39 -0
  114. package/chunk-WX6BP5ZP.js.map +1 -0
  115. package/chunk-X3PQANZO.js +255 -0
  116. package/chunk-X3PQANZO.js.map +1 -0
  117. package/chunk-XILQ7GXE.js +66 -0
  118. package/chunk-XILQ7GXE.js.map +1 -0
  119. package/chunk-XL75JRUA.js +130 -0
  120. package/chunk-XL75JRUA.js.map +1 -0
  121. package/chunk-XZNHT6MO.js +348 -0
  122. package/chunk-XZNHT6MO.js.map +1 -0
  123. package/chunk-Y5AYU7PK.js +44 -0
  124. package/chunk-Y5AYU7PK.js.map +1 -0
  125. package/chunk-YG7JOOLJ.js +28 -0
  126. package/chunk-YG7JOOLJ.js.map +1 -0
  127. package/chunk-YPJYW624.js +195 -0
  128. package/chunk-YPJYW624.js.map +1 -0
  129. package/chunk-YPNKBE5X.js +104 -0
  130. package/chunk-YPNKBE5X.js.map +1 -0
  131. package/chunk-YX5VNRJX.js +24 -0
  132. package/chunk-YX5VNRJX.js.map +1 -0
  133. package/components/accordion.d.ts +27 -0
  134. package/components/accordion.js +4 -0
  135. package/components/accordion.js.map +1 -0
  136. package/components/agent-loading.d.ts +65 -0
  137. package/components/agent-loading.js +4 -0
  138. package/components/agent-loading.js.map +1 -0
  139. package/components/agent-picker.d.ts +82 -0
  140. package/components/agent-picker.js +5 -0
  141. package/components/agent-picker.js.map +1 -0
  142. package/components/agent-suggestion.d.ts +69 -0
  143. package/components/agent-suggestion.js +6 -0
  144. package/components/agent-suggestion.js.map +1 -0
  145. package/components/announcement-bar.d.ts +39 -0
  146. package/components/announcement-bar.js +7 -0
  147. package/components/announcement-bar.js.map +1 -0
  148. package/components/attachment.d.ts +73 -0
  149. package/components/attachment.js +5 -0
  150. package/components/attachment.js.map +1 -0
  151. package/components/avatar.d.ts +34 -0
  152. package/components/avatar.js +6 -0
  153. package/components/avatar.js.map +1 -0
  154. package/components/badge.d.ts +19 -0
  155. package/components/badge.js +4 -0
  156. package/components/badge.js.map +1 -0
  157. package/components/banner-mesh.d.ts +11 -0
  158. package/components/banner-mesh.js +3 -0
  159. package/components/banner-mesh.js.map +1 -0
  160. package/components/banner.d.ts +50 -0
  161. package/components/banner.js +6 -0
  162. package/components/banner.js.map +1 -0
  163. package/components/bar-chart.d.ts +32 -0
  164. package/components/bar-chart.js +11 -0
  165. package/components/bar-chart.js.map +1 -0
  166. package/components/breadcrumb.d.ts +32 -0
  167. package/components/breadcrumb.js +6 -0
  168. package/components/breadcrumb.js.map +1 -0
  169. package/components/button.d.ts +32 -0
  170. package/components/button.js +4 -0
  171. package/components/button.js.map +1 -0
  172. package/components/card.d.ts +28 -0
  173. package/components/card.js +5 -0
  174. package/components/card.js.map +1 -0
  175. package/components/channel-chart.d.ts +14 -0
  176. package/components/channel-chart.js +11 -0
  177. package/components/channel-chart.js.map +1 -0
  178. package/components/chart.d.ts +88 -0
  179. package/components/chart.js +10 -0
  180. package/components/chart.js.map +1 -0
  181. package/components/checkbox.d.ts +17 -0
  182. package/components/checkbox.js +4 -0
  183. package/components/checkbox.js.map +1 -0
  184. package/components/chip.d.ts +54 -0
  185. package/components/chip.js +4 -0
  186. package/components/chip.js.map +1 -0
  187. package/components/citations.d.ts +37 -0
  188. package/components/citations.js +5 -0
  189. package/components/citations.js.map +1 -0
  190. package/components/code-block.d.ts +13 -0
  191. package/components/code-block.js +5 -0
  192. package/components/code-block.js.map +1 -0
  193. package/components/combobox.d.ts +58 -0
  194. package/components/combobox.js +10 -0
  195. package/components/combobox.js.map +1 -0
  196. package/components/command-menu.d.ts +54 -0
  197. package/components/command-menu.js +6 -0
  198. package/components/command-menu.js.map +1 -0
  199. package/components/context-menu.d.ts +46 -0
  200. package/components/context-menu.js +6 -0
  201. package/components/context-menu.js.map +1 -0
  202. package/components/cookie-consent.d.ts +26 -0
  203. package/components/cookie-consent.js +5 -0
  204. package/components/cookie-consent.js.map +1 -0
  205. package/components/date-picker.d.ts +112 -0
  206. package/components/date-picker.js +9 -0
  207. package/components/date-picker.js.map +1 -0
  208. package/components/decision-card.d.ts +65 -0
  209. package/components/decision-card.js +7 -0
  210. package/components/decision-card.js.map +1 -0
  211. package/components/dialog.d.ts +68 -0
  212. package/components/dialog.js +5 -0
  213. package/components/dialog.js.map +1 -0
  214. package/components/donut-chart.d.ts +20 -0
  215. package/components/donut-chart.js +11 -0
  216. package/components/donut-chart.js.map +1 -0
  217. package/components/dot.d.ts +21 -0
  218. package/components/dot.js +4 -0
  219. package/components/dot.js.map +1 -0
  220. package/components/dropdown.d.ts +74 -0
  221. package/components/dropdown.js +5 -0
  222. package/components/dropdown.js.map +1 -0
  223. package/components/empty-state.d.ts +25 -0
  224. package/components/empty-state.js +4 -0
  225. package/components/empty-state.js.map +1 -0
  226. package/components/file-upload.d.ts +78 -0
  227. package/components/file-upload.js +7 -0
  228. package/components/file-upload.js.map +1 -0
  229. package/components/floating.d.ts +30 -0
  230. package/components/floating.js +3 -0
  231. package/components/floating.js.map +1 -0
  232. package/components/form-field.d.ts +35 -0
  233. package/components/form-field.js +4 -0
  234. package/components/form-field.js.map +1 -0
  235. package/components/hover-card.d.ts +30 -0
  236. package/components/hover-card.js +4 -0
  237. package/components/hover-card.js.map +1 -0
  238. package/components/input-otp.d.ts +49 -0
  239. package/components/input-otp.js +8 -0
  240. package/components/input-otp.js.map +1 -0
  241. package/components/input.d.ts +28 -0
  242. package/components/input.js +5 -0
  243. package/components/input.js.map +1 -0
  244. package/components/kbd.d.ts +37 -0
  245. package/components/kbd.js +4 -0
  246. package/components/kbd.js.map +1 -0
  247. package/components/line-chart.d.ts +29 -0
  248. package/components/line-chart.js +12 -0
  249. package/components/line-chart.js.map +1 -0
  250. package/components/message-actions.d.ts +24 -0
  251. package/components/message-actions.js +5 -0
  252. package/components/message-actions.js.map +1 -0
  253. package/components/message.d.ts +40 -0
  254. package/components/message.js +8 -0
  255. package/components/message.js.map +1 -0
  256. package/components/number-input.d.ts +33 -0
  257. package/components/number-input.js +8 -0
  258. package/components/number-input.js.map +1 -0
  259. package/components/pagination.d.ts +45 -0
  260. package/components/pagination.js +6 -0
  261. package/components/pagination.js.map +1 -0
  262. package/components/popover.d.ts +44 -0
  263. package/components/popover.js +4 -0
  264. package/components/popover.js.map +1 -0
  265. package/components/progress.d.ts +24 -0
  266. package/components/progress.js +4 -0
  267. package/components/progress.js.map +1 -0
  268. package/components/prompt-bar.d.ts +63 -0
  269. package/components/prompt-bar.js +6 -0
  270. package/components/prompt-bar.js.map +1 -0
  271. package/components/radio.d.ts +27 -0
  272. package/components/radio.js +4 -0
  273. package/components/radio.js.map +1 -0
  274. package/components/search-bar.d.ts +20 -0
  275. package/components/search-bar.js +5 -0
  276. package/components/search-bar.js.map +1 -0
  277. package/components/segmented-control.d.ts +32 -0
  278. package/components/segmented-control.js +5 -0
  279. package/components/segmented-control.js.map +1 -0
  280. package/components/select.d.ts +97 -0
  281. package/components/select.js +7 -0
  282. package/components/select.js.map +1 -0
  283. package/components/sheet.d.ts +37 -0
  284. package/components/sheet.js +6 -0
  285. package/components/sheet.js.map +1 -0
  286. package/components/sidebar.d.ts +52 -0
  287. package/components/sidebar.js +4 -0
  288. package/components/sidebar.js.map +1 -0
  289. package/components/skeleton.d.ts +18 -0
  290. package/components/skeleton.js +4 -0
  291. package/components/skeleton.js.map +1 -0
  292. package/components/slider.d.ts +57 -0
  293. package/components/slider.js +8 -0
  294. package/components/slider.js.map +1 -0
  295. package/components/sliding-indicator.d.ts +23 -0
  296. package/components/sliding-indicator.js +3 -0
  297. package/components/sliding-indicator.js.map +1 -0
  298. package/components/streaming-text.d.ts +33 -0
  299. package/components/streaming-text.js +4 -0
  300. package/components/streaming-text.js.map +1 -0
  301. package/components/switch.d.ts +15 -0
  302. package/components/switch.js +4 -0
  303. package/components/switch.js.map +1 -0
  304. package/components/table.d.ts +57 -0
  305. package/components/table.js +5 -0
  306. package/components/table.js.map +1 -0
  307. package/components/tabs.d.ts +45 -0
  308. package/components/tabs.js +5 -0
  309. package/components/tabs.js.map +1 -0
  310. package/components/textarea.d.ts +30 -0
  311. package/components/textarea.js +5 -0
  312. package/components/textarea.js.map +1 -0
  313. package/components/thinking.d.ts +64 -0
  314. package/components/thinking.js +5 -0
  315. package/components/thinking.js.map +1 -0
  316. package/components/toast.d.ts +71 -0
  317. package/components/toast.js +5 -0
  318. package/components/toast.js.map +1 -0
  319. package/components/toggle.d.ts +30 -0
  320. package/components/toggle.js +4 -0
  321. package/components/toggle.js.map +1 -0
  322. package/components/tooltip.d.ts +35 -0
  323. package/components/tooltip.js +5 -0
  324. package/components/tooltip.js.map +1 -0
  325. package/index.d.ts +64 -0
  326. package/index.js +231 -0
  327. package/index.js.map +1 -0
  328. package/lib/utils.d.ts +3 -0
  329. package/lib/utils.js +3 -0
  330. package/lib/utils.js.map +1 -0
  331. package/package.json +54 -4
  332. package/styles.css +2 -0
  333. package/theme/create-theme.d.ts +44 -0
  334. package/theme/index.d.ts +1 -0
@@ -0,0 +1,4 @@
1
+ 'use client';export { FormField, useFormField } from '../chunk-UBNHSZSE.js';
2
+ import '../chunk-H63FYCMY.js';
3
+ //# sourceMappingURL=form-field.js.map
4
+ //# sourceMappingURL=form-field.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"form-field.js"}
@@ -0,0 +1,30 @@
1
+ import * as React from 'react';
2
+ /**
3
+ * HoverCard, 1:1 with the uiKit design (🆕 context menu & hover card): a preview of a person,
4
+ * place or file over its link — the Popover surface (bg/popover, border/default, radius-xl, the
5
+ * lg shadow), 320 wide, 16px in. It opens after the pointer rests 400 ms on the trigger (the
6
+ * middle of NN/g's 0.3–0.5 s, so passing over a link doesn't flash it), stays while the pointer
7
+ * moves into it, and closes 150 ms after it leaves both. Keyboard focus on the trigger opens it.
8
+ *
9
+ * Only for extra context the page works without: anything someone needs to act on belongs in a
10
+ * Popover they open on purpose.
11
+ */
12
+ export interface HoverCardProps {
13
+ /** The link or name it previews. Rendered with `asChild`. */
14
+ trigger: React.ReactNode;
15
+ children: React.ReactNode;
16
+ side?: 'top' | 'right' | 'bottom' | 'left';
17
+ align?: 'start' | 'center' | 'end';
18
+ /** ms the pointer rests before it opens. */
19
+ openDelay?: number;
20
+ /** ms after the pointer leaves before it closes. */
21
+ closeDelay?: number;
22
+ open?: boolean;
23
+ defaultOpen?: boolean;
24
+ onOpenChange?: (open: boolean) => void;
25
+ container?: HTMLElement | null;
26
+ className?: string;
27
+ }
28
+ export declare function HoverCard({ trigger, children, side, align, openDelay, closeDelay, open, defaultOpen, onOpenChange, container, className, }: HoverCardProps): React.JSX.Element;
29
+ /** The hover card's surface, for previews you place yourself. */
30
+ export declare const hoverCardClass: string;
@@ -0,0 +1,4 @@
1
+ 'use client';export { HoverCard, hoverCardClass } from '../chunk-HRKPV66B.js';
2
+ import '../chunk-H63FYCMY.js';
3
+ //# sourceMappingURL=hover-card.js.map
4
+ //# sourceMappingURL=hover-card.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"hover-card.js"}
@@ -0,0 +1,49 @@
1
+ import * as React from 'react';
2
+ /**
3
+ * InputOTP, 1:1 with the uiKit design (🆕 input otp & number): a one-time code as 36×36 cells,
4
+ * 8px apart, in groups (3 + 3 by default) split by an 8px border/strong dash. Each cell wears the
5
+ * field skin (bg/field, border/default, radius-lg, shadow xs); the cell the next digit goes into
6
+ * gets the focus border and ring and a blinking caret while the field has focus. A digit is
7
+ * text/base medium. With an error every cell turns action/destructive and the message replaces the
8
+ * hint under the cells; label, hint and error sit like Input's. With `success` (the code checked
9
+ * out) every cell's border turns status/green/fg and the message, in the same colour, leads with a
10
+ * 16px check.
11
+ *
12
+ * The message never moves the cells: it is as wide as the cells (it wraps rather than widening
13
+ * the field, which would shift a centred field sideways) and keeps a 20px line even while empty,
14
+ * so swapping hint → "Checking…" → success or error leaves the code where it is.
15
+ *
16
+ * The field is as wide as its cells, so it centres wherever it is placed. Focus shows only on
17
+ * the active cell: the real input carries no ring of its own.
18
+ *
19
+ * One real <input> lies over the cells (transparent text and caret), so typing, deleting, paste
20
+ * and the browser's SMS autofill (`autocomplete="one-time-code"`) all work as in any field, and
21
+ * screen readers hear one text box. Only digits by default (`pattern`); `onComplete` fires when
22
+ * every cell is filled.
23
+ */
24
+ export interface InputOTPProps {
25
+ /** How many characters. */
26
+ length?: number;
27
+ /** Cells per group; groups are split by a dash. 0 for one group. */
28
+ groupSize?: number;
29
+ value?: string;
30
+ defaultValue?: string;
31
+ onValueChange?: (value: string) => void;
32
+ /** Every cell is filled. */
33
+ onComplete?: (value: string) => void;
34
+ /** Which characters are allowed. Digits by default. */
35
+ pattern?: RegExp;
36
+ label?: React.ReactNode;
37
+ hint?: React.ReactNode;
38
+ /** An error message (replaces the hint), or `true` to mark the cells invalid without one. */
39
+ error?: React.ReactNode | boolean;
40
+ /** The code checked out: a message under the cells (replaces the hint), or `true` for green cells alone. Ignored while there is an error. */
41
+ success?: React.ReactNode | boolean;
42
+ disabled?: boolean;
43
+ autoFocus?: boolean;
44
+ id?: string;
45
+ name?: string;
46
+ 'aria-label'?: string;
47
+ className?: string;
48
+ }
49
+ export declare function InputOTP({ length, groupSize, value: valueProp, defaultValue, onValueChange, onComplete, pattern, label, hint, error, success, disabled, autoFocus, id, name, className, ...props }: InputOTPProps): React.JSX.Element;
@@ -0,0 +1,8 @@
1
+ 'use client';export { InputOTP } from '../chunk-XL75JRUA.js';
2
+ import '../chunk-72OCFAPT.js';
3
+ import '../chunk-UBNHSZSE.js';
4
+ import '../chunk-3DINAQLL.js';
5
+ import '../chunk-BKZBWPUH.js';
6
+ import '../chunk-H63FYCMY.js';
7
+ //# sourceMappingURL=input-otp.js.map
8
+ //# sourceMappingURL=input-otp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"input-otp.js"}
@@ -0,0 +1,28 @@
1
+ import * as React from 'react';
2
+ /**
3
+ * Input, 1:1 with the uiKit `Input` set (820:51657): a label (medium), the field, and a hint
4
+ * (13/19.5, muted) 8px apart. The label is 13px at every size. Three sizes: sm 28 with a 13px
5
+ * value, md 32 and lg 36 with 14px (lg at radius-xl), fixed whatever the theme's body size; 12px side padding,
6
+ * optional 16px leading and trailing icons 8px from the text.
7
+ *
8
+ * Placeholder is text/muted; a value is text/default and turns the icons from muted to
9
+ * default (Figma's `filled`). `error` swaps the hint for the message in action/destructive/bg
10
+ * and sets `aria-invalid`. Hover, focus and the error ring are styles/components/input.css.
11
+ *
12
+ * Inside a FormField, leave out `label`, `hint` and `error`: the field supplies the id,
13
+ * description and invalid state.
14
+ */
15
+ export interface InputProps extends Omit<React.ComponentProps<'input'>, 'size'> {
16
+ label?: React.ReactNode;
17
+ hint?: React.ReactNode;
18
+ /** An error message (replaces the hint), or `true` to mark the field invalid without one. */
19
+ error?: React.ReactNode | boolean;
20
+ size?: 'sm' | 'md' | 'lg';
21
+ leadingIcon?: React.ReactNode;
22
+ trailingIcon?: React.ReactNode;
23
+ /** Classes for the outer wrapper (label + field + hint). `className` styles the field. */
24
+ wrapperClassName?: string;
25
+ /** Show a state without interacting, for state sheets. */
26
+ 'data-force'?: 'hover' | 'focus';
27
+ }
28
+ export declare function Input({ label, hint, error, size, leadingIcon, trailingIcon, className, wrapperClassName, id, disabled, required, value, defaultValue, onChange, 'aria-describedby': ariaDescribedBy, 'data-force': force, ...props }: InputProps): React.JSX.Element;
@@ -0,0 +1,5 @@
1
+ 'use client';export { Input } from '../chunk-YPNKBE5X.js';
2
+ import '../chunk-UBNHSZSE.js';
3
+ import '../chunk-H63FYCMY.js';
4
+ //# sourceMappingURL=input.js.map
5
+ //# sourceMappingURL=input.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"input.js"}
@@ -0,0 +1,37 @@
1
+ import * as React from 'react';
2
+ /**
3
+ * Kbd, 1:1 with the uiKit `Kbd` set (4021:3415): one keyboard key. sm is 18px high with 4px
4
+ * sides, md 20px with 6px; a single character or glyph makes it an exact square, radius-sm, a 0.75px border/default edge on
5
+ * component/kbd/bg (bg/card in Light, bg/muted in Dark), the 11px medium Keycap glyph in
6
+ * text/muted. Put keys of one shortcut 2px apart, or pass `keys` and let `KbdGroup` do it.
7
+ *
8
+ * `tone="inverse"` is for keys on an inverse surface (a tooltip): a darker key on the dark pill
9
+ * in Light, a lighter one on the light pill in Dark.
10
+ */
11
+ export interface KbdProps extends React.ComponentProps<'kbd'> {
12
+ size?: 'sm' | 'md';
13
+ tone?: 'default' | 'inverse';
14
+ }
15
+ export declare function Kbd({ size, tone, className, children, ...props }: KbdProps): React.JSX.Element;
16
+ /**
17
+ * Splits a shortcut into keys: modifier glyphs one by one, the rest as one key ("Esc", "K").
18
+ * Spaces or "+" split it explicitly ("Ctrl + K").
19
+ */
20
+ export declare function keysOf(shortcut: string): string[];
21
+ export interface KbdGroupProps extends Omit<React.ComponentProps<'span'>, 'children'> {
22
+ /** A shortcut such as "⌘K" or "⌃⇧V", split into keys, or the keys themselves. */
23
+ keys: string | React.ReactNode[];
24
+ size?: KbdProps['size'];
25
+ tone?: KbdProps['tone'];
26
+ }
27
+ /** The keys of one shortcut, 2px apart. */
28
+ export declare function KbdGroup({ keys, size, tone, className, ...props }: KbdGroupProps): React.JSX.Element;
29
+ export declare const KbdArrowUp: () => React.JSX.Element;
30
+ export declare const KbdArrowDown: () => React.JSX.Element;
31
+ export declare const KbdReturn: () => React.JSX.Element;
32
+ export interface KbdHintProps extends Omit<React.ComponentProps<'span'>, 'children'> {
33
+ keys: React.ReactNode[];
34
+ label: React.ReactNode;
35
+ }
36
+ /** A key hint for a menu footer: keys, then what they do in 12px text/muted, 6px apart. */
37
+ export declare function KbdHint({ keys, label, className, ...props }: KbdHintProps): React.JSX.Element;
@@ -0,0 +1,4 @@
1
+ 'use client';export { Kbd, KbdArrowDown, KbdArrowUp, KbdGroup, KbdHint, KbdReturn, keysOf } from '../chunk-BKZBWPUH.js';
2
+ import '../chunk-H63FYCMY.js';
3
+ //# sourceMappingURL=kbd.js.map
4
+ //# sourceMappingURL=kbd.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"kbd.js"}
@@ -0,0 +1,29 @@
1
+ import * as React from 'react';
2
+ import { type ChartCardBaseProps } from './chart.js';
3
+ /**
4
+ * Line and Area chart, 1:1 with the uiKit `chart/lineCard` (4076:6759) and `chart/areaCard`
5
+ * (4070:7627), in the shared ChartCard (chart.tsx).
6
+ *
7
+ * One metric over the period: a smooth 2px line in chart/3 (monotone, so it never overshoots a
8
+ * point) over a 180px plot with a 32px axis gutter and 4 dashed border-subtle gridlines at nice
9
+ * ticks, the x labels 6px under it (at most about seven, evenly picked). `AreaCard` fills under
10
+ * the line with chart/3 fading from 28% to nothing at the baseline. No legend: the title says
11
+ * what is plotted and the KPI above gives its total.
12
+ *
13
+ * Hover (or `highlight`) picks the nearest point: a dashed border-strong drop line from it to the
14
+ * baseline, an 8px dot ringed in chart/3 on bg/card, the tooltip above it (date and value) and
15
+ * its x label in text/default. Every point is also reachable with the keyboard (arrow keys on the
16
+ * focused plot). When the data changes the plot fades in on its new scale, unless motion is
17
+ * reduced.
18
+ */
19
+ export interface LineCardProps extends ChartCardBaseProps {
20
+ /** Unit after the value in the tooltip ("orders"). */
21
+ unit?: string;
22
+ /** Fill under the line. `AreaCard` sets it. */
23
+ area?: boolean;
24
+ /** Swap the plot without the fade when the data changes, as under prefers-reduced-motion. */
25
+ reducedMotion?: boolean;
26
+ }
27
+ export declare function LineCard({ data, formatValue, highlight, unit, area, reducedMotion, total, ...props }: LineCardProps): React.JSX.Element;
28
+ /** The Line chart with the gradient under its line. */
29
+ export declare function AreaCard(props: Omit<LineCardProps, 'area'>): React.JSX.Element;
@@ -0,0 +1,12 @@
1
+ 'use client';export { AreaCard, LineCard } from '../chunk-SHDFUXYV.js';
2
+ import '../chunk-DO3TBNSC.js';
3
+ import '../chunk-YPJYW624.js';
4
+ import '../chunk-Y5AYU7PK.js';
5
+ import '../chunk-72OCFAPT.js';
6
+ import '../chunk-UBNHSZSE.js';
7
+ import '../chunk-3DINAQLL.js';
8
+ import '../chunk-BKZBWPUH.js';
9
+ import '../chunk-O7F3CIDV.js';
10
+ import '../chunk-H63FYCMY.js';
11
+ //# sourceMappingURL=line-chart.js.map
12
+ //# sourceMappingURL=line-chart.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"line-chart.js"}
@@ -0,0 +1,24 @@
1
+ import * as React from 'react';
2
+ /**
3
+ * MessageActions, 1:1 with uiKit `_chat/answerActions` (901:20164): the row under an assistant
4
+ * reply. Delivery status (16px icon in a 24px box) and time in text/muted medium 13, then like,
5
+ * dislike and copy as 24px tertiary icon buttons 2px apart, then Share (tertiary xs with a
6
+ * label). Groups sit 8px apart with 1 × 12 border/default dividers between them.
7
+ *
8
+ * Feedback: a clicked thumb stays pressed (border/input fill, icon text/subtle) until the other
9
+ * one is clicked or it is clicked again; `feedback` sets it, `onFeedback` reports it.
10
+ * The status and time show only when there is a `timestamp`.
11
+ */
12
+ export type MessageFeedback = 'like' | 'dislike' | null;
13
+ export interface MessageActionsProps extends React.ComponentProps<'div'> {
14
+ /** "20 minutes ago". Leave it out to drop the status and time. */
15
+ timestamp?: string;
16
+ status?: 'sending' | 'delivered';
17
+ /** The pressed thumb. Pass it with onFeedback to control it, or once to start from it. */
18
+ feedback?: MessageFeedback;
19
+ showShare?: boolean;
20
+ onFeedback?: (value: MessageFeedback) => void;
21
+ onCopy?: () => void;
22
+ onShare?: () => void;
23
+ }
24
+ export declare function MessageActions({ timestamp, status, feedback: feedbackProp, showShare, onFeedback, onCopy, onShare, className, ...props }: MessageActionsProps): React.JSX.Element;
@@ -0,0 +1,5 @@
1
+ 'use client';export { MessageActions } from '../chunk-AN2RNJLR.js';
2
+ import '../chunk-HNQUX43Z.js';
3
+ import '../chunk-H63FYCMY.js';
4
+ //# sourceMappingURL=message-actions.js.map
5
+ //# sourceMappingURL=message-actions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"message-actions.js"}
@@ -0,0 +1,40 @@
1
+ import * as React from 'react';
2
+ import { type MessageFeedback } from './message-actions.js';
3
+ import { type ThinkingStep } from './thinking.js';
4
+ /**
5
+ * Message, 1:1 with the uiKit Message docs view (3890:70165), composed from `_chat/userMessage`
6
+ * (901:20155), `_chat/source` and `_chat/answerActions` (901:20164, see MessageActions).
7
+ *
8
+ * user: a right-aligned action/inverse bubble (12px corners, 4px bottom-right), 12 × 8
9
+ * padding, text/on-inverse 13/19.5, wrapping at 256px of text. A source card sits 8px above
10
+ * it: bg/canvas, border/subtle, radius 10, 16px logo, title medium 13/18, url 12/12 muted.
11
+ *
12
+ * assistant: no bubble, so long answers read like a document — text/default 13/19.5, with
13
+ * the collapsed Thinking above and the actions below, 12px apart.
14
+ */
15
+ export interface MessageSource {
16
+ /** The page or message title, "Q3 pipeline review". */
17
+ title: React.ReactNode;
18
+ /** Shown under the title, "docs.sature.app/q3-review". */
19
+ url?: React.ReactNode;
20
+ /** A 16px logo or favicon. */
21
+ icon?: React.ReactNode;
22
+ /** Makes the card a link. */
23
+ href?: string;
24
+ }
25
+ export interface MessageProps extends React.ComponentProps<'div'> {
26
+ role?: 'user' | 'assistant';
27
+ /** The steps the agent ran; shows a collapsed Thinking above an assistant answer. */
28
+ thinking?: ThinkingStep[];
29
+ /** The summary on that Thinking header. */
30
+ thinkingLabel?: React.ReactNode;
31
+ /** A page or message the user brought in, shown as a card above their bubble. */
32
+ source?: MessageSource;
33
+ /** Feedback, copy and share under an assistant answer. Off while it streams. */
34
+ actions?: boolean;
35
+ timestamp?: string;
36
+ onFeedback?: (value: MessageFeedback) => void;
37
+ onCopy?: () => void;
38
+ onShare?: () => void;
39
+ }
40
+ export declare function Message({ role, thinking, thinkingLabel, source, actions, timestamp, onFeedback, onCopy, onShare, className, children, ...props }: MessageProps): React.JSX.Element;
@@ -0,0 +1,8 @@
1
+ 'use client';export { Message } from '../chunk-PVOLDO4G.js';
2
+ import '../chunk-ESC5JCVQ.js';
3
+ import '../chunk-AN2RNJLR.js';
4
+ import '../chunk-KNUWZNFV.js';
5
+ import '../chunk-HNQUX43Z.js';
6
+ import '../chunk-H63FYCMY.js';
7
+ //# sourceMappingURL=message.js.map
8
+ //# sourceMappingURL=message.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"message.js"}
@@ -0,0 +1,33 @@
1
+ import * as React from 'react';
2
+ /**
3
+ * NumberInput, 1:1 with the uiKit design (🆕 input otp & number): Input's field skin and sizes
4
+ * (sm 28, md 32, lg 36) with − and + at its ends and the value centred, tabular. The buttons are
5
+ * 24px squares (radius-md, hover bg/hover, text/muted → text/default); at `min` or `max` the one
6
+ * that would cross it fades to 40% and stops.
7
+ *
8
+ * It's a spinbutton: ArrowUp / ArrowDown step, PageUp / PageDown step ten times, Home / End jump
9
+ * to `min` / `max`. Typing is free while focused; Enter or leaving the field clamps it, snaps it to
10
+ * `step` and commits; Escape puts the last value back.
11
+ */
12
+ export interface NumberInputProps {
13
+ value?: number;
14
+ defaultValue?: number;
15
+ onValueChange?: (value: number) => void;
16
+ min?: number;
17
+ max?: number;
18
+ step?: number;
19
+ size?: 'sm' | 'md' | 'lg';
20
+ /** How the value reads in the field and to screen readers. */
21
+ formatValue?: (value: number) => string;
22
+ label?: React.ReactNode;
23
+ hint?: React.ReactNode;
24
+ error?: React.ReactNode | boolean;
25
+ disabled?: boolean;
26
+ id?: string;
27
+ name?: string;
28
+ 'aria-label'?: string;
29
+ /** Classes for the outer wrapper (label + field + hint). `className` styles the field. */
30
+ wrapperClassName?: string;
31
+ className?: string;
32
+ }
33
+ export declare function NumberInput({ value: valueProp, defaultValue, onValueChange, min, max, step, size, formatValue, label, hint, error, disabled, id, name, wrapperClassName, className, ...props }: NumberInputProps): React.JSX.Element;
@@ -0,0 +1,8 @@
1
+ 'use client';export { NumberInput } from '../chunk-LW3TRU5W.js';
2
+ import '../chunk-72OCFAPT.js';
3
+ import '../chunk-UBNHSZSE.js';
4
+ import '../chunk-3DINAQLL.js';
5
+ import '../chunk-BKZBWPUH.js';
6
+ import '../chunk-H63FYCMY.js';
7
+ //# sourceMappingURL=number-input.js.map
8
+ //# sourceMappingURL=number-input.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"number-input.js"}
@@ -0,0 +1,45 @@
1
+ import * as React from 'react';
2
+ /**
3
+ * Pagination, 1:1 with the uiKit `Pagination` set (4025:3807), two layouts:
4
+ * - full: Previous and Next (tertiary md buttons with their arrows) around the page numbers,
5
+ * 4px apart: the first and last page, the current one with `siblings` on each side, and an
6
+ * ellipsis where pages are skipped. Pages are 28px squares, radius 10, 13px text/muted;
7
+ * hover bg/hover and text/default; the current page bg/selected, text/default, medium.
8
+ * - compact: icon-only Previous and Next around "Page 5 of 12" (13px, text/muted), 8px apart.
9
+ *
10
+ * Moving between pages (`motion`), the pages keep their places and only their numbers change:
11
+ * - scroll (default): the pages are a strip. Each page slides from where it was to its new place,
12
+ * a page coming into view slides out from under the ellipsis on the side the reader pages
13
+ * towards, one leaving slides under the other and fades, and the pill under the current
14
+ * page moves on the same 300 ms curve (sliding-indicator.tsx, shared with Tabs and the
15
+ * Segmented control). Nothing is clipped and no number changes in place.
16
+ * - slide: the current page's bg/selected pill slides under the numbers to the new
17
+ * page, like the Segmented control's, 200 ms on ease-out; a number that changes in place
18
+ * fades out before the new one fades in.
19
+ * - none: no motion; the current page simply takes the pill.
20
+ *
21
+ * Previous and Next are disabled at the ends. With `getHref`, every page is a link (for pages
22
+ * the server renders); without it they are buttons that call `onPageChange`.
23
+ *
24
+ * A `nav` named "Pagination"; the current page has aria-current="page".
25
+ */
26
+ export interface PaginationProps extends Omit<React.ComponentProps<'nav'>, 'children'> {
27
+ /** How many pages there are. */
28
+ pageCount: number;
29
+ /** The current page, from 1. */
30
+ page?: number;
31
+ defaultPage?: number;
32
+ onPageChange?: (page: number) => void;
33
+ /** Each page's URL: pages become links. */
34
+ getHref?: (page: number) => string;
35
+ layout?: 'full' | 'compact';
36
+ /** Pages shown on each side of the current one (full layout). */
37
+ siblings?: number;
38
+ previousLabel?: string;
39
+ nextLabel?: string;
40
+ /** How the row moves when the page changes. */
41
+ motion?: 'slide' | 'scroll' | 'none';
42
+ }
43
+ /** The pages to show, with 'gap' where an ellipsis stands for skipped ones. Always 2 × siblings + 5 slots when there are enough pages, so the bar keeps its width. */
44
+ export declare function paginationRange(page: number, pageCount: number, siblings?: number): (number | 'gap')[];
45
+ export declare function Pagination({ pageCount, page: pageProp, defaultPage, onPageChange, getHref, layout, siblings, previousLabel, nextLabel, motion, className, 'aria-label': ariaLabel, ...props }: PaginationProps): React.JSX.Element;
@@ -0,0 +1,6 @@
1
+ 'use client';export { Pagination, paginationRange } from '../chunk-QS4N4MNP.js';
2
+ import '../chunk-J3NSDRVH.js';
3
+ import '../chunk-HNQUX43Z.js';
4
+ import '../chunk-H63FYCMY.js';
5
+ //# sourceMappingURL=pagination.js.map
6
+ //# sourceMappingURL=pagination.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"pagination.js"}
@@ -0,0 +1,44 @@
1
+ import * as React from 'react';
2
+ import { Popover as PopoverPrimitive } from 'radix-ui';
3
+ /**
4
+ * Popover, 1:1 with the uiKit `Popover` component (613:18781): a 320px popover surface,
5
+ * radius-xl, border/default, the shadcn `lg` shadow, 10px padding all round. A 13px medium
6
+ * title (18px line) over a 13px muted description, 2px apart; a 16px close glyph in text/subtle
7
+ * 10px from the top-right corner; an optional body slot 16px below the header. It opens 8px below its trigger, aligned to the trigger's start.
8
+ *
9
+ * Built on the Radix Popover. `children` is the trigger (rendered with `asChild`, so pass a
10
+ * Button); `body` fills the body slot. Pass `container` to portal it into the docs stage.
11
+ */
12
+ export interface PopoverProps {
13
+ title: React.ReactNode;
14
+ description?: React.ReactNode;
15
+ /** The trigger. Rendered with `asChild`. */
16
+ children?: React.ReactNode;
17
+ /** Figma's body slot: actions or a small form. Keep it to one task. */
18
+ body?: React.ReactNode;
19
+ open?: boolean;
20
+ defaultOpen?: boolean;
21
+ onOpenChange?: (open: boolean) => void;
22
+ side?: 'top' | 'right' | 'bottom' | 'left';
23
+ align?: 'start' | 'center' | 'end';
24
+ sideOffset?: number;
25
+ /** Show the close glyph in the corner. */
26
+ closeButton?: boolean;
27
+ /** Portal target. Defaults to `document.body`. */
28
+ container?: HTMLElement | null;
29
+ /** Called when focus moves into the popover on open; `preventDefault()` keeps it where it was. */
30
+ onOpenAutoFocus?: (event: Event) => void;
31
+ /** A press or focus outside the popover; `preventDefault()` keeps it open. */
32
+ onInteractOutside?: (event: Event) => void;
33
+ className?: string;
34
+ }
35
+ export declare function Popover({ title, description, children, body, open, defaultOpen, onOpenChange, side, align, sideOffset, closeButton, container, onOpenAutoFocus, onInteractOutside, className, }: PopoverProps): React.JSX.Element;
36
+ /**
37
+ * The popover's panel on its own, in place: no trigger, no positioning. For docs, previews
38
+ * and layers you anchor yourself. The close button calls `onClose`.
39
+ */
40
+ export declare function PopoverPanel({ title, description, body, closeButton, onClose, className, }: Pick<PopoverProps, 'title' | 'description' | 'body' | 'closeButton' | 'className'> & {
41
+ onClose?: () => void;
42
+ }): React.JSX.Element;
43
+ /** Wrap a body button in this to make it close the popover: `<PopoverClose asChild><Button…/></PopoverClose>`. */
44
+ export declare const PopoverClose: React.ForwardRefExoticComponent<PopoverPrimitive.PopoverCloseProps & React.RefAttributes<HTMLButtonElement>>;
@@ -0,0 +1,4 @@
1
+ 'use client';export { Popover, PopoverClose, PopoverPanel } from '../chunk-BNZVTLHV.js';
2
+ import '../chunk-H63FYCMY.js';
3
+ //# sourceMappingURL=popover.js.map
4
+ //# sourceMappingURL=popover.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"popover.js"}
@@ -0,0 +1,24 @@
1
+ import * as React from 'react';
2
+ /**
3
+ * Progress, 1:1 with the uiKit `Progress` set (4025:3851): a bg/muted track, 4px (sm) or 8px
4
+ * (md), fully rounded, with the done part in action/primary/bg. Above it, optionally, a label
5
+ * row 8px up: the label (13px medium, text/default) on the left and the percentage (13px,
6
+ * text/muted) on the right.
7
+ *
8
+ * Leave `value` out while the amount is unknown: a third of the track then slides across.
9
+ * The bar moves to a new value over 300 ms on ease-out.
10
+ *
11
+ * A `progressbar` with aria-valuenow (and the label as its name) when there is a value.
12
+ */
13
+ export interface ProgressProps extends Omit<React.ComponentProps<'div'>, 'children'> {
14
+ /** 0 to `max`; left out, the bar is indeterminate. */
15
+ value?: number | null;
16
+ max?: number;
17
+ label?: React.ReactNode;
18
+ /** The percentage at the right of the label row. */
19
+ showValue?: boolean;
20
+ size?: 'sm' | 'md';
21
+ /** How the value reads on the right and to screen readers. Defaults to a whole percentage. */
22
+ formatValue?: (value: number, max: number) => string;
23
+ }
24
+ export declare function Progress({ value, max, label, showValue, size, formatValue, className, 'aria-label': ariaLabel, ...props }: ProgressProps): React.JSX.Element;
@@ -0,0 +1,4 @@
1
+ 'use client';export { Progress } from '../chunk-7TXHCRAG.js';
2
+ import '../chunk-H63FYCMY.js';
3
+ //# sourceMappingURL=progress.js.map
4
+ //# sourceMappingURL=progress.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"progress.js"}
@@ -0,0 +1,63 @@
1
+ import * as React from 'react';
2
+ /**
3
+ * PromptBar, 1:1 with the uiKit `PromptBar` set (3158:21803), its input row
4
+ * `_prompterInteractions` (3157:23767), `_dictationButton` (3156:40589), the `Attachment` chips
5
+ * (3141:20409) and the two menus `_dropdowns/addToConversation` (3157:23548) and
6
+ * `dropdowns/models`.
7
+ *
8
+ * The bar: bg/field, 1px border/default, shadow/xs, 8px padding, rows 8px apart. shape
9
+ * default = radius 12 with Default buttons; pill = radius-full on one line, radius 20 once
10
+ * attachments or a second line of text add height, with Rounded buttons. The input row is
11
+ * add (+), the field (14/21, placeholder text/subtle), then 4px apart the model select, dictation
12
+ * and send — all 28px DS buttons. Once the text needs a second line the bar expands: the field
13
+ * takes its own row, with + and the model below on the left and dictation and send on the right. state inactive: border/default and send disabled; active (the
14
+ * field focused, or text to send): border/strong and send enabled.
15
+ *
16
+ * Menus open 8px above: + opens addToConversation across the full width of the bar, the model
17
+ * select opens the models list (241px, right-aligned); the trigger shows its pressed fill.
18
+ * Dictation toggles to the primary button with a three-bar wave that moves while it records.
19
+ * Enter sends, Shift+Enter adds a line.
20
+ */
21
+ export interface PromptBarModel {
22
+ value: string;
23
+ label: string;
24
+ /** 20px in the menu, 16px on the select. */
25
+ icon?: React.ReactNode;
26
+ }
27
+ export interface PromptBarAction {
28
+ id: string;
29
+ label: string;
30
+ description?: string;
31
+ /** 16px icon. */
32
+ icon?: React.ReactNode;
33
+ /** Without it, the `upload` action opens the file picker and adds the files as attachments. */
34
+ onSelect?: () => void;
35
+ }
36
+ export interface PromptBarProps extends Omit<React.ComponentProps<'form'>, 'onSubmit'> {
37
+ shape?: 'pill' | 'default';
38
+ /** The text. Pass it with onValueChange to control it. */
39
+ value?: string;
40
+ defaultValue?: string;
41
+ onValueChange?: (value: string) => void;
42
+ placeholder?: string;
43
+ /** Files shown as chips above the field; people can remove them before sending. */
44
+ attachments?: File[];
45
+ onAttachmentsChange?: (files: File[]) => void;
46
+ /** The selected model's value (or its label, when there is no `models` list). */
47
+ model?: string;
48
+ /** The models menu. Without it the select shows `model` and opens nothing. */
49
+ models?: PromptBarModel[];
50
+ onModelChange?: (value: string) => void;
51
+ /** Icon on the select when `models` doesn't give one. */
52
+ modelIcon?: React.ReactNode;
53
+ /** Rows of the + menu. Defaults to Upload a file and Web search. */
54
+ actions?: PromptBarAction[];
55
+ /** The + at the end of the menu's search row. */
56
+ onAddAgent?: () => void;
57
+ onDictationChange?: (recording: boolean) => void;
58
+ disabled?: boolean;
59
+ onSubmit?: (value: string, attachments: File[]) => void;
60
+ }
61
+ /** Upload a file and Web search: spread them into `actions` to add your own rows after them. */
62
+ export declare const defaultActions: PromptBarAction[];
63
+ export declare function PromptBar({ shape, value: valueProp, defaultValue, onValueChange, placeholder, attachments: attachmentsProp, onAttachmentsChange, model: modelProp, models, onModelChange, modelIcon, actions, onAddAgent, onDictationChange, disabled, onSubmit, className, ...props }: PromptBarProps): React.JSX.Element;
@@ -0,0 +1,6 @@
1
+ 'use client';export { PromptBar, defaultActions } from '../chunk-6YXUBP27.js';
2
+ import '../chunk-BKZBWPUH.js';
3
+ import '../chunk-HNQUX43Z.js';
4
+ import '../chunk-H63FYCMY.js';
5
+ //# sourceMappingURL=prompt-bar.js.map
6
+ //# sourceMappingURL=prompt-bar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"prompt-bar.js"}