@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,27 @@
1
+ import * as React from 'react';
2
+ import { RadioGroup as RadioGroupPrimitive } from 'radix-ui';
3
+ /**
4
+ * Radio, 1:1 with the uiKit `_radioBase` (852:22410) and `Radio` (852:22426) sets: a 16px
5
+ * circle, checked as a solid primary fill with a 6px dot, with an optional label (14/20 medium,
6
+ * text/default) and description (14/20 regular, muted) 2px apart, 8px from the circle, on either
7
+ * side. Disabled turns both texts text/subtle. The look of every state is
8
+ * styles/components/radio.css.
9
+ *
10
+ * A Radio lives in a RadioGroup (Radix): the group owns the value, so `checked` (Figma's
11
+ * property) follows from the group's `value` / `defaultValue`, and arrow keys move between
12
+ * options. With a label or description the whole field is a `<label>`, so a click anywhere on
13
+ * it (circle, label, description) picks the option, and hovering it hovers the circle; the label
14
+ * names the circle, the description is wired with `aria-describedby`.
15
+ */
16
+ export interface RadioGroupProps extends React.ComponentProps<typeof RadioGroupPrimitive.Root> {
17
+ }
18
+ export declare function RadioGroup({ className, ...props }: RadioGroupProps): React.JSX.Element;
19
+ export interface RadioProps extends React.ComponentProps<typeof RadioGroupPrimitive.Item> {
20
+ label?: React.ReactNode;
21
+ description?: React.ReactNode;
22
+ /** Which side of the text the circle sits on. */
23
+ placement?: 'left' | 'right';
24
+ /** Show a state without interacting, for state sheets. */
25
+ 'data-force'?: 'hover' | 'focus' | 'pressed';
26
+ }
27
+ export declare function Radio({ className, label, description, placement, id, disabled, ...props }: RadioProps): React.JSX.Element;
@@ -0,0 +1,4 @@
1
+ 'use client';export { Radio, RadioGroup } from '../chunk-LLHTVIM3.js';
2
+ import '../chunk-H63FYCMY.js';
3
+ //# sourceMappingURL=radio.js.map
4
+ //# sourceMappingURL=radio.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"radio.js"}
@@ -0,0 +1,20 @@
1
+ import * as React from 'react';
2
+ /**
3
+ * SearchBar, 1:1 with the uiKit `searchBar` (3233:18871): a 32px field for the sidebar that
4
+ * fills its container. A 16px search icon in text/muted, 13px text (placeholder text/subtle),
5
+ * 8px padding and gaps, radius-lg, border/default on bg/card with the xs shadow; hover takes
6
+ * border/strong, focus border/focus with the 2px focus ring. The ⌘K keys (Kbd sm) can be hidden
7
+ * with `shortcut={false}`.
8
+ *
9
+ * With `shortcut`, ⌘K or Ctrl+K anywhere on the page focuses it; Escape clears it.
10
+ */
11
+ export interface SearchBarProps extends Omit<React.ComponentProps<'input'>, 'size'> {
12
+ /** Show the ⌘K keycaps and listen for the shortcut. */
13
+ shortcut?: boolean;
14
+ /** Listen for ⌘K / Ctrl+K. Defaults to `shortcut`; turn it off when something else owns the
15
+ * shortcut (a Command menu this bar opens) but the keycaps should still show. */
16
+ hotkey?: boolean;
17
+ /** Classes for the outer field; `className` styles the input. */
18
+ wrapperClassName?: string;
19
+ }
20
+ export declare const SearchBar: React.ForwardRefExoticComponent<Omit<SearchBarProps, "ref"> & React.RefAttributes<HTMLInputElement>>;
@@ -0,0 +1,5 @@
1
+ 'use client';export { SearchBar } from '../chunk-UGRSWP6U.js';
2
+ import '../chunk-BKZBWPUH.js';
3
+ import '../chunk-H63FYCMY.js';
4
+ //# sourceMappingURL=search-bar.js.map
5
+ //# sourceMappingURL=search-bar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"search-bar.js"}
@@ -0,0 +1,32 @@
1
+ import * as React from 'react';
2
+ /**
3
+ * SegmentedControl, from the uiKit `segmented control` page: 2–5 segments that switch
4
+ * views or filters in place. One segment is always selected; the selected pill slides under
5
+ * the labels to the new segment, as in Tabs and Pagination (sliding-indicator.tsx: 300 ms,
6
+ * the leading edge first): a white card with Shadow/sm in Light. Arrow keys move between segments.
7
+ * Values 1:1 with the uiKit `_segmentedControl/item` (3080:20278) and `SegmentedControl` (3080:21247) sets.
8
+ */
9
+ type Size = 'xs' | 'md' | 'lg';
10
+ type Shape = 'default' | 'rounded';
11
+ export interface SegmentedControlItem {
12
+ value: string;
13
+ label: React.ReactNode;
14
+ icon?: React.ReactNode;
15
+ disabled?: boolean;
16
+ }
17
+ export interface SegmentedControlProps {
18
+ items: SegmentedControlItem[];
19
+ value?: string;
20
+ defaultValue?: string;
21
+ onValueChange?: (value: string) => void;
22
+ size?: Size;
23
+ shape?: Shape;
24
+ /** A 1px border-subtle outline around the track. */
25
+ border?: boolean;
26
+ fullWidth?: boolean;
27
+ /** Required when the segments have no visible text of their own. */
28
+ 'aria-label'?: string;
29
+ className?: string;
30
+ }
31
+ export declare function SegmentedControl({ items, value: valueProp, defaultValue, onValueChange, size, shape, border, fullWidth, className, ...aria }: SegmentedControlProps): React.JSX.Element;
32
+ export {};
@@ -0,0 +1,5 @@
1
+ 'use client';export { SegmentedControl } from '../chunk-WTMZT3IT.js';
2
+ import '../chunk-J3NSDRVH.js';
3
+ import '../chunk-H63FYCMY.js';
4
+ //# sourceMappingURL=segmented-control.js.map
5
+ //# sourceMappingURL=segmented-control.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"segmented-control.js"}
@@ -0,0 +1,97 @@
1
+ import * as React from 'react';
2
+ import { type MenuItemContentProps } from './dropdown.js';
3
+ /**
4
+ * Select, 1:1 with the uiKit `Select` set (4022:3531): the field around it is Input's (a 13px
5
+ * medium label 8px above, a 13px hint or error under it), the trigger is Input's skin with the
6
+ * value and a 16px chevron (sm 28, md 32, lg 36; 12px in, 8px gaps), an optional 16px leading
7
+ * icon (by default the picked option's own icon, when the options have icons). Placeholder is text/muted, a value text/default. While the list is open the trigger
8
+ * keeps the focus border and ring.
9
+ *
10
+ * The list is the Dropdown menu: the same surface, rows, groups and options, so every option
11
+ * takes what a `DropdownMenuItem` takes (icon, description, stacked or inline layout, 20px
12
+ * icons, a shortcut) and the current one is marked with the check. It opens 4px under the
13
+ * trigger, at least as wide.
14
+ *
15
+ * Built on the Radix Select: arrow keys, typeahead, Home/End, Escape, a native form value
16
+ * (`name`), and focus back on the trigger. Inside a FormField, leave out `label`, `hint` and
17
+ * `error`.
18
+ */
19
+ export interface SelectOption extends Omit<MenuItemContentProps, 'label' | 'selected' | 'renderLabel' | 'layout' | 'iconSize'> {
20
+ value: string;
21
+ label: string;
22
+ disabled?: boolean;
23
+ }
24
+ export interface SelectGroup {
25
+ label?: React.ReactNode;
26
+ options: SelectOption[];
27
+ }
28
+ export interface SelectProps {
29
+ /** Options, or titled groups of options. */
30
+ options: SelectOption[] | SelectGroup[];
31
+ value?: string;
32
+ defaultValue?: string;
33
+ onValueChange?: (value: string) => void;
34
+ placeholder?: string;
35
+ label?: React.ReactNode;
36
+ hint?: React.ReactNode;
37
+ /** An error message (replaces the hint), or `true` to mark the field invalid without one. */
38
+ error?: React.ReactNode | boolean;
39
+ size?: 'sm' | 'md' | 'lg';
40
+ /** A 16px icon before the value. Left out, the picked option's own icon shows there. */
41
+ leadingIcon?: React.ReactNode;
42
+ /** Row layout of every option: description under the label, or after it. */
43
+ layout?: MenuItemContentProps['layout'];
44
+ /** Option icon size; 20 suits stacked two-line options. */
45
+ iconSize?: MenuItemContentProps['iconSize'];
46
+ disabled?: boolean;
47
+ required?: boolean;
48
+ /** Form field name, for a native form submit. */
49
+ name?: string;
50
+ id?: string;
51
+ open?: boolean;
52
+ defaultOpen?: boolean;
53
+ onOpenChange?: (open: boolean) => void;
54
+ /** Portal target. Defaults to `document.body`. */
55
+ container?: HTMLElement | null;
56
+ 'aria-label'?: string;
57
+ /** Classes for the outer wrapper (label + field + hint). `className` styles the trigger. */
58
+ wrapperClassName?: string;
59
+ className?: string;
60
+ /** Show a state without interacting, for state sheets. */
61
+ 'data-force'?: 'hover' | 'focus';
62
+ }
63
+ export declare const isOptionGroups: <T>(o: T[] | {
64
+ options: T[];
65
+ }[]) => o is {
66
+ options: T[];
67
+ }[];
68
+ /** Ids and state for a field with a label, a hint or an error, inside or outside a FormField. */
69
+ export declare function useFieldChrome({ id, disabled, error, hint, }: {
70
+ id?: string;
71
+ disabled?: boolean;
72
+ error?: React.ReactNode | boolean;
73
+ hint?: React.ReactNode;
74
+ }): {
75
+ controlId: string;
76
+ disabled: boolean;
77
+ invalid: boolean;
78
+ required: boolean | undefined;
79
+ describedBy: string | undefined;
80
+ message: React.ReactNode;
81
+ messageId: string | undefined;
82
+ isError: boolean;
83
+ };
84
+ /** Label 8px above the control, hint or error 8px under it: Input's field, for Select and Combobox. */
85
+ export declare function FieldChrome({ label, action, chrome, className, children, }: {
86
+ label?: React.ReactNode;
87
+ /** On the label's line, at the field's right edge: the smallest button, e.g. Clear. */
88
+ action?: React.ReactNode;
89
+ chrome: ReturnType<typeof useFieldChrome>;
90
+ className?: string;
91
+ children: React.ReactNode;
92
+ }): React.JSX.Element;
93
+ /** The trigger's chevron, 16px in the icon colour. */
94
+ export declare function SelectChevron({ className }: {
95
+ className?: string;
96
+ }): React.JSX.Element;
97
+ export declare function Select({ options, value, defaultValue, onValueChange, placeholder, label, hint, error, size, leadingIcon, layout, iconSize, disabled, required, name, id, open, defaultOpen, onOpenChange, container, wrapperClassName, className, 'data-force': force, ...props }: SelectProps): React.JSX.Element;
@@ -0,0 +1,7 @@
1
+ 'use client';export { FieldChrome, Select, SelectChevron, isOptionGroups, useFieldChrome } from '../chunk-72OCFAPT.js';
2
+ import '../chunk-UBNHSZSE.js';
3
+ import '../chunk-3DINAQLL.js';
4
+ import '../chunk-BKZBWPUH.js';
5
+ import '../chunk-H63FYCMY.js';
6
+ //# sourceMappingURL=select.js.map
7
+ //# sourceMappingURL=select.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"select.js"}
@@ -0,0 +1,37 @@
1
+ import * as React from 'react';
2
+ import { Dialog as DialogPrimitive } from 'radix-ui';
3
+ /**
4
+ * Sheet, 1:1 with the uiKit `Sheet` set (4025:3504): a panel that slides in from an edge and sits
5
+ * flush with it, square and borderless on that side. bottom for phones (full width, radius-2xl
6
+ * on the top corners, a 24px handle band with a 36 × 4 border/strong grip); right or left for
7
+ * wider screens (400px, full height, radius-2xl on the inner corners, the Dialog's 36px close
8
+ * button 7px from the top-right corner). Both are bg/card with a
9
+ * border/subtle edge on the open side and the shadcn `lg` shadow, 16px in and 16px between a
10
+ * header (14px medium title over a 13px muted description, 2px apart), the content and a
11
+ * right-aligned footer of buttons 8px apart (on the bottom sheet they share the width).
12
+ *
13
+ * Built on the Radix Dialog: focus moves in on open and back to the trigger on close; Escape,
14
+ * the backdrop or the handle closes it. It slides in over 250 ms on ease-out and out over 200.
15
+ */
16
+ export interface SheetProps {
17
+ open?: boolean;
18
+ defaultOpen?: boolean;
19
+ onOpenChange?: (open: boolean) => void;
20
+ /** Optional element that opens the sheet (rendered with `asChild`, so pass a Button). */
21
+ trigger?: React.ReactNode;
22
+ side?: 'bottom' | 'right' | 'left';
23
+ title: React.ReactNode;
24
+ description?: React.ReactNode;
25
+ /** The buttons at the bottom. Wrap one in `SheetClose` to make it close the sheet. */
26
+ footer?: React.ReactNode;
27
+ children?: React.ReactNode;
28
+ /** Modal blocks the page and shows the overlay; turn it off for inline previews. */
29
+ modal?: boolean;
30
+ /** Portal target. Defaults to `document.body`. */
31
+ container?: HTMLElement | null;
32
+ onOpenAutoFocus?: (event: Event) => void;
33
+ className?: string;
34
+ }
35
+ export declare function Sheet({ open, defaultOpen, onOpenChange, trigger, side, title, description, footer, children, modal, container, onOpenAutoFocus, className, }: SheetProps): React.JSX.Element;
36
+ /** Wrap a footer button in this to make it close the sheet: `<SheetClose asChild><Button…/></SheetClose>`. */
37
+ export declare const SheetClose: React.ForwardRefExoticComponent<DialogPrimitive.DialogCloseProps & React.RefAttributes<HTMLButtonElement>>;
@@ -0,0 +1,6 @@
1
+ 'use client';export { Sheet, SheetClose } from '../chunk-TKO44NDI.js';
2
+ import '../chunk-JPNWHWAQ.js';
3
+ import '../chunk-HNQUX43Z.js';
4
+ import '../chunk-H63FYCMY.js';
5
+ //# sourceMappingURL=sheet.js.map
6
+ //# sourceMappingURL=sheet.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"sheet.js"}
@@ -0,0 +1,52 @@
1
+ import * as React from 'react';
2
+ import { Collapsible } from 'radix-ui';
3
+ export interface SidebarProps extends React.ComponentProps<'nav'> {
4
+ }
5
+ /** The navigation landmark. Name it with `aria-label` when a page has more than one nav. */
6
+ export declare function Sidebar({ className, ...props }: SidebarProps): React.JSX.Element;
7
+ export interface SidebarItemProps extends Omit<React.ComponentProps<'a'>, 'children'> {
8
+ label: string;
9
+ icon?: React.ReactNode;
10
+ /** The current page. Sets `aria-current="page"`. */
11
+ active?: boolean;
12
+ /** Unread or pending work. Hidden at 0. */
13
+ count?: number;
14
+ /** The collapsed rail: icon only, label in a tooltip. */
15
+ iconOnly?: boolean;
16
+ disabled?: boolean;
17
+ /** Render your router's link instead of `<a>`. */
18
+ asChild?: boolean;
19
+ children?: React.ReactNode;
20
+ }
21
+ export declare function SidebarItem({ className, label, icon, active, count, iconOnly, disabled, asChild, href, children, ...props }: SidebarItemProps): React.JSX.Element;
22
+ export interface SidebarGroupProps extends Omit<React.ComponentProps<typeof Collapsible.Root>, 'children'> {
23
+ label: string;
24
+ icon?: React.ReactNode;
25
+ /** How many items the group holds. */
26
+ count?: number;
27
+ children?: React.ReactNode;
28
+ /** Forwarded to the header button, e.g. `data-force="hover"` on a state sheet. */
29
+ triggerProps?: React.ComponentProps<'button'> & {
30
+ 'data-force'?: string;
31
+ };
32
+ }
33
+ export declare function SidebarGroup({ className, label, icon, count, defaultOpen, open: openProp, onOpenChange, children, triggerProps, ...props }: SidebarGroupProps): React.JSX.Element;
34
+ export interface SidebarSubItemProps extends Omit<React.ComponentProps<'a'>, 'children'> {
35
+ label: string;
36
+ active?: boolean;
37
+ disabled?: boolean;
38
+ asChild?: boolean;
39
+ children?: React.ReactNode;
40
+ }
41
+ export declare function SidebarSubItem({ className, label, active, disabled, asChild, href, children, ...props }: SidebarSubItemProps): React.JSX.Element;
42
+ export interface SidebarSubGroupProps extends Omit<React.ComponentProps<'div'>, 'children'> {
43
+ label: string;
44
+ /** Its `SidebarSubItem`s; they sit 12px further in. */
45
+ children?: React.ReactNode;
46
+ /** One of its sub-items is the current page: opens it by default and marks the label. */
47
+ active?: boolean;
48
+ open?: boolean;
49
+ defaultOpen?: boolean;
50
+ onOpenChange?: (open: boolean) => void;
51
+ }
52
+ export declare function SidebarSubGroup({ className, label, children, active, open: openProp, defaultOpen, onOpenChange, ...props }: SidebarSubGroupProps): React.JSX.Element;
@@ -0,0 +1,4 @@
1
+ 'use client';export { Sidebar, SidebarGroup, SidebarItem, SidebarSubGroup, SidebarSubItem } from '../chunk-BNTPPZCK.js';
2
+ import '../chunk-H63FYCMY.js';
3
+ //# sourceMappingURL=sidebar.js.map
4
+ //# sourceMappingURL=sidebar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"sidebar.js"}
@@ -0,0 +1,18 @@
1
+ import * as React from 'react';
2
+ /**
3
+ * Skeleton, 1:1 with the uiKit `Skeleton` set (4025:3862): a bg/muted placeholder in three
4
+ * shapes. text is a 12px line at radius-sm (240 wide by default), circle 32px round, rect
5
+ * 240 × 120 at radius-lg. Size it with `width` / `height` or classes.
6
+ *
7
+ * `animated` runs a soft band across the block (a 6% wash of text/default, so it lightens in
8
+ * Dark and darkens in Light), 1.6 s a pass on ease-in-out; with reduced motion it stays still.
9
+ *
10
+ * The blocks are aria-hidden: put `aria-busy` on the region that is loading.
11
+ */
12
+ export interface SkeletonProps extends React.ComponentProps<'div'> {
13
+ shape?: 'text' | 'circle' | 'rect';
14
+ animated?: boolean;
15
+ width?: number | string;
16
+ height?: number | string;
17
+ }
18
+ export declare function Skeleton({ shape, animated, width, height, className, style, ...props }: SkeletonProps): React.JSX.Element;
@@ -0,0 +1,4 @@
1
+ 'use client';export { Skeleton } from '../chunk-YG7JOOLJ.js';
2
+ import '../chunk-H63FYCMY.js';
3
+ //# sourceMappingURL=skeleton.js.map
4
+ //# sourceMappingURL=skeleton.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"skeleton.js"}
@@ -0,0 +1,57 @@
1
+ import * as React from 'react';
2
+ /**
3
+ * Slider, 1:1 with the uiKit `Slider` set (4025:3621): a 4px bg/muted track with the picked
4
+ * part in action/primary/bg, and 16px bg/popover thumbs with a border/strong ring and the
5
+ * shadow-sm drop (0 1 3). Hover turns the ring text/subtle, keyboard focus adds a 2px focus
6
+ * ring, disabled fades the whole slider to 50%. 20px tall, so the thumbs have room.
7
+ *
8
+ * One value or a range: pass a number or a `[from, to]` pair as `value` / `defaultValue`.
9
+ *
10
+ * Around it, all optional:
11
+ * - `label` on the left above the track and, on the same line at the right, the picked value
12
+ * (`showValue`, on by default, "40" or "20 – 80", through `formatValue`).
13
+ * - `inputs`: small number fields beside the track to type a value: the range's from on the
14
+ * left and to on the right, a single value on the right. They take the readout's place.
15
+ * A typed value is clamped, snapped to `step` and kept in order on Enter or blur; Escape
16
+ * puts the current value back.
17
+ * - `tooltip`: the value in a Tooltip bubble over the thumb while it is dragged or moved with
18
+ * the keys.
19
+ * - `orientation="vertical"`: the track runs bottom to top (160px unless styled), the inputs
20
+ * go above (to) and below (from or the single value).
21
+ *
22
+ * Built on the Radix Slider: arrow keys, Page Up/Down, Home/End, a native form value (`name`)
23
+ * and a `slider` role per thumb, with `formatValue` as its spoken value.
24
+ */
25
+ export interface SliderProps {
26
+ /** A number, or a `[from, to]` pair for a range. */
27
+ value?: number | [number, number];
28
+ defaultValue?: number | [number, number];
29
+ /** Every change while it moves. Gets a number or a pair, as given. */
30
+ onValueChange?: (value: number | [number, number]) => void;
31
+ /** Once, when a drag ends or a key or a typed value changes it. */
32
+ onValueCommit?: (value: number | [number, number]) => void;
33
+ min?: number;
34
+ max?: number;
35
+ step?: number;
36
+ /** Smallest gap between the range's thumbs, in steps. */
37
+ minStepsBetweenThumbs?: number;
38
+ label?: React.ReactNode;
39
+ /** The picked value at the right of the label's line. Hidden while `inputs` are on. */
40
+ showValue?: boolean;
41
+ /** Small number fields beside the track to type the value. */
42
+ inputs?: boolean;
43
+ /** The value in a bubble over the thumb while it moves. */
44
+ tooltip?: boolean;
45
+ orientation?: 'horizontal' | 'vertical';
46
+ /** How a value reads in the readout, the bubble, the fields' neighbours and to screen readers. */
47
+ formatValue?: (value: number) => string;
48
+ disabled?: boolean;
49
+ /** Form field name, for a native form submit. */
50
+ name?: string;
51
+ id?: string;
52
+ /** Names the slider when there is no `label`. */
53
+ 'aria-label'?: string;
54
+ /** Classes for the outer wrapper. */
55
+ className?: string;
56
+ }
57
+ export declare function Slider({ value: valueProp, defaultValue, onValueChange, onValueCommit, min, max, step, minStepsBetweenThumbs, label, showValue, inputs, tooltip, orientation, formatValue, disabled, name, id, 'aria-label': ariaLabel, className, }: SliderProps): React.JSX.Element;
@@ -0,0 +1,8 @@
1
+ 'use client';export { Slider } from '../chunk-L6NCCSIP.js';
2
+ import '../chunk-YPNKBE5X.js';
3
+ import '../chunk-B6V4VSGH.js';
4
+ import '../chunk-UBNHSZSE.js';
5
+ import '../chunk-BKZBWPUH.js';
6
+ import '../chunk-H63FYCMY.js';
7
+ //# sourceMappingURL=slider.js.map
8
+ //# sourceMappingURL=slider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"slider.js"}
@@ -0,0 +1,23 @@
1
+ import * as React from 'react';
2
+ /**
3
+ * The background (or underline) that slides under the selected item of Tabs, Segmented control
4
+ * and Pagination, all on one motion: 300 ms on the kit's ease-out, the leading edge (the one
5
+ * on the side it is heading to) moving straight away and the trailing edge 30 ms behind, so it
6
+ * stretches a little towards the new item and settles there. A change mid-move carries on from
7
+ * wherever it is. Only a change of selection animates; a resize just puts it in place. With
8
+ * reduced motion it moves at once.
9
+ *
10
+ * `listRef` is the positioned element the items sit in, `selector` finds the selected item in
11
+ * it, `selected` is whatever names the selection. Render the indicator absolutely at left 0 of
12
+ * the list with the returned `ref`; until it is placed (`ready`), let the selected item paint
13
+ * its own fill so the server render isn't bare.
14
+ */
15
+ export declare const SLIDE_MS = 300;
16
+ export declare function useSlidingIndicator<T extends HTMLElement = HTMLSpanElement>(listRef: React.RefObject<HTMLElement | null>, selector: string, selected: unknown,
17
+ /** Off: it moves to the new item at once. */
18
+ { animate: motionOn }?: {
19
+ animate?: boolean;
20
+ }): {
21
+ ref: React.RefObject<T | null>;
22
+ ready: boolean;
23
+ };
@@ -0,0 +1,3 @@
1
+ 'use client';export { SLIDE_MS, useSlidingIndicator } from '../chunk-J3NSDRVH.js';
2
+ //# sourceMappingURL=sliding-indicator.js.map
3
+ //# sourceMappingURL=sliding-indicator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"sliding-indicator.js"}
@@ -0,0 +1,33 @@
1
+ import * as React from 'react';
2
+ /**
3
+ * Streaming text: an agent's answer writing itself out as it arrives, in the assistant
4
+ * Message's type (text/default 13/19.5).
5
+ *
6
+ * Give it the text received so far and keep it growing; `streaming` while more is coming. A
7
+ * model sends text in uneven chunks, so the component doesn't print them as they land: it
8
+ * writes at an even pace (`speed`, letters a second), stops briefly after a full stop or a
9
+ * comma, and speeds up when it falls behind, so a backlog never takes more than about a second
10
+ * to catch up. A caret (2px, action/primary/bg) sits at the end while it writes.
11
+ *
12
+ * `reveal` is how each piece comes in: `blur` (default) fades every letter in from a 2px blur
13
+ * over 220 ms, `fade` without the blur, `word` a word at a time, `none` prints letters as they
14
+ * come with no motion. Only the letters arriving animate; the rest carry no filter.
15
+ *
16
+ * The whole text received is in the DOM from the start (letters not yet written are only
17
+ * transparent), so screen readers get it at once; the box is aria-busy while it streams.
18
+ * With reduced motion it shows everything received straight away.
19
+ */
20
+ export interface StreamingTextProps extends Omit<React.ComponentProps<'div'>, 'children'> {
21
+ /** Everything received so far. Grow it as chunks arrive. */
22
+ text: string;
23
+ /** More is coming: keeps the caret and the pace going. */
24
+ streaming?: boolean;
25
+ /** Letters written a second at the even pace. */
26
+ speed?: number;
27
+ reveal?: 'blur' | 'fade' | 'word' | 'none';
28
+ /** The caret at the end while it writes. */
29
+ caret?: boolean;
30
+ /** Called once everything received is written and `streaming` is off. */
31
+ onDone?: () => void;
32
+ }
33
+ export declare function StreamingText({ text, streaming, speed, reveal, caret, onDone, className, ...props }: StreamingTextProps): React.JSX.Element;
@@ -0,0 +1,4 @@
1
+ 'use client';export { StreamingText } from '../chunk-RTJ76X5U.js';
2
+ import '../chunk-H63FYCMY.js';
3
+ //# sourceMappingURL=streaming-text.js.map
4
+ //# sourceMappingURL=streaming-text.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"streaming-text.js"}
@@ -0,0 +1,15 @@
1
+ import * as React from 'react';
2
+ import { Switch as SwitchPrimitive } from 'radix-ui';
3
+ /**
4
+ * Switch, 1:1 with the uiKit `_switchBase` (3647:17617) and `Switch` (3647:17714) sets: a
5
+ * 32 × 18 track (border/input off, calm green on, each with its hover), a 14px white thumb,
6
+ * a 2px focus ring, 50% when disabled. Label medium 13/19.5, description muted, 10px from
7
+ * the track. Use it for settings that apply at once; use a checkbox inside a form.
8
+ * The look of every state lives in styles/components.css.
9
+ */
10
+ export interface SwitchProps extends React.ComponentProps<typeof SwitchPrimitive.Root> {
11
+ label?: React.ReactNode;
12
+ description?: React.ReactNode;
13
+ placement?: 'left' | 'right';
14
+ }
15
+ export declare function Switch({ className, label, description, placement, id, ...props }: SwitchProps): React.JSX.Element;
@@ -0,0 +1,4 @@
1
+ 'use client';export { Switch } from '../chunk-SH6NG6VN.js';
2
+ import '../chunk-H63FYCMY.js';
3
+ //# sourceMappingURL=switch.js.map
4
+ //# sourceMappingURL=switch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"switch.js"}
@@ -0,0 +1,57 @@
1
+ import * as React from 'react';
2
+ /**
3
+ * Table, 1:1 with the uiKit `Table` set (3411:21610) and its parts: table/header (3410:17835),
4
+ * table/row (3410:18040), table/cell (3409:17760), table/headerCell (3409:17734) and
5
+ * table/checkboxCell (3409:17703). A real `<table>`.
6
+ *
7
+ * - Frame: bg/card, 1px border-subtle, radius-xl, clipped.
8
+ * - Header row: component/table-header fill, 1px border-subtle under it. Header cells pad
9
+ * 4 / 8 / 4 / 4 around a label button (8px sides, 3px top and bottom, radius-md, medium
10
+ * 13/18, text-muted); hover tints the button bg-hover. Sortable headers cycle
11
+ * none → asc → desc with a 14px arrow 10px after the label, and set aria-sort.
12
+ * - Cells: 12 left, 10 right, 8 top and bottom, at least 40 high, regular 13/19.5, clipped
13
+ * with an ellipsis. Chips and other nodes sit in a row 4px apart.
14
+ * - Checkbox column: 8px left padding, no right padding; the header box selects all.
15
+ * - zebra: every second row on component/table-zebra.
16
+ * - Row hover lifts the row: bg-hover, 1px border-strong edge, radius-xl, shadow sm.
17
+ * - overflow="fit": columns are proportional (`width` is an fr weight). overflow="scroll":
18
+ * columns keep their pixel `width`, the first column stays in place, a 64px fade marks
19
+ * the clipped edge and a 6px scrollbar (bg-muted track, border-strong thumb) sits below.
20
+ *
21
+ * The row edge is drawn with inset shadows on the cells, since table rows can't take a
22
+ * border radius. `data-force="hover"` on a `<tr>` shows the hover state.
23
+ */
24
+ export type Sort = {
25
+ key: string;
26
+ direction: 'asc' | 'desc';
27
+ } | null;
28
+ export type Row = {
29
+ id: string;
30
+ } & Record<string, unknown>;
31
+ export interface Column<R extends Row = Row> {
32
+ key: string;
33
+ header: React.ReactNode;
34
+ /** fr weight with overflow="fit" (default 1), pixels with overflow="scroll" (default 160). */
35
+ width?: number;
36
+ sortable?: boolean;
37
+ /** Renders the cell; defaults to the row's value at `key`. */
38
+ cell?: (row: R) => React.ReactNode;
39
+ align?: 'left' | 'right';
40
+ }
41
+ export interface TableProps<R extends Row = Row> extends Omit<React.ComponentProps<'div'>, 'children'> {
42
+ columns: Column<R>[];
43
+ rows: R[];
44
+ selectable?: boolean;
45
+ zebra?: boolean;
46
+ overflow?: 'fit' | 'scroll';
47
+ /** Called with the new sort; rows are sorted by value unless `manualSort` is set. */
48
+ onSortChange?: (sort: Sort) => void;
49
+ defaultSort?: Sort;
50
+ /** Leave rows in the order given (sort them yourself in onSortChange). */
51
+ manualSort?: boolean;
52
+ selected?: string[];
53
+ onSelectedChange?: (ids: string[]) => void;
54
+ /** Accessible name of the table. */
55
+ label?: string;
56
+ }
57
+ export declare function Table<R extends Row = Row>({ columns, rows, selectable, zebra, overflow, onSortChange, defaultSort, manualSort, selected: selectedProp, onSelectedChange, label, className, ...props }: TableProps<R>): React.JSX.Element;
@@ -0,0 +1,5 @@
1
+ 'use client';export { Table } from '../chunk-X3PQANZO.js';
2
+ import '../chunk-FDKIX4DC.js';
3
+ import '../chunk-H63FYCMY.js';
4
+ //# sourceMappingURL=table.js.map
5
+ //# sourceMappingURL=table.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"table.js"}