@inui/design-system 0.0.0-stage → 1.22.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 (312) hide show
  1. package/README.md +360 -2
  2. package/dist/components/ui/accordion.d.ts +44 -0
  3. package/dist/components/ui/accordion.d.ts.map +1 -0
  4. package/dist/components/ui/accordion.js +86 -0
  5. package/dist/components/ui/accordion.js.map +1 -0
  6. package/dist/components/ui/ai-avatar.d.ts +46 -0
  7. package/dist/components/ui/ai-avatar.d.ts.map +1 -0
  8. package/dist/components/ui/ai-avatar.js +43 -0
  9. package/dist/components/ui/ai-avatar.js.map +1 -0
  10. package/dist/components/ui/ai-label.d.ts +118 -0
  11. package/dist/components/ui/ai-label.d.ts.map +1 -0
  12. package/dist/components/ui/ai-label.js +184 -0
  13. package/dist/components/ui/ai-label.js.map +1 -0
  14. package/dist/components/ui/ai-sparkle.d.ts +91 -0
  15. package/dist/components/ui/ai-sparkle.d.ts.map +1 -0
  16. package/dist/components/ui/ai-sparkle.js +200 -0
  17. package/dist/components/ui/ai-sparkle.js.map +1 -0
  18. package/dist/components/ui/alert-dialog.d.ts +79 -0
  19. package/dist/components/ui/alert-dialog.d.ts.map +1 -0
  20. package/dist/components/ui/alert-dialog.js +147 -0
  21. package/dist/components/ui/alert-dialog.js.map +1 -0
  22. package/dist/components/ui/alert.d.ts +71 -0
  23. package/dist/components/ui/alert.d.ts.map +1 -0
  24. package/dist/components/ui/alert.js +108 -0
  25. package/dist/components/ui/alert.js.map +1 -0
  26. package/dist/components/ui/aspect-ratio.d.ts +30 -0
  27. package/dist/components/ui/aspect-ratio.d.ts.map +1 -0
  28. package/dist/components/ui/aspect-ratio.js +40 -0
  29. package/dist/components/ui/aspect-ratio.js.map +1 -0
  30. package/dist/components/ui/attachment.d.ts +74 -0
  31. package/dist/components/ui/attachment.d.ts.map +1 -0
  32. package/dist/components/ui/attachment.js +142 -0
  33. package/dist/components/ui/attachment.js.map +1 -0
  34. package/dist/components/ui/avatar.d.ts +82 -0
  35. package/dist/components/ui/avatar.d.ts.map +1 -0
  36. package/dist/components/ui/avatar.js +123 -0
  37. package/dist/components/ui/avatar.js.map +1 -0
  38. package/dist/components/ui/badge.d.ts +130 -0
  39. package/dist/components/ui/badge.d.ts.map +1 -0
  40. package/dist/components/ui/badge.js +226 -0
  41. package/dist/components/ui/badge.js.map +1 -0
  42. package/dist/components/ui/breadcrumb.d.ts +43 -0
  43. package/dist/components/ui/breadcrumb.d.ts.map +1 -0
  44. package/dist/components/ui/breadcrumb.js +98 -0
  45. package/dist/components/ui/breadcrumb.js.map +1 -0
  46. package/dist/components/ui/browser-tabs.d.ts +218 -0
  47. package/dist/components/ui/browser-tabs.d.ts.map +1 -0
  48. package/dist/components/ui/browser-tabs.js +528 -0
  49. package/dist/components/ui/browser-tabs.js.map +1 -0
  50. package/dist/components/ui/bubble.d.ts +80 -0
  51. package/dist/components/ui/bubble.d.ts.map +1 -0
  52. package/dist/components/ui/bubble.js +235 -0
  53. package/dist/components/ui/bubble.js.map +1 -0
  54. package/dist/components/ui/button-group.d.ts +60 -0
  55. package/dist/components/ui/button-group.d.ts.map +1 -0
  56. package/dist/components/ui/button-group.js +89 -0
  57. package/dist/components/ui/button-group.js.map +1 -0
  58. package/dist/components/ui/button.d.ts +157 -0
  59. package/dist/components/ui/button.d.ts.map +1 -0
  60. package/dist/components/ui/button.js +144 -0
  61. package/dist/components/ui/button.js.map +1 -0
  62. package/dist/components/ui/calendar.d.ts +57 -0
  63. package/dist/components/ui/calendar.d.ts.map +1 -0
  64. package/dist/components/ui/calendar.js +163 -0
  65. package/dist/components/ui/calendar.js.map +1 -0
  66. package/dist/components/ui/card.d.ts +96 -0
  67. package/dist/components/ui/card.d.ts.map +1 -0
  68. package/dist/components/ui/card.js +131 -0
  69. package/dist/components/ui/card.js.map +1 -0
  70. package/dist/components/ui/carousel.d.ts +86 -0
  71. package/dist/components/ui/carousel.d.ts.map +1 -0
  72. package/dist/components/ui/carousel.js +207 -0
  73. package/dist/components/ui/carousel.js.map +1 -0
  74. package/dist/components/ui/checkbox.d.ts +54 -0
  75. package/dist/components/ui/checkbox.d.ts.map +1 -0
  76. package/dist/components/ui/checkbox.js +78 -0
  77. package/dist/components/ui/checkbox.js.map +1 -0
  78. package/dist/components/ui/collapsible.d.ts +45 -0
  79. package/dist/components/ui/collapsible.d.ts.map +1 -0
  80. package/dist/components/ui/collapsible.js +65 -0
  81. package/dist/components/ui/collapsible.js.map +1 -0
  82. package/dist/components/ui/combobox.d.ts +111 -0
  83. package/dist/components/ui/combobox.d.ts.map +1 -0
  84. package/dist/components/ui/combobox.js +264 -0
  85. package/dist/components/ui/combobox.js.map +1 -0
  86. package/dist/components/ui/command.d.ts +71 -0
  87. package/dist/components/ui/command.d.ts.map +1 -0
  88. package/dist/components/ui/command.js +133 -0
  89. package/dist/components/ui/command.js.map +1 -0
  90. package/dist/components/ui/context-menu.d.ts +70 -0
  91. package/dist/components/ui/context-menu.d.ts.map +1 -0
  92. package/dist/components/ui/context-menu.js +163 -0
  93. package/dist/components/ui/context-menu.js.map +1 -0
  94. package/dist/components/ui/count-badge.d.ts +40 -0
  95. package/dist/components/ui/count-badge.d.ts.map +1 -0
  96. package/dist/components/ui/count-badge.js +43 -0
  97. package/dist/components/ui/count-badge.js.map +1 -0
  98. package/dist/components/ui/data-table.d.ts +1026 -0
  99. package/dist/components/ui/data-table.d.ts.map +1 -0
  100. package/dist/components/ui/data-table.js +3423 -0
  101. package/dist/components/ui/data-table.js.map +1 -0
  102. package/dist/components/ui/dialog.d.ts +73 -0
  103. package/dist/components/ui/dialog.d.ts.map +1 -0
  104. package/dist/components/ui/dialog.js +145 -0
  105. package/dist/components/ui/dialog.js.map +1 -0
  106. package/dist/components/ui/direction.d.ts +35 -0
  107. package/dist/components/ui/direction.d.ts.map +1 -0
  108. package/dist/components/ui/direction.js +35 -0
  109. package/dist/components/ui/direction.js.map +1 -0
  110. package/dist/components/ui/drawer.d.ts +53 -0
  111. package/dist/components/ui/drawer.d.ts.map +1 -0
  112. package/dist/components/ui/drawer.js +115 -0
  113. package/dist/components/ui/drawer.js.map +1 -0
  114. package/dist/components/ui/dropdown-menu.d.ts +75 -0
  115. package/dist/components/ui/dropdown-menu.d.ts.map +1 -0
  116. package/dist/components/ui/dropdown-menu.js +173 -0
  117. package/dist/components/ui/dropdown-menu.js.map +1 -0
  118. package/dist/components/ui/dropzone.d.ts +141 -0
  119. package/dist/components/ui/dropzone.d.ts.map +1 -0
  120. package/dist/components/ui/dropzone.js +257 -0
  121. package/dist/components/ui/dropzone.js.map +1 -0
  122. package/dist/components/ui/empty.d.ts +94 -0
  123. package/dist/components/ui/empty.d.ts.map +1 -0
  124. package/dist/components/ui/empty.js +149 -0
  125. package/dist/components/ui/empty.js.map +1 -0
  126. package/dist/components/ui/field.d.ts +122 -0
  127. package/dist/components/ui/field.d.ts.map +1 -0
  128. package/dist/components/ui/field.js +254 -0
  129. package/dist/components/ui/field.js.map +1 -0
  130. package/dist/components/ui/hover-card.d.ts +51 -0
  131. package/dist/components/ui/hover-card.d.ts.map +1 -0
  132. package/dist/components/ui/hover-card.js +101 -0
  133. package/dist/components/ui/hover-card.js.map +1 -0
  134. package/dist/components/ui/input-group.d.ts +62 -0
  135. package/dist/components/ui/input-group.d.ts.map +1 -0
  136. package/dist/components/ui/input-group.js +115 -0
  137. package/dist/components/ui/input-group.js.map +1 -0
  138. package/dist/components/ui/input-otp.d.ts +52 -0
  139. package/dist/components/ui/input-otp.d.ts.map +1 -0
  140. package/dist/components/ui/input-otp.js +89 -0
  141. package/dist/components/ui/input-otp.js.map +1 -0
  142. package/dist/components/ui/input.d.ts +47 -0
  143. package/dist/components/ui/input.d.ts.map +1 -0
  144. package/dist/components/ui/input.js +47 -0
  145. package/dist/components/ui/input.js.map +1 -0
  146. package/dist/components/ui/item.d.ts +74 -0
  147. package/dist/components/ui/item.d.ts.map +1 -0
  148. package/dist/components/ui/item.js +176 -0
  149. package/dist/components/ui/item.js.map +1 -0
  150. package/dist/components/ui/kbd.d.ts +41 -0
  151. package/dist/components/ui/kbd.d.ts.map +1 -0
  152. package/dist/components/ui/kbd.js +58 -0
  153. package/dist/components/ui/kbd.js.map +1 -0
  154. package/dist/components/ui/key-value-pair.d.ts +56 -0
  155. package/dist/components/ui/key-value-pair.d.ts.map +1 -0
  156. package/dist/components/ui/key-value-pair.js +110 -0
  157. package/dist/components/ui/key-value-pair.js.map +1 -0
  158. package/dist/components/ui/label.d.ts +83 -0
  159. package/dist/components/ui/label.d.ts.map +1 -0
  160. package/dist/components/ui/label.js +85 -0
  161. package/dist/components/ui/label.js.map +1 -0
  162. package/dist/components/ui/marker.d.ts +54 -0
  163. package/dist/components/ui/marker.d.ts.map +1 -0
  164. package/dist/components/ui/marker.js +79 -0
  165. package/dist/components/ui/marker.js.map +1 -0
  166. package/dist/components/ui/menubar.d.ts +72 -0
  167. package/dist/components/ui/menubar.d.ts.map +1 -0
  168. package/dist/components/ui/menubar.js +174 -0
  169. package/dist/components/ui/menubar.js.map +1 -0
  170. package/dist/components/ui/message-scroller.d.ts +53 -0
  171. package/dist/components/ui/message-scroller.d.ts.map +1 -0
  172. package/dist/components/ui/message-scroller.js +95 -0
  173. package/dist/components/ui/message-scroller.js.map +1 -0
  174. package/dist/components/ui/message.d.ts +63 -0
  175. package/dist/components/ui/message.d.ts.map +1 -0
  176. package/dist/components/ui/message.js +92 -0
  177. package/dist/components/ui/message.js.map +1 -0
  178. package/dist/components/ui/meta-list.d.ts +55 -0
  179. package/dist/components/ui/meta-list.d.ts.map +1 -0
  180. package/dist/components/ui/meta-list.js +75 -0
  181. package/dist/components/ui/meta-list.js.map +1 -0
  182. package/dist/components/ui/native-select.d.ts +51 -0
  183. package/dist/components/ui/native-select.d.ts.map +1 -0
  184. package/dist/components/ui/native-select.js +75 -0
  185. package/dist/components/ui/native-select.js.map +1 -0
  186. package/dist/components/ui/navigation-menu.d.ts +56 -0
  187. package/dist/components/ui/navigation-menu.d.ts.map +1 -0
  188. package/dist/components/ui/navigation-menu.js +116 -0
  189. package/dist/components/ui/navigation-menu.js.map +1 -0
  190. package/dist/components/ui/page-header.d.ts +223 -0
  191. package/dist/components/ui/page-header.d.ts.map +1 -0
  192. package/dist/components/ui/page-header.js +233 -0
  193. package/dist/components/ui/page-header.js.map +1 -0
  194. package/dist/components/ui/pagination.d.ts +68 -0
  195. package/dist/components/ui/pagination.d.ts.map +1 -0
  196. package/dist/components/ui/pagination.js +145 -0
  197. package/dist/components/ui/pagination.js.map +1 -0
  198. package/dist/components/ui/popover.d.ts +61 -0
  199. package/dist/components/ui/popover.d.ts.map +1 -0
  200. package/dist/components/ui/popover.js +144 -0
  201. package/dist/components/ui/popover.js.map +1 -0
  202. package/dist/components/ui/progress.d.ts +35 -0
  203. package/dist/components/ui/progress.d.ts.map +1 -0
  204. package/dist/components/ui/progress.js +46 -0
  205. package/dist/components/ui/progress.js.map +1 -0
  206. package/dist/components/ui/questionnaire.d.ts +92 -0
  207. package/dist/components/ui/questionnaire.d.ts.map +1 -0
  208. package/dist/components/ui/questionnaire.js +277 -0
  209. package/dist/components/ui/questionnaire.js.map +1 -0
  210. package/dist/components/ui/radio-group.d.ts +50 -0
  211. package/dist/components/ui/radio-group.d.ts.map +1 -0
  212. package/dist/components/ui/radio-group.js +65 -0
  213. package/dist/components/ui/radio-group.js.map +1 -0
  214. package/dist/components/ui/resizable.d.ts +44 -0
  215. package/dist/components/ui/resizable.d.ts.map +1 -0
  216. package/dist/components/ui/resizable.js +73 -0
  217. package/dist/components/ui/resizable.js.map +1 -0
  218. package/dist/components/ui/scroll-area.d.ts +55 -0
  219. package/dist/components/ui/scroll-area.d.ts.map +1 -0
  220. package/dist/components/ui/scroll-area.js +72 -0
  221. package/dist/components/ui/scroll-area.js.map +1 -0
  222. package/dist/components/ui/select.d.ts +274 -0
  223. package/dist/components/ui/select.d.ts.map +1 -0
  224. package/dist/components/ui/select.js +609 -0
  225. package/dist/components/ui/select.js.map +1 -0
  226. package/dist/components/ui/separator.d.ts +31 -0
  227. package/dist/components/ui/separator.d.ts.map +1 -0
  228. package/dist/components/ui/separator.js +38 -0
  229. package/dist/components/ui/separator.js.map +1 -0
  230. package/dist/components/ui/sheet.d.ts +59 -0
  231. package/dist/components/ui/sheet.d.ts.map +1 -0
  232. package/dist/components/ui/sheet.js +128 -0
  233. package/dist/components/ui/sheet.js.map +1 -0
  234. package/dist/components/ui/sidebar.d.ts +166 -0
  235. package/dist/components/ui/sidebar.d.ts.map +1 -0
  236. package/dist/components/ui/sidebar.js +512 -0
  237. package/dist/components/ui/sidebar.js.map +1 -0
  238. package/dist/components/ui/skeleton.d.ts +35 -0
  239. package/dist/components/ui/skeleton.d.ts.map +1 -0
  240. package/dist/components/ui/skeleton.js +46 -0
  241. package/dist/components/ui/skeleton.js.map +1 -0
  242. package/dist/components/ui/slider.d.ts +39 -0
  243. package/dist/components/ui/slider.d.ts.map +1 -0
  244. package/dist/components/ui/slider.js +75 -0
  245. package/dist/components/ui/slider.js.map +1 -0
  246. package/dist/components/ui/sonner.d.ts +56 -0
  247. package/dist/components/ui/sonner.d.ts.map +1 -0
  248. package/dist/components/ui/sonner.js +96 -0
  249. package/dist/components/ui/sonner.js.map +1 -0
  250. package/dist/components/ui/spinner.d.ts +37 -0
  251. package/dist/components/ui/spinner.d.ts.map +1 -0
  252. package/dist/components/ui/spinner.js +51 -0
  253. package/dist/components/ui/spinner.js.map +1 -0
  254. package/dist/components/ui/stepper.d.ts +84 -0
  255. package/dist/components/ui/stepper.d.ts.map +1 -0
  256. package/dist/components/ui/stepper.js +145 -0
  257. package/dist/components/ui/stepper.js.map +1 -0
  258. package/dist/components/ui/switch.d.ts +36 -0
  259. package/dist/components/ui/switch.d.ts.map +1 -0
  260. package/dist/components/ui/switch.js +44 -0
  261. package/dist/components/ui/switch.js.map +1 -0
  262. package/dist/components/ui/table.d.ts +80 -0
  263. package/dist/components/ui/table.d.ts.map +1 -0
  264. package/dist/components/ui/table.js +130 -0
  265. package/dist/components/ui/table.js.map +1 -0
  266. package/dist/components/ui/tabs.d.ts +87 -0
  267. package/dist/components/ui/tabs.d.ts.map +1 -0
  268. package/dist/components/ui/tabs.js +128 -0
  269. package/dist/components/ui/tabs.js.map +1 -0
  270. package/dist/components/ui/textarea.d.ts +35 -0
  271. package/dist/components/ui/textarea.d.ts.map +1 -0
  272. package/dist/components/ui/textarea.js +38 -0
  273. package/dist/components/ui/textarea.js.map +1 -0
  274. package/dist/components/ui/time-picker.d.ts +58 -0
  275. package/dist/components/ui/time-picker.d.ts.map +1 -0
  276. package/dist/components/ui/time-picker.js +188 -0
  277. package/dist/components/ui/time-picker.js.map +1 -0
  278. package/dist/components/ui/toggle-group.d.ts +52 -0
  279. package/dist/components/ui/toggle-group.d.ts.map +1 -0
  280. package/dist/components/ui/toggle-group.js +94 -0
  281. package/dist/components/ui/toggle-group.js.map +1 -0
  282. package/dist/components/ui/toggle.d.ts +50 -0
  283. package/dist/components/ui/toggle.d.ts.map +1 -0
  284. package/dist/components/ui/toggle.js +70 -0
  285. package/dist/components/ui/toggle.js.map +1 -0
  286. package/dist/components/ui/tooltip.d.ts +51 -0
  287. package/dist/components/ui/tooltip.d.ts.map +1 -0
  288. package/dist/components/ui/tooltip.js +78 -0
  289. package/dist/components/ui/tooltip.js.map +1 -0
  290. package/dist/hooks/use-dark-mode.d.ts +2 -0
  291. package/dist/hooks/use-dark-mode.d.ts.map +1 -0
  292. package/dist/hooks/use-dark-mode.js +36 -0
  293. package/dist/hooks/use-dark-mode.js.map +1 -0
  294. package/dist/hooks/use-mobile.d.ts +2 -0
  295. package/dist/hooks/use-mobile.d.ts.map +1 -0
  296. package/dist/hooks/use-mobile.js +20 -0
  297. package/dist/hooks/use-mobile.js.map +1 -0
  298. package/dist/index.d.ts +88 -0
  299. package/dist/index.d.ts.map +1 -0
  300. package/dist/index.js +77 -0
  301. package/dist/lib/scope.d.ts +64 -0
  302. package/dist/lib/scope.d.ts.map +1 -0
  303. package/dist/lib/scope.js +74 -0
  304. package/dist/lib/scope.js.map +1 -0
  305. package/dist/lib/utils.d.ts +3 -0
  306. package/dist/lib/utils.d.ts.map +1 -0
  307. package/dist/lib/utils.js +11 -0
  308. package/dist/lib/utils.js.map +1 -0
  309. package/dist/styles.css +2 -0
  310. package/dist/theme-tokens.css +537 -0
  311. package/dist/theme.css +417 -0
  312. package/package.json +103 -3
@@ -0,0 +1,274 @@
1
+ /**
2
+ * Select — single-value dropdown over a fixed, bounded option list.
3
+ *
4
+ * Built on the Radix Select primitive with MMDS token-based styling. Size
5
+ * variants (default/sm/xs) are layered on via a `data-size` attribute.
6
+ */
7
+ import * as React from "react";
8
+ import { Select as SelectPrimitive, Popover as PopoverPrimitive } from "radix-ui";
9
+ declare function Select({ ...props }: React.ComponentProps<typeof SelectPrimitive.Root>): React.JSX.Element;
10
+ declare function SelectGroup({ className, ...props }: React.ComponentProps<typeof SelectPrimitive.Group>): React.JSX.Element;
11
+ declare function SelectValue({ inlineLabel, children, ...props }: React.ComponentProps<typeof SelectPrimitive.Value> & {
12
+ /**
13
+ * Prefixes the value with "{inlineLabel}: " once `children` is given — e.g.
14
+ * inlineLabel="Assignee" + children="James" renders "Assignee: James".
15
+ * Only takes effect together with an explicit `children`: Select.Value
16
+ * otherwise auto-fills from the selected Item's own text, which this
17
+ * prefix can't attach to without replacing that auto-fill (Radix disables
18
+ * it the moment `children` is passed at all, regardless of value) — so
19
+ * pass the current value's own display text as `children` yourself, and
20
+ * leave both unset (not `children={undefined}`, which still counts as
21
+ * "no children" for that auto-fill) when nothing is selected.
22
+ */
23
+ inlineLabel?: string;
24
+ }): React.JSX.Element;
25
+ declare function SelectTrigger({ className, size, children, ...props }: React.ComponentProps<typeof SelectPrimitive.Trigger> & {
26
+ size?: "sm" | "default" | "xs";
27
+ }): React.JSX.Element;
28
+ declare function SelectContent({ className, children, position, align, ...props }: React.ComponentProps<typeof SelectPrimitive.Content>): React.JSX.Element;
29
+ declare function SelectLabel({ className, ...props }: React.ComponentProps<typeof SelectPrimitive.Label>): React.JSX.Element;
30
+ declare function SelectItem({ className, children, ...props }: React.ComponentProps<typeof SelectPrimitive.Item>): React.JSX.Element;
31
+ declare function SelectSeparator({ className, ...props }: React.ComponentProps<typeof SelectPrimitive.Separator>): React.JSX.Element;
32
+ declare function SelectScrollUpButton({ className, ...props }: React.ComponentProps<typeof SelectPrimitive.ScrollUpButton>): React.JSX.Element;
33
+ declare function SelectScrollDownButton({ className, ...props }: React.ComponentProps<typeof SelectPrimitive.ScrollDownButton>): React.JSX.Element;
34
+ declare function SelectMultiple({ value, onValueChange, size, children, open: openProp, onOpenChange, closeOnSelect, ...props }: React.ComponentProps<typeof PopoverPrimitive.Root> & {
35
+ value: string[];
36
+ onValueChange: (value: string[]) => void;
37
+ size?: "sm" | "default" | "xs";
38
+ /** Closes the popover immediately after any pick, instead of staying open for more — for a single-effective-choice usage (cap `value` at one entry yourself) that still wants Popover's non-modal behavior (label stays visible, rest of the page stays interactive/scrollable) instead of Select's modal one. Default `false` — a real multi-select should stay open across picks, which is the whole reason this component exists over Select. */
39
+ closeOnSelect?: boolean;
40
+ }): React.JSX.Element;
41
+ declare function SelectMultipleTrigger({ className, placeholder, disabled, maxLabelChars, inlineLabel, ...props }: Omit<React.ComponentProps<typeof PopoverPrimitive.Trigger>, "children"> & {
42
+ placeholder?: React.ReactNode;
43
+ /** Character cap on the one label the trigger ever shows (only the first selected value — every additional selection folds into a trailing "+N", never listed by name). Applies even with a single value selected, since a lone long value can blow out the trigger just as badly as a long list would. Unset (default): that first label in full, however long. */
44
+ maxLabelChars?: number;
45
+ /** Prefixes the value with "{inlineLabel}: " once something's selected — e.g. inlineLabel="Assignee" + one pick renders "Assignee: James" instead of just "James". `placeholder` still shows alone (no prefix) while nothing is. */
46
+ inlineLabel?: string;
47
+ }): React.JSX.Element;
48
+ declare function SelectMultipleContent({ className, align, sideOffset, children, style, ...props }: React.ComponentProps<typeof PopoverPrimitive.Content>): React.JSX.Element;
49
+ /**
50
+ * Optional Cancel/Apply footer for `SelectMultipleContent` — pass a
51
+ * controlled `open` to `SelectMultiple` itself (see its own comment) and
52
+ * feed it a local pending draft instead of the real `value`/`onValueChange`
53
+ * while open, so picks only land for real once Apply commits that draft;
54
+ * Cancel just closes, discarding it. Renders as a sibling of the listbox,
55
+ * never inside it — see `SelectMultipleContent`'s own comment for why.
56
+ */
57
+ declare function SelectMultipleFooter({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
58
+ declare function SelectMultipleGroup({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
59
+ declare function SelectMultipleLabel({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
60
+ declare function SelectMultipleItem({ className, children, value: itemValue, textValue, disabled, onClick, onKeyDown, ...props }: Omit<React.ComponentProps<"div">, "onSelect"> & {
61
+ value: string;
62
+ textValue?: string;
63
+ disabled?: boolean;
64
+ }): React.JSX.Element;
65
+ declare function SelectMultipleSeparator({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
66
+ export { Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, SelectMultiple, SelectMultipleContent, SelectMultipleFooter, SelectMultipleGroup, SelectMultipleItem, SelectMultipleLabel, SelectMultipleSeparator, SelectMultipleTrigger, };
67
+ /**
68
+ * WHEN TO USE
69
+ * - Picking one value from a short, known, bounded list (settings, filters, form fields).
70
+ * - Options need grouping (SelectGroup + SelectLabel) or per-item disabling.
71
+ *
72
+ * NOT WHEN
73
+ * - The list is long enough to need type-to-filter — use Combobox instead.
74
+ * - Multiple values from a list that also needs search/filter — use Combobox's multi-select mode.
75
+ * - Native OS picker behavior (better on mobile, zero extra JS) is preferable — use NativeSelect instead.
76
+ *
77
+ * KEY RULES
78
+ * - SelectTrigger's `size` is "default" | "sm" | "xs" (default "default"); controls trigger
79
+ * height (h-8/h-7/h-6) and text size — same default/sm/xs vocabulary as Button/Item/
80
+ * Attachment/Tabs, not Select-specific naming.
81
+ * - SelectContent portals its content; `position="item-aligned"` (default) aligns to the trigger like a native select, `position="popper"` behaves like a standard popover.
82
+ * - Every SelectItem needs a `value`; the check indicator renders automatically for the selected item.
83
+ * - Put SelectSeparator between SelectGroups, not inside one.
84
+ * - SelectValue with no `children` auto-fills from the selected Item's own text — that's the
85
+ * normal, no-`inlineLabel` usage below. For "Label: Value" (e.g. "Assignee: James"), give
86
+ * SelectValue both `inlineLabel` and the current value's display text as `children` yourself —
87
+ * the auto-fill only runs with zero children, so a label prefix can't attach to it in place.
88
+ * - An AI-filled value is a plain composition, not a dedicated prop, and the same shape as
89
+ * Input's and Textarea's: put `AILabel` in the label row as a sibling of FieldLabel — never
90
+ * beside or inside SelectTrigger, which is itself a `<button>` (a button inside a button is
91
+ * invalid HTML, and would also open the listbox on every click of the marker) — while the
92
+ * value still matches what AI picked. Pass AILabel `edited={value !== aiValue}` and an
93
+ * `onRevert` that restores it, so picking a different value turns the marker into a ghost undo
94
+ * button (AILabel's own override/undo morph, same as Input/Textarea/Checkbox/RadioGroup). See
95
+ * Forms/Select.
96
+ *
97
+ * USAGE
98
+ * <Select>
99
+ * <SelectTrigger className="w-56">
100
+ * <SelectValue placeholder="Select a spice" />
101
+ * </SelectTrigger>
102
+ * <SelectContent>
103
+ * <SelectItem value="turmeric">Turmeric</SelectItem>
104
+ * <SelectItem value="cardamom">Cardamom</SelectItem>
105
+ * </SelectContent>
106
+ * </Select>
107
+ *
108
+ * // Inline-labeled trigger — "Spice: Turmeric" once a value is picked, plain
109
+ * // placeholder ("Select a spice") while nothing is
110
+ * <Select value={value} onValueChange={setValue}>
111
+ * <SelectTrigger className="w-56">
112
+ * <SelectValue placeholder="Select a spice" inlineLabel="Spice">
113
+ * {value || undefined}
114
+ * </SelectValue>
115
+ * </SelectTrigger>
116
+ * <SelectContent>
117
+ * <SelectItem value="turmeric">Turmeric</SelectItem>
118
+ * <SelectItem value="cardamom">Cardamom</SelectItem>
119
+ * </SelectContent>
120
+ * </Select>
121
+ *
122
+ * // Grouped, with a disabled item
123
+ * <Select defaultValue="cumin">
124
+ * <SelectTrigger className="w-56"><SelectValue placeholder="Select a spice" /></SelectTrigger>
125
+ * <SelectContent>
126
+ * <SelectGroup>
127
+ * <SelectLabel>Whole</SelectLabel>
128
+ * <SelectItem value="cardamom">Cardamom pod</SelectItem>
129
+ * </SelectGroup>
130
+ * <SelectSeparator />
131
+ * <SelectGroup>
132
+ * <SelectLabel>Ground</SelectLabel>
133
+ * <SelectItem value="turmeric">Turmeric</SelectItem>
134
+ * <SelectItem value="saffron" disabled>Saffron (out of stock)</SelectItem>
135
+ * </SelectGroup>
136
+ * </SelectContent>
137
+ * </Select>
138
+ *
139
+ * ---
140
+ *
141
+ * SelectMultiple — checkbox-list multi-select, no search/filter (see the
142
+ * doc block above SelectMultiple's definition for why this is a separate
143
+ * component tree rather than a `multiple` prop on Select).
144
+ *
145
+ * WHEN TO USE (SelectMultiple)
146
+ * - Picking several values from a short, known, bounded list where a search box
147
+ * would be overkill — settings toggles, tag pickers, filter panels.
148
+ *
149
+ * NOT WHEN (SelectMultiple)
150
+ * - The list is long enough to need type-to-filter — use Combobox's `multiple` mode instead.
151
+ *
152
+ * KEY RULES (SelectMultiple)
153
+ * - `value`/`onValueChange` are required and always an array — there is no uncontrolled mode.
154
+ * - `size` ("default" | "sm" | "xs", default "default") is set ONCE on SelectMultiple itself,
155
+ * not on Trigger or Content — it flows to both via context (Content is portaled, so it's
156
+ * never a CSS descendant of Trigger; a `group-data-[size]` selector couldn't reach it, which
157
+ * is why this is context-driven instead of the group/data-attribute trick Select/Tabs use).
158
+ * Trigger height/text and Content/Item padding/text/gap all scale together from this one prop.
159
+ * - The trigger shows only the first selected item's label (auto-collected from mounted
160
+ * SelectMultipleItems; pass `textValue` on an item if its children aren't plain text — e.g.
161
+ * an item with a leading icon or a secondary description line) plus "+N" once more than one
162
+ * is selected — never every label listed by name. Falls back to `placeholder` when empty,
163
+ * plus a clear-all "x" once non-empty. Pass `maxLabelChars` on SelectMultipleTrigger to
164
+ * ellipsis-truncate that one label past a character cap — applies even with a single value
165
+ * selected, since one long label can blow out a `w-fit` trigger same as a long list would
166
+ * (e.g. a narrow toolbar filter trigger). Pass
167
+ * `inlineLabel` to prefix the non-empty value with "{inlineLabel}: " (e.g. "Assignee: James") —
168
+ * `placeholder` alone still covers the empty state, no prefix there.
169
+ * - Clicking a SelectMultipleItem toggles it and leaves the popover open — this is the whole
170
+ * point of the variant; it never auto-closes on select the way Select/Combobox do. Pass
171
+ * `closeOnSelect` on SelectMultiple to close after any pick instead — for a single-effective-
172
+ * choice usage (cap `value` at one entry yourself) that still wants this component's non-modal
173
+ * Popover behavior (label stays visible while open, rest of the page stays interactive/
174
+ * scrollable) instead of Select's modal one. Don't reach for this as a general Select
175
+ * replacement — Select's native form participation, typeahead, and modality are worth keeping
176
+ * for ordinary form fields; this is for the specific case where a filter/action control needs
177
+ * to coexist non-modally with other controls the user is actively using (see DataTable's
178
+ * `singleSelect` inline filter for a real example). Also swaps every SelectMultipleItem's
179
+ * decorative indicator from a checkbox square to a radio dot — a checkbox otherwise visually
180
+ * promises "pick as many as you want", which is exactly wrong once picking one closes it.
181
+ * - SelectMultipleGroup/SelectMultipleLabel/SelectMultipleSeparator mirror Select's grouping API.
182
+ * - SelectMultiple forwards Radix Popover.Root's own props (`open`/`onOpenChange`/`defaultOpen`
183
+ * etc.) — useful for the Apply/Cancel pattern below, where something other than a plain click
184
+ * needs to control when the popover closes.
185
+ * - SelectMultipleContent/Portal use `forceMount` and hide via `data-[state=closed]:hidden` (a plain
186
+ * `display:none`) instead of letting Radix unmount on close — items must stay mounted while
187
+ * closed so their labels are already registered for the trigger's very first render, before
188
+ * the popover has ever been opened. `hidden` (not `invisible`) matters here specifically:
189
+ * `visibility:hidden` on the inner Content still lets Radix's outer popper-position wrapper
190
+ * div keep its layout box, which then silently intercepts clicks meant for elements behind
191
+ * it; `display:none` collapses that wrapper to nothing.
192
+ *
193
+ * USAGE
194
+ * const [value, setValue] = React.useState<string[]>(["cardamom"])
195
+ * <SelectMultiple value={value} onValueChange={setValue}>
196
+ * <SelectMultipleTrigger className="w-56" placeholder="Select spices" />
197
+ * <SelectMultipleContent>
198
+ * <SelectMultipleItem value="turmeric">Turmeric</SelectMultipleItem>
199
+ * <SelectMultipleItem value="cardamom">Cardamom</SelectMultipleItem>
200
+ * <SelectMultipleItem value="chili">Chili</SelectMultipleItem>
201
+ * </SelectMultipleContent>
202
+ * </SelectMultiple>
203
+ *
204
+ * // Dense popover — one prop scales trigger height AND item padding/text together
205
+ * <SelectMultiple value={value} onValueChange={setValue} size="xs">
206
+ * <SelectMultipleTrigger className="w-48" placeholder="Select spices" />
207
+ * <SelectMultipleContent>...</SelectMultipleContent>
208
+ * </SelectMultiple>
209
+ *
210
+ * // With an icon or a secondary description line — SelectMultipleItem's children is any
211
+ * // ReactNode; pass `textValue` so the trigger's comma-list still shows plain text
212
+ * <SelectMultipleItem value="cardamom" textValue="Cardamom">
213
+ * <LeafIcon />
214
+ * <span className="flex flex-col">
215
+ * Cardamom
216
+ * <span className="text-xs text-muted-foreground">Whole pods</span>
217
+ * </span>
218
+ * </SelectMultipleItem>
219
+ *
220
+ * // With search — filter by hiding non-matches, NOT by unmounting them: an unmounted
221
+ * // SelectMultipleItem unregisters its label, so a selected-but-filtered-out item would
222
+ * // fall back to showing its raw value in the trigger instead of its real label.
223
+ * const [query, setQuery] = React.useState("")
224
+ * <SelectMultipleContent>
225
+ * <Input value={query} onChange={(e) => setQuery(e.target.value)} placeholder="Search..." className="mb-1" />
226
+ * {spices.map((spice) => (
227
+ * <SelectMultipleItem
228
+ * key={spice}
229
+ * value={spice}
230
+ * className={cn(!spice.toLowerCase().includes(query.toLowerCase()) && "hidden")}
231
+ * >
232
+ * {spice}
233
+ * </SelectMultipleItem>
234
+ * ))}
235
+ * </SelectMultipleContent>
236
+ *
237
+ * // "Add option" (creatable) — the consumer already owns the list of items being mapped
238
+ * // over, so a no-results affordance is just appending to that list, same as any
239
+ * // Combobox-style creatable pattern; SelectMultiple needs no API for this.
240
+ * {query && !spices.some((s) => s.toLowerCase() === query.toLowerCase()) && (
241
+ * <button onClick={() => { setSpices((prev) => [...prev, query]); setValue((prev) => [...prev, query]) }}>
242
+ * Add "{query}"
243
+ * </button>
244
+ * )}
245
+ *
246
+ * // With a footer (Cancel | Apply) — stage picks in a local draft, only commit on Apply;
247
+ * // Cancel just closes without touching the real value. Uses the forwarded `open` prop.
248
+ * const [open, setOpen] = React.useState(false)
249
+ * const [applied, setApplied] = React.useState<string[]>([])
250
+ * const [draft, setDraft] = React.useState<string[]>(applied)
251
+ * <SelectMultiple
252
+ * value={draft}
253
+ * onValueChange={setDraft}
254
+ * open={open}
255
+ * onOpenChange={(next) => { if (next) setDraft(applied); setOpen(next) }}
256
+ * >
257
+ * <SelectMultipleTrigger className="w-56" placeholder="Select spices" />
258
+ * <SelectMultipleContent>
259
+ * {spices.map((spice) => <SelectMultipleItem key={spice} value={spice}>{spice}</SelectMultipleItem>)}
260
+ * <SelectMultipleSeparator />
261
+ * <div className="flex justify-end gap-1 p-1">
262
+ * <Button size="sm" variant="ghost" onClick={() => { setDraft(applied); setOpen(false) }}>Cancel</Button>
263
+ * <Button size="sm" onClick={() => { setApplied(draft); setOpen(false) }}>Apply</Button>
264
+ * </div>
265
+ * </SelectMultipleContent>
266
+ * </SelectMultiple>
267
+ *
268
+ * // "Select all" — a plain composition using the same Checkbox, no dedicated API:
269
+ * <Checkbox
270
+ * checked={value.length === 0 ? false : value.length === allValues.length ? true : "indeterminate"}
271
+ * onCheckedChange={(c) => setValue(c ? allValues : [])}
272
+ * />
273
+ */
274
+ //# sourceMappingURL=select.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"select.d.ts","sourceRoot":"","sources":["../../../src/components/ui/select.tsx"],"names":[],"mappings":"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"}