@fragments-sdk/ui 0.13.0 → 0.14.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 (656) hide show
  1. package/dist/assets/ui.css +1642 -1679
  2. package/dist/chart.cjs.map +1 -1
  3. package/dist/chart.js.map +1 -1
  4. package/dist/codeblock.cjs +26 -18
  5. package/dist/codeblock.cjs.map +1 -1
  6. package/dist/codeblock.js +26 -18
  7. package/dist/codeblock.js.map +1 -1
  8. package/dist/components/Accordion/Accordion.module.scss.cjs +8 -8
  9. package/dist/components/Accordion/Accordion.module.scss.js +8 -8
  10. package/dist/components/Accordion/index.cjs +7 -3
  11. package/dist/components/Accordion/index.cjs.map +1 -1
  12. package/dist/components/Accordion/index.d.ts +24 -11
  13. package/dist/components/Accordion/index.d.ts.map +1 -1
  14. package/dist/components/Accordion/index.js +7 -3
  15. package/dist/components/Accordion/index.js.map +1 -1
  16. package/dist/components/Alert/Alert.module.scss.cjs +12 -12
  17. package/dist/components/Alert/Alert.module.scss.js +12 -12
  18. package/dist/components/Alert/index.cjs +37 -15
  19. package/dist/components/Alert/index.cjs.map +1 -1
  20. package/dist/components/Alert/index.d.ts +15 -22
  21. package/dist/components/Alert/index.d.ts.map +1 -1
  22. package/dist/components/Alert/index.js +37 -15
  23. package/dist/components/Alert/index.js.map +1 -1
  24. package/dist/components/AppShell/AppShell.module.scss.cjs +14 -14
  25. package/dist/components/AppShell/AppShell.module.scss.js +14 -14
  26. package/dist/components/AppShell/index.cjs +3 -1
  27. package/dist/components/AppShell/index.cjs.map +1 -1
  28. package/dist/components/AppShell/index.d.ts.map +1 -1
  29. package/dist/components/AppShell/index.js +3 -1
  30. package/dist/components/AppShell/index.js.map +1 -1
  31. package/dist/components/Avatar/index.cjs +9 -1
  32. package/dist/components/Avatar/index.cjs.map +1 -1
  33. package/dist/components/Avatar/index.d.ts +2 -0
  34. package/dist/components/Avatar/index.d.ts.map +1 -1
  35. package/dist/components/Avatar/index.js +9 -1
  36. package/dist/components/Avatar/index.js.map +1 -1
  37. package/dist/components/Badge/index.cjs +4 -2
  38. package/dist/components/Badge/index.cjs.map +1 -1
  39. package/dist/components/Badge/index.d.ts +3 -0
  40. package/dist/components/Badge/index.d.ts.map +1 -1
  41. package/dist/components/Badge/index.js +4 -2
  42. package/dist/components/Badge/index.js.map +1 -1
  43. package/dist/components/BentoGrid/BentoGrid.module.scss.cjs +11 -11
  44. package/dist/components/BentoGrid/BentoGrid.module.scss.js +11 -11
  45. package/dist/components/BentoGrid/index.cjs +8 -5
  46. package/dist/components/BentoGrid/index.cjs.map +1 -1
  47. package/dist/components/BentoGrid/index.d.ts +2 -8
  48. package/dist/components/BentoGrid/index.d.ts.map +1 -1
  49. package/dist/components/BentoGrid/index.js +8 -5
  50. package/dist/components/BentoGrid/index.js.map +1 -1
  51. package/dist/components/Box/index.cjs +12 -2
  52. package/dist/components/Box/index.cjs.map +1 -1
  53. package/dist/components/Box/index.d.ts +1 -1
  54. package/dist/components/Box/index.d.ts.map +1 -1
  55. package/dist/components/Box/index.js +12 -2
  56. package/dist/components/Box/index.js.map +1 -1
  57. package/dist/components/Breadcrumbs/index.cjs +3 -1
  58. package/dist/components/Breadcrumbs/index.cjs.map +1 -1
  59. package/dist/components/Breadcrumbs/index.d.ts +3 -1
  60. package/dist/components/Breadcrumbs/index.d.ts.map +1 -1
  61. package/dist/components/Breadcrumbs/index.js +3 -1
  62. package/dist/components/Breadcrumbs/index.js.map +1 -1
  63. package/dist/components/Button/Button.module.scss.cjs +11 -11
  64. package/dist/components/Button/Button.module.scss.js +11 -11
  65. package/dist/components/Button/index.cjs +5 -2
  66. package/dist/components/Button/index.cjs.map +1 -1
  67. package/dist/components/Button/index.d.ts +3 -3
  68. package/dist/components/Button/index.d.ts.map +1 -1
  69. package/dist/components/Button/index.js +5 -2
  70. package/dist/components/Button/index.js.map +1 -1
  71. package/dist/components/ButtonGroup/index.cjs +3 -2
  72. package/dist/components/ButtonGroup/index.cjs.map +1 -1
  73. package/dist/components/ButtonGroup/index.d.ts +1 -2
  74. package/dist/components/ButtonGroup/index.d.ts.map +1 -1
  75. package/dist/components/ButtonGroup/index.js +3 -2
  76. package/dist/components/ButtonGroup/index.js.map +1 -1
  77. package/dist/components/Card/Card.module.scss.cjs +14 -14
  78. package/dist/components/Card/Card.module.scss.js +14 -14
  79. package/dist/components/Card/index.cjs +3 -22
  80. package/dist/components/Card/index.cjs.map +1 -1
  81. package/dist/components/Card/index.d.ts +6 -11
  82. package/dist/components/Card/index.d.ts.map +1 -1
  83. package/dist/components/Card/index.js +3 -22
  84. package/dist/components/Card/index.js.map +1 -1
  85. package/dist/components/Chart/Chart.module.scss.cjs +15 -15
  86. package/dist/components/Chart/Chart.module.scss.js +15 -15
  87. package/dist/components/Chart/index.d.ts +3 -3
  88. package/dist/components/Chart/index.d.ts.map +1 -1
  89. package/dist/components/Checkbox/Checkbox.module.scss.cjs +10 -10
  90. package/dist/components/Checkbox/Checkbox.module.scss.js +10 -10
  91. package/dist/components/Checkbox/index.cjs +11 -4
  92. package/dist/components/Checkbox/index.cjs.map +1 -1
  93. package/dist/components/Checkbox/index.d.ts +6 -0
  94. package/dist/components/Checkbox/index.d.ts.map +1 -1
  95. package/dist/components/Checkbox/index.js +11 -4
  96. package/dist/components/Checkbox/index.js.map +1 -1
  97. package/dist/components/Chip/index.cjs +11 -3
  98. package/dist/components/Chip/index.cjs.map +1 -1
  99. package/dist/components/Chip/index.d.ts +1 -2
  100. package/dist/components/Chip/index.d.ts.map +1 -1
  101. package/dist/components/Chip/index.js +11 -3
  102. package/dist/components/Chip/index.js.map +1 -1
  103. package/dist/components/CodeBlock/CodeBlock.module.scss.cjs +20 -20
  104. package/dist/components/CodeBlock/CodeBlock.module.scss.js +20 -20
  105. package/dist/components/CodeBlock/index.d.ts +8 -2
  106. package/dist/components/CodeBlock/index.d.ts.map +1 -1
  107. package/dist/components/Collapsible/Collapsible.module.scss.cjs +10 -10
  108. package/dist/components/Collapsible/Collapsible.module.scss.js +10 -10
  109. package/dist/components/Combobox/Combobox.module.scss.cjs +15 -15
  110. package/dist/components/Combobox/Combobox.module.scss.js +15 -15
  111. package/dist/components/Combobox/index.cjs +68 -18
  112. package/dist/components/Combobox/index.cjs.map +1 -1
  113. package/dist/components/Combobox/index.d.ts +32 -11
  114. package/dist/components/Combobox/index.d.ts.map +1 -1
  115. package/dist/components/Combobox/index.js +68 -18
  116. package/dist/components/Combobox/index.js.map +1 -1
  117. package/dist/components/Command/Command.module.scss.cjs +11 -11
  118. package/dist/components/Command/Command.module.scss.js +11 -11
  119. package/dist/components/Command/index.cjs +4 -4
  120. package/dist/components/Command/index.cjs.map +1 -1
  121. package/dist/components/Command/index.d.ts +1 -1
  122. package/dist/components/Command/index.d.ts.map +1 -1
  123. package/dist/components/Command/index.js +4 -4
  124. package/dist/components/Command/index.js.map +1 -1
  125. package/dist/components/ConversationList/ConversationList.module.scss.cjs +10 -10
  126. package/dist/components/ConversationList/ConversationList.module.scss.js +10 -10
  127. package/dist/components/ConversationList/index.cjs +6 -3
  128. package/dist/components/ConversationList/index.cjs.map +1 -1
  129. package/dist/components/ConversationList/index.d.ts +1 -1
  130. package/dist/components/ConversationList/index.d.ts.map +1 -1
  131. package/dist/components/ConversationList/index.js +6 -3
  132. package/dist/components/ConversationList/index.js.map +1 -1
  133. package/dist/components/DataTable/DataTable.module.scss.cjs +26 -26
  134. package/dist/components/DataTable/DataTable.module.scss.js +26 -26
  135. package/dist/components/DataTable/index.cjs +13 -4
  136. package/dist/components/DataTable/index.cjs.map +1 -1
  137. package/dist/components/DataTable/index.d.ts +7 -2
  138. package/dist/components/DataTable/index.d.ts.map +1 -1
  139. package/dist/components/DataTable/index.js +13 -4
  140. package/dist/components/DataTable/index.js.map +1 -1
  141. package/dist/components/DatePicker/DatePicker.module.scss.cjs +26 -26
  142. package/dist/components/DatePicker/DatePicker.module.scss.js +26 -26
  143. package/dist/components/DatePicker/index.d.ts +2 -2
  144. package/dist/components/DatePicker/index.d.ts.map +1 -1
  145. package/dist/components/Dialog/Dialog.module.scss.cjs +14 -14
  146. package/dist/components/Dialog/Dialog.module.scss.js +14 -14
  147. package/dist/components/Dialog/index.cjs +2 -1
  148. package/dist/components/Dialog/index.cjs.map +1 -1
  149. package/dist/components/Dialog/index.d.ts +20 -7
  150. package/dist/components/Dialog/index.d.ts.map +1 -1
  151. package/dist/components/Dialog/index.js +2 -1
  152. package/dist/components/Dialog/index.js.map +1 -1
  153. package/dist/components/Drawer/Drawer.module.scss.cjs +26 -26
  154. package/dist/components/Drawer/Drawer.module.scss.js +26 -26
  155. package/dist/components/Drawer/index.cjs +30 -3
  156. package/dist/components/Drawer/index.cjs.map +1 -1
  157. package/dist/components/Drawer/index.d.ts +3 -1
  158. package/dist/components/Drawer/index.d.ts.map +1 -1
  159. package/dist/components/Drawer/index.js +13 -3
  160. package/dist/components/Drawer/index.js.map +1 -1
  161. package/dist/components/Editor/Editor.module.scss.cjs +17 -17
  162. package/dist/components/Editor/Editor.module.scss.js +17 -17
  163. package/dist/components/Editor/index.cjs +32 -7
  164. package/dist/components/Editor/index.cjs.map +1 -1
  165. package/dist/components/Editor/index.d.ts +16 -3
  166. package/dist/components/Editor/index.d.ts.map +1 -1
  167. package/dist/components/Editor/index.js +32 -7
  168. package/dist/components/Editor/index.js.map +1 -1
  169. package/dist/components/EmptyState/EmptyState.module.scss.cjs +8 -8
  170. package/dist/components/EmptyState/EmptyState.module.scss.js +8 -8
  171. package/dist/components/EmptyState/index.cjs +12 -8
  172. package/dist/components/EmptyState/index.cjs.map +1 -1
  173. package/dist/components/EmptyState/index.d.ts +8 -12
  174. package/dist/components/EmptyState/index.d.ts.map +1 -1
  175. package/dist/components/EmptyState/index.js +12 -8
  176. package/dist/components/EmptyState/index.js.map +1 -1
  177. package/dist/components/Fieldset/index.cjs +2 -2
  178. package/dist/components/Fieldset/index.cjs.map +1 -1
  179. package/dist/components/Fieldset/index.d.ts +2 -3
  180. package/dist/components/Fieldset/index.d.ts.map +1 -1
  181. package/dist/components/Fieldset/index.js +2 -2
  182. package/dist/components/Fieldset/index.js.map +1 -1
  183. package/dist/components/Form/index.cjs +13 -13
  184. package/dist/components/Form/index.cjs.map +1 -1
  185. package/dist/components/Form/index.d.ts +5 -2
  186. package/dist/components/Form/index.d.ts.map +1 -1
  187. package/dist/components/Form/index.js +13 -13
  188. package/dist/components/Form/index.js.map +1 -1
  189. package/dist/components/Grid/Grid.module.scss.cjs +57 -57
  190. package/dist/components/Grid/Grid.module.scss.js +57 -57
  191. package/dist/components/Grid/index.cjs +7 -4
  192. package/dist/components/Grid/index.cjs.map +1 -1
  193. package/dist/components/Grid/index.d.ts +5 -3
  194. package/dist/components/Grid/index.d.ts.map +1 -1
  195. package/dist/components/Grid/index.js +7 -4
  196. package/dist/components/Grid/index.js.map +1 -1
  197. package/dist/components/Header/Header.module.scss.cjs +21 -21
  198. package/dist/components/Header/Header.module.scss.js +21 -21
  199. package/dist/components/Header/index.cjs +61 -23
  200. package/dist/components/Header/index.cjs.map +1 -1
  201. package/dist/components/Header/index.d.ts +27 -34
  202. package/dist/components/Header/index.d.ts.map +1 -1
  203. package/dist/components/Header/index.js +61 -23
  204. package/dist/components/Header/index.js.map +1 -1
  205. package/dist/components/Icon/index.cjs +11 -1
  206. package/dist/components/Icon/index.cjs.map +1 -1
  207. package/dist/components/Icon/index.d.ts +28 -9
  208. package/dist/components/Icon/index.d.ts.map +1 -1
  209. package/dist/components/Icon/index.js +11 -1
  210. package/dist/components/Icon/index.js.map +1 -1
  211. package/dist/components/Image/index.cjs +15 -4
  212. package/dist/components/Image/index.cjs.map +1 -1
  213. package/dist/components/Image/index.d.ts +7 -1
  214. package/dist/components/Image/index.d.ts.map +1 -1
  215. package/dist/components/Image/index.js +15 -4
  216. package/dist/components/Image/index.js.map +1 -1
  217. package/dist/components/Input/Input.module.scss.cjs +13 -13
  218. package/dist/components/Input/Input.module.scss.js +13 -13
  219. package/dist/components/Input/index.cjs +79 -31
  220. package/dist/components/Input/index.cjs.map +1 -1
  221. package/dist/components/Input/index.d.ts +17 -3
  222. package/dist/components/Input/index.d.ts.map +1 -1
  223. package/dist/components/Input/index.js +79 -31
  224. package/dist/components/Input/index.js.map +1 -1
  225. package/dist/components/Link/index.cjs +17 -0
  226. package/dist/components/Link/index.cjs.map +1 -1
  227. package/dist/components/Link/index.d.ts.map +1 -1
  228. package/dist/components/Link/index.js +17 -0
  229. package/dist/components/Link/index.js.map +1 -1
  230. package/dist/components/Listbox/Listbox.module.scss.cjs +8 -8
  231. package/dist/components/Listbox/Listbox.module.scss.js +8 -8
  232. package/dist/components/Listbox/index.cjs +10 -6
  233. package/dist/components/Listbox/index.cjs.map +1 -1
  234. package/dist/components/Listbox/index.d.ts +2 -2
  235. package/dist/components/Listbox/index.d.ts.map +1 -1
  236. package/dist/components/Listbox/index.js +10 -6
  237. package/dist/components/Listbox/index.js.map +1 -1
  238. package/dist/components/Markdown/Markdown.module.scss.cjs +1 -1
  239. package/dist/components/Markdown/Markdown.module.scss.js +1 -1
  240. package/dist/components/Markdown/index.d.ts +4 -2
  241. package/dist/components/Markdown/index.d.ts.map +1 -1
  242. package/dist/components/Menu/Menu.module.scss.cjs +13 -13
  243. package/dist/components/Menu/Menu.module.scss.js +13 -13
  244. package/dist/components/Menu/index.cjs +12 -1
  245. package/dist/components/Menu/index.cjs.map +1 -1
  246. package/dist/components/Menu/index.d.ts +9 -4
  247. package/dist/components/Menu/index.d.ts.map +1 -1
  248. package/dist/components/Menu/index.js +12 -1
  249. package/dist/components/Menu/index.js.map +1 -1
  250. package/dist/components/Message/Message.module.scss.cjs +18 -18
  251. package/dist/components/Message/Message.module.scss.js +18 -18
  252. package/dist/components/NavigationMenu/NavigationMenu.module.scss.cjs +28 -28
  253. package/dist/components/NavigationMenu/NavigationMenu.module.scss.js +28 -28
  254. package/dist/components/NavigationMenu/NavigationMenuContext.cjs.map +1 -1
  255. package/dist/components/NavigationMenu/NavigationMenuContext.d.ts +8 -0
  256. package/dist/components/NavigationMenu/NavigationMenuContext.d.ts.map +1 -1
  257. package/dist/components/NavigationMenu/NavigationMenuContext.js.map +1 -1
  258. package/dist/components/NavigationMenu/index.cjs +49 -10
  259. package/dist/components/NavigationMenu/index.cjs.map +1 -1
  260. package/dist/components/NavigationMenu/index.d.ts +5 -1
  261. package/dist/components/NavigationMenu/index.d.ts.map +1 -1
  262. package/dist/components/NavigationMenu/index.js +49 -10
  263. package/dist/components/NavigationMenu/index.js.map +1 -1
  264. package/dist/components/Pagination/index.cjs +37 -9
  265. package/dist/components/Pagination/index.cjs.map +1 -1
  266. package/dist/components/Pagination/index.d.ts +2 -3
  267. package/dist/components/Pagination/index.d.ts.map +1 -1
  268. package/dist/components/Pagination/index.js +37 -9
  269. package/dist/components/Pagination/index.js.map +1 -1
  270. package/dist/components/Popover/Popover.module.scss.cjs +10 -10
  271. package/dist/components/Popover/Popover.module.scss.js +10 -10
  272. package/dist/components/Popover/index.cjs +43 -2
  273. package/dist/components/Popover/index.cjs.map +1 -1
  274. package/dist/components/Popover/index.d.ts +16 -6
  275. package/dist/components/Popover/index.d.ts.map +1 -1
  276. package/dist/components/Popover/index.js +26 -2
  277. package/dist/components/Popover/index.js.map +1 -1
  278. package/dist/components/Progress/index.cjs +3 -1
  279. package/dist/components/Progress/index.cjs.map +1 -1
  280. package/dist/components/Progress/index.d.ts.map +1 -1
  281. package/dist/components/Progress/index.js +3 -1
  282. package/dist/components/Progress/index.js.map +1 -1
  283. package/dist/components/Prompt/Prompt.module.scss.cjs +14 -14
  284. package/dist/components/Prompt/Prompt.module.scss.js +14 -14
  285. package/dist/components/Prompt/index.cjs +14 -2
  286. package/dist/components/Prompt/index.cjs.map +1 -1
  287. package/dist/components/Prompt/index.d.ts +8 -5
  288. package/dist/components/Prompt/index.d.ts.map +1 -1
  289. package/dist/components/Prompt/index.js +14 -2
  290. package/dist/components/Prompt/index.js.map +1 -1
  291. package/dist/components/RadioGroup/index.cjs +14 -6
  292. package/dist/components/RadioGroup/index.cjs.map +1 -1
  293. package/dist/components/RadioGroup/index.d.ts +12 -2
  294. package/dist/components/RadioGroup/index.d.ts.map +1 -1
  295. package/dist/components/RadioGroup/index.js +14 -6
  296. package/dist/components/RadioGroup/index.js.map +1 -1
  297. package/dist/components/Select/Select.module.scss.cjs +10 -10
  298. package/dist/components/Select/Select.module.scss.js +10 -10
  299. package/dist/components/Select/index.cjs +37 -24
  300. package/dist/components/Select/index.cjs.map +1 -1
  301. package/dist/components/Select/index.d.ts +6 -2
  302. package/dist/components/Select/index.d.ts.map +1 -1
  303. package/dist/components/Select/index.js +37 -24
  304. package/dist/components/Select/index.js.map +1 -1
  305. package/dist/components/Sidebar/Sidebar.module.scss.cjs +42 -42
  306. package/dist/components/Sidebar/Sidebar.module.scss.js +42 -42
  307. package/dist/components/Sidebar/index.cjs +2 -2
  308. package/dist/components/Sidebar/index.cjs.map +1 -1
  309. package/dist/components/Sidebar/index.d.ts +3 -3
  310. package/dist/components/Sidebar/index.d.ts.map +1 -1
  311. package/dist/components/Sidebar/index.js +2 -2
  312. package/dist/components/Sidebar/index.js.map +1 -1
  313. package/dist/components/Skeleton/index.cjs +6 -3
  314. package/dist/components/Skeleton/index.cjs.map +1 -1
  315. package/dist/components/Skeleton/index.d.ts +3 -7
  316. package/dist/components/Skeleton/index.d.ts.map +1 -1
  317. package/dist/components/Skeleton/index.js +6 -3
  318. package/dist/components/Skeleton/index.js.map +1 -1
  319. package/dist/components/Slider/Slider.module.scss.cjs +13 -10
  320. package/dist/components/Slider/Slider.module.scss.cjs.map +1 -1
  321. package/dist/components/Slider/Slider.module.scss.js +13 -10
  322. package/dist/components/Slider/Slider.module.scss.js.map +1 -1
  323. package/dist/components/Slider/index.cjs +33 -1
  324. package/dist/components/Slider/index.cjs.map +1 -1
  325. package/dist/components/Slider/index.d.ts +2 -0
  326. package/dist/components/Slider/index.d.ts.map +1 -1
  327. package/dist/components/Slider/index.js +33 -1
  328. package/dist/components/Slider/index.js.map +1 -1
  329. package/dist/components/Stack/index.cjs +12 -2
  330. package/dist/components/Stack/index.cjs.map +1 -1
  331. package/dist/components/Stack/index.d.ts +3 -2
  332. package/dist/components/Stack/index.d.ts.map +1 -1
  333. package/dist/components/Stack/index.js +12 -2
  334. package/dist/components/Stack/index.js.map +1 -1
  335. package/dist/components/Table/Table.module.scss.cjs +16 -16
  336. package/dist/components/Table/Table.module.scss.js +16 -16
  337. package/dist/components/Table/index.d.ts +10 -4
  338. package/dist/components/Table/index.d.ts.map +1 -1
  339. package/dist/components/TableOfContents/index.cjs +8 -5
  340. package/dist/components/TableOfContents/index.cjs.map +1 -1
  341. package/dist/components/TableOfContents/index.d.ts +2 -2
  342. package/dist/components/TableOfContents/index.d.ts.map +1 -1
  343. package/dist/components/TableOfContents/index.js +8 -5
  344. package/dist/components/TableOfContents/index.js.map +1 -1
  345. package/dist/components/Tabs/Tabs.module.scss.cjs +9 -9
  346. package/dist/components/Tabs/Tabs.module.scss.js +9 -9
  347. package/dist/components/Tabs/index.cjs +9 -6
  348. package/dist/components/Tabs/index.cjs.map +1 -1
  349. package/dist/components/Tabs/index.d.ts +4 -1
  350. package/dist/components/Tabs/index.d.ts.map +1 -1
  351. package/dist/components/Tabs/index.js +9 -6
  352. package/dist/components/Tabs/index.js.map +1 -1
  353. package/dist/components/Textarea/index.cjs +61 -43
  354. package/dist/components/Textarea/index.cjs.map +1 -1
  355. package/dist/components/Textarea/index.d.ts +9 -1
  356. package/dist/components/Textarea/index.d.ts.map +1 -1
  357. package/dist/components/Textarea/index.js +61 -43
  358. package/dist/components/Textarea/index.js.map +1 -1
  359. package/dist/components/Theme/index.cjs +3 -1
  360. package/dist/components/Theme/index.cjs.map +1 -1
  361. package/dist/components/Theme/index.d.ts +2 -4
  362. package/dist/components/Theme/index.d.ts.map +1 -1
  363. package/dist/components/Theme/index.js +3 -1
  364. package/dist/components/Theme/index.js.map +1 -1
  365. package/dist/components/ThinkingIndicator/ThinkingIndicator.module.scss.cjs +22 -22
  366. package/dist/components/ThinkingIndicator/ThinkingIndicator.module.scss.js +22 -22
  367. package/dist/components/Toast/Toast.module.scss.cjs +20 -20
  368. package/dist/components/Toast/Toast.module.scss.js +20 -20
  369. package/dist/components/Toast/index.cjs +15 -14
  370. package/dist/components/Toast/index.cjs.map +1 -1
  371. package/dist/components/Toast/index.d.ts +9 -5
  372. package/dist/components/Toast/index.d.ts.map +1 -1
  373. package/dist/components/Toast/index.js +15 -14
  374. package/dist/components/Toast/index.js.map +1 -1
  375. package/dist/components/Toggle/Toggle.module.scss.cjs +11 -11
  376. package/dist/components/Toggle/Toggle.module.scss.js +11 -11
  377. package/dist/components/Toggle/index.cjs +1 -1
  378. package/dist/components/Toggle/index.cjs.map +1 -1
  379. package/dist/components/Toggle/index.js +1 -1
  380. package/dist/components/Toggle/index.js.map +1 -1
  381. package/dist/components/ToggleGroup/ToggleGroup.module.scss.cjs +17 -17
  382. package/dist/components/ToggleGroup/ToggleGroup.module.scss.js +17 -17
  383. package/dist/components/ToggleGroup/index.cjs +27 -8
  384. package/dist/components/ToggleGroup/index.cjs.map +1 -1
  385. package/dist/components/ToggleGroup/index.d.ts +8 -3
  386. package/dist/components/ToggleGroup/index.d.ts.map +1 -1
  387. package/dist/components/ToggleGroup/index.js +27 -8
  388. package/dist/components/ToggleGroup/index.js.map +1 -1
  389. package/dist/components/Tooltip/Tooltip.module.scss.cjs +3 -3
  390. package/dist/components/Tooltip/Tooltip.module.scss.js +3 -3
  391. package/dist/components/Tooltip/index.cjs +20 -4
  392. package/dist/components/Tooltip/index.cjs.map +1 -1
  393. package/dist/components/Tooltip/index.d.ts +3 -1
  394. package/dist/components/Tooltip/index.d.ts.map +1 -1
  395. package/dist/components/Tooltip/index.js +20 -4
  396. package/dist/components/Tooltip/index.js.map +1 -1
  397. package/dist/components/VisuallyHidden/index.cjs +10 -2
  398. package/dist/components/VisuallyHidden/index.cjs.map +1 -1
  399. package/dist/components/VisuallyHidden/index.d.ts +1 -1
  400. package/dist/components/VisuallyHidden/index.d.ts.map +1 -1
  401. package/dist/components/VisuallyHidden/index.js +10 -2
  402. package/dist/components/VisuallyHidden/index.js.map +1 -1
  403. package/dist/datepicker.cjs +8 -1
  404. package/dist/datepicker.cjs.map +1 -1
  405. package/dist/datepicker.js +8 -1
  406. package/dist/datepicker.js.map +1 -1
  407. package/dist/index.cjs.map +1 -1
  408. package/dist/index.d.ts +2 -1
  409. package/dist/index.d.ts.map +1 -1
  410. package/dist/index.js.map +1 -1
  411. package/dist/markdown.cjs +5 -5
  412. package/dist/markdown.cjs.map +1 -1
  413. package/dist/markdown.js +5 -5
  414. package/dist/markdown.js.map +1 -1
  415. package/dist/table.cjs +19 -3
  416. package/dist/table.cjs.map +1 -1
  417. package/dist/table.js +19 -3
  418. package/dist/table.js.map +1 -1
  419. package/fragments.json +1 -1
  420. package/package.json +2 -2
  421. package/src/blocks/AccountSettings.block.ts +1 -1
  422. package/src/blocks/ActivityFeed.block.ts +1 -1
  423. package/src/blocks/ActivityFeedSkeleton.block.ts +1 -1
  424. package/src/blocks/BlogEditor.block.ts +1 -1
  425. package/src/blocks/ChatInterface.block.ts +1 -1
  426. package/src/blocks/ChatMessages.block.ts +1 -1
  427. package/src/blocks/CheckoutForm.block.ts +1 -1
  428. package/src/blocks/CommandPalette.block.ts +1 -1
  429. package/src/blocks/ContactForm.block.ts +1 -1
  430. package/src/blocks/DashboardLayout.block.ts +1 -1
  431. package/src/blocks/DashboardPage.block.ts +1 -1
  432. package/src/blocks/DashboardSkeleton.block.ts +1 -1
  433. package/src/blocks/DataTable.block.ts +1 -1
  434. package/src/blocks/EmptyState.block.ts +1 -1
  435. package/src/blocks/FAQSection.block.ts +1 -1
  436. package/src/blocks/FeatureGrid.block.ts +1 -1
  437. package/src/blocks/HeroSection.block.ts +1 -1
  438. package/src/blocks/LoginForm.block.ts +1 -1
  439. package/src/blocks/NavigationHeader.block.ts +1 -1
  440. package/src/blocks/PaginatedTable.block.ts +1 -1
  441. package/src/blocks/PricingComparison.block.ts +1 -1
  442. package/src/blocks/ProductCard.block.ts +1 -1
  443. package/src/blocks/RegistrationForm.block.ts +1 -1
  444. package/src/blocks/SettingsDrawer.block.ts +1 -1
  445. package/src/blocks/SettingsPanel.block.ts +1 -1
  446. package/src/blocks/ShoppingCart.block.ts +1 -1
  447. package/src/blocks/StatsCard.block.ts +1 -1
  448. package/src/blocks/StatsCardSkeleton.block.ts +1 -1
  449. package/src/blocks/TableSkeleton.block.ts +1 -1
  450. package/src/blocks/ThinkingStates.block.ts +1 -1
  451. package/src/components/Accordion/Accordion.fragment.tsx +7 -7
  452. package/src/components/Accordion/Accordion.module.scss +2 -2
  453. package/src/components/Accordion/Accordion.test.tsx +8 -5
  454. package/src/components/Accordion/index.tsx +33 -13
  455. package/src/components/Alert/Alert.fragment.tsx +5 -1
  456. package/src/components/Alert/Alert.module.scss +1 -1
  457. package/src/components/Alert/Alert.test.tsx +25 -0
  458. package/src/components/Alert/index.tsx +49 -30
  459. package/src/components/AppShell/AppShell.fragment.tsx +1 -1
  460. package/src/components/AppShell/AppShell.module.scss +5 -5
  461. package/src/components/AppShell/AppShell.test.tsx +12 -0
  462. package/src/components/AppShell/index.tsx +2 -0
  463. package/src/components/Avatar/Avatar.fragment.tsx +7 -1
  464. package/src/components/Avatar/Avatar.test.tsx +24 -2
  465. package/src/components/Avatar/index.tsx +13 -1
  466. package/src/components/Badge/Badge.fragment.tsx +16 -1
  467. package/src/components/Badge/Badge.test.tsx +8 -1
  468. package/src/components/Badge/index.tsx +7 -2
  469. package/src/components/BentoGrid/BentoGrid.fragment.tsx +3 -1
  470. package/src/components/BentoGrid/BentoGrid.module.scss +52 -16
  471. package/src/components/BentoGrid/BentoGrid.test.tsx +20 -0
  472. package/src/components/BentoGrid/index.tsx +9 -12
  473. package/src/components/Box/Box.fragment.tsx +3 -1
  474. package/src/components/Box/Box.test.tsx +14 -0
  475. package/src/components/Box/index.tsx +8 -2
  476. package/src/components/Breadcrumbs/Breadcrumbs.fragment.tsx +19 -1
  477. package/src/components/Breadcrumbs/Breadcrumbs.test.tsx +13 -0
  478. package/src/components/Breadcrumbs/index.tsx +5 -1
  479. package/src/components/Button/Button.fragment.tsx +28 -6
  480. package/src/components/Button/Button.module.scss +3 -3
  481. package/src/components/Button/Button.test.tsx +11 -0
  482. package/src/components/Button/index.tsx +16 -6
  483. package/src/components/ButtonGroup/ButtonGroup.fragment.tsx +4 -2
  484. package/src/components/ButtonGroup/ButtonGroup.test.tsx +10 -0
  485. package/src/components/ButtonGroup/index.tsx +3 -3
  486. package/src/components/Card/Card.fragment.tsx +24 -9
  487. package/src/components/Card/Card.module.scss +8 -8
  488. package/src/components/Card/Card.test.tsx +4 -5
  489. package/src/components/Card/index.tsx +8 -38
  490. package/src/components/Chart/Chart.fragment.tsx +5 -3
  491. package/src/components/Chart/Chart.module.scss +1 -1
  492. package/src/components/Chart/index.tsx +12 -10
  493. package/src/components/Checkbox/Checkbox.fragment.tsx +27 -1
  494. package/src/components/Checkbox/Checkbox.module.scss +3 -3
  495. package/src/components/Checkbox/index.tsx +16 -3
  496. package/src/components/Chip/Chip.fragment.tsx +20 -3
  497. package/src/components/Chip/Chip.test.tsx +28 -0
  498. package/src/components/Chip/index.tsx +14 -6
  499. package/src/components/CodeBlock/CodeBlock.fragment.tsx +3 -1
  500. package/src/components/CodeBlock/CodeBlock.module.scss +9 -9
  501. package/src/components/CodeBlock/CodeBlock.test.tsx +21 -0
  502. package/src/components/CodeBlock/index.tsx +23 -9
  503. package/src/components/Collapsible/Collapsible.fragment.tsx +1 -1
  504. package/src/components/Collapsible/Collapsible.module.scss +1 -1
  505. package/src/components/ColorPicker/ColorPicker.fragment.tsx +1 -1
  506. package/src/components/Combobox/Combobox.fragment.tsx +63 -9
  507. package/src/components/Combobox/Combobox.module.scss +4 -7
  508. package/src/components/Combobox/Combobox.test.tsx +24 -3
  509. package/src/components/Combobox/index.tsx +117 -34
  510. package/src/components/Command/Command.fragment.tsx +3 -3
  511. package/src/components/Command/Command.module.scss +5 -5
  512. package/src/components/Command/Command.test.tsx +17 -0
  513. package/src/components/Command/index.tsx +8 -5
  514. package/src/components/ConversationList/ConversationList.fragment.tsx +4 -3
  515. package/src/components/ConversationList/ConversationList.module.scss +5 -5
  516. package/src/components/ConversationList/ConversationList.test.tsx +21 -0
  517. package/src/components/ConversationList/index.tsx +8 -4
  518. package/src/components/DataTable/DataTable.fragment.tsx +12 -2
  519. package/src/components/DataTable/DataTable.module.scss +3 -3
  520. package/src/components/DataTable/DataTable.test.tsx +23 -2
  521. package/src/components/DataTable/index.tsx +23 -5
  522. package/src/components/DatePicker/DatePicker.fragment.tsx +3 -1
  523. package/src/components/DatePicker/DatePicker.module.scss +1 -1
  524. package/src/components/DatePicker/DatePicker.test.tsx +17 -0
  525. package/src/components/DatePicker/index.tsx +9 -2
  526. package/src/components/Dialog/Dialog.fragment.tsx +28 -1
  527. package/src/components/Dialog/Dialog.module.scss +6 -6
  528. package/src/components/Dialog/index.tsx +25 -7
  529. package/src/components/Drawer/Drawer.fragment.tsx +4 -1
  530. package/src/components/Drawer/Drawer.module.scss +3 -3
  531. package/src/components/Drawer/Drawer.test.tsx +8 -0
  532. package/src/components/Drawer/index.tsx +15 -3
  533. package/src/components/Editor/Editor.fragment.tsx +10 -3
  534. package/src/components/Editor/Editor.module.scss +4 -4
  535. package/src/components/Editor/Editor.test.tsx +68 -1
  536. package/src/components/Editor/index.tsx +60 -9
  537. package/src/components/EmptyState/EmptyState.fragment.tsx +3 -1
  538. package/src/components/EmptyState/EmptyState.module.scss +3 -3
  539. package/src/components/EmptyState/EmptyState.test.tsx +18 -0
  540. package/src/components/EmptyState/index.tsx +16 -16
  541. package/src/components/Field/Field.fragment.tsx +1 -1
  542. package/src/components/Fieldset/Fieldset.fragment.tsx +3 -1
  543. package/src/components/Fieldset/Fieldset.test.tsx +14 -0
  544. package/src/components/Fieldset/index.tsx +3 -4
  545. package/src/components/Form/Form.fragment.tsx +12 -7
  546. package/src/components/Form/index.tsx +13 -17
  547. package/src/components/Grid/Grid.fragment.tsx +4 -3
  548. package/src/components/Grid/Grid.module.scss +3 -3
  549. package/src/components/Grid/index.tsx +11 -6
  550. package/src/components/Header/Header.fragment.tsx +31 -1
  551. package/src/components/Header/Header.module.scss +6 -6
  552. package/src/components/Header/Header.test.tsx +95 -1
  553. package/src/components/Header/index.tsx +95 -46
  554. package/src/components/Icon/Icon.fragment.tsx +21 -8
  555. package/src/components/Icon/Icon.test.tsx +27 -3
  556. package/src/components/Icon/index.tsx +39 -15
  557. package/src/components/Image/Image.fragment.tsx +15 -1
  558. package/src/components/Image/Image.test.tsx +32 -1
  559. package/src/components/Image/index.tsx +24 -4
  560. package/src/components/Input/Input.fragment.tsx +49 -1
  561. package/src/components/Input/Input.module.scss +4 -2
  562. package/src/components/Input/Input.test.tsx +3 -3
  563. package/src/components/Input/index.tsx +103 -37
  564. package/src/components/Link/Link.fragment.tsx +7 -6
  565. package/src/components/Link/Link.test.tsx +17 -1
  566. package/src/components/Link/index.tsx +22 -0
  567. package/src/components/List/List.fragment.tsx +1 -1
  568. package/src/components/Listbox/Listbox.fragment.tsx +3 -3
  569. package/src/components/Listbox/Listbox.module.scss +4 -4
  570. package/src/components/Listbox/Listbox.test.tsx +14 -0
  571. package/src/components/Listbox/index.tsx +12 -2
  572. package/src/components/Loading/Loading.fragment.tsx +1 -1
  573. package/src/components/Markdown/Markdown.fragment.tsx +5 -3
  574. package/src/components/Markdown/Markdown.module.scss +5 -5
  575. package/src/components/Markdown/Markdown.test.tsx +6 -0
  576. package/src/components/Markdown/index.tsx +12 -9
  577. package/src/components/Menu/Menu.fragment.tsx +19 -1
  578. package/src/components/Menu/Menu.module.scss +11 -11
  579. package/src/components/Menu/index.tsx +19 -7
  580. package/src/components/Message/Message.fragment.tsx +1 -1
  581. package/src/components/Message/Message.module.scss +3 -3
  582. package/src/components/NavigationMenu/NavigationMenu.fragment.tsx +9 -1
  583. package/src/components/NavigationMenu/NavigationMenu.module.scss +7 -7
  584. package/src/components/NavigationMenu/NavigationMenu.test.tsx +48 -0
  585. package/src/components/NavigationMenu/NavigationMenuContext.ts +14 -0
  586. package/src/components/NavigationMenu/index.tsx +70 -7
  587. package/src/components/Pagination/Pagination.fragment.tsx +4 -1
  588. package/src/components/Pagination/Pagination.test.tsx +39 -0
  589. package/src/components/Pagination/index.tsx +36 -10
  590. package/src/components/Popover/Popover.fragment.tsx +18 -1
  591. package/src/components/Popover/Popover.module.scss +13 -13
  592. package/src/components/Popover/index.tsx +33 -8
  593. package/src/components/Progress/Progress.fragment.tsx +3 -1
  594. package/src/components/Progress/Progress.test.tsx +8 -0
  595. package/src/components/Progress/index.tsx +9 -1
  596. package/src/components/Prompt/Prompt.fragment.tsx +4 -1
  597. package/src/components/Prompt/Prompt.module.scss +3 -3
  598. package/src/components/Prompt/Prompt.test.tsx +19 -0
  599. package/src/components/Prompt/index.tsx +24 -6
  600. package/src/components/RadioGroup/RadioGroup.fragment.tsx +31 -1
  601. package/src/components/RadioGroup/index.tsx +22 -3
  602. package/src/components/ScrollArea/ScrollArea.fragment.tsx +1 -1
  603. package/src/components/Select/Select.fragment.tsx +30 -3
  604. package/src/components/Select/Select.module.scss +3 -3
  605. package/src/components/Select/index.tsx +46 -33
  606. package/src/components/Separator/Separator.fragment.tsx +1 -1
  607. package/src/components/Sidebar/Sidebar.fragment.tsx +3 -1
  608. package/src/components/Sidebar/Sidebar.module.scss +20 -20
  609. package/src/components/Sidebar/Sidebar.test.tsx +25 -0
  610. package/src/components/Sidebar/index.tsx +7 -7
  611. package/src/components/Skeleton/Skeleton.fragment.tsx +3 -1
  612. package/src/components/Skeleton/Skeleton.test.tsx +12 -0
  613. package/src/components/Skeleton/index.tsx +6 -7
  614. package/src/components/Slider/Slider.fragment.tsx +21 -1
  615. package/src/components/Slider/Slider.module.scss +31 -0
  616. package/src/components/Slider/Slider.test.tsx +16 -0
  617. package/src/components/Slider/index.tsx +40 -1
  618. package/src/components/Stack/Stack.fragment.tsx +3 -1
  619. package/src/components/Stack/index.tsx +13 -6
  620. package/src/components/Table/Table.fragment.tsx +43 -2
  621. package/src/components/Table/Table.module.scss +2 -2
  622. package/src/components/Table/index.tsx +23 -5
  623. package/src/components/TableOfContents/TableOfContents.fragment.tsx +4 -2
  624. package/src/components/TableOfContents/TableOfContents.test.tsx +34 -9
  625. package/src/components/TableOfContents/index.tsx +9 -5
  626. package/src/components/Tabs/Tabs.fragment.tsx +33 -8
  627. package/src/components/Tabs/Tabs.module.scss +8 -8
  628. package/src/components/Tabs/index.tsx +22 -14
  629. package/src/components/Text/Text.fragment.tsx +1 -1
  630. package/src/components/Textarea/Textarea.fragment.tsx +27 -1
  631. package/src/components/Textarea/index.tsx +39 -14
  632. package/src/components/Theme/Theme.fragment.tsx +3 -1
  633. package/src/components/Theme/Theme.test.tsx +11 -0
  634. package/src/components/Theme/index.tsx +3 -3
  635. package/src/components/ThinkingIndicator/ThinkingIndicator.fragment.tsx +1 -1
  636. package/src/components/ThinkingIndicator/ThinkingIndicator.module.scss +1 -1
  637. package/src/components/Toast/Toast.fragment.tsx +6 -3
  638. package/src/components/Toast/Toast.module.scss +8 -6
  639. package/src/components/Toast/index.tsx +24 -20
  640. package/src/components/Toggle/Toggle.fragment.tsx +1 -1
  641. package/src/components/Toggle/Toggle.module.scss +61 -21
  642. package/src/components/Toggle/index.tsx +3 -3
  643. package/src/components/ToggleGroup/ToggleGroup.fragment.tsx +33 -8
  644. package/src/components/ToggleGroup/ToggleGroup.module.scss +3 -3
  645. package/src/components/ToggleGroup/index.tsx +29 -9
  646. package/src/components/Tooltip/Tooltip.fragment.tsx +16 -1
  647. package/src/components/Tooltip/Tooltip.module.scss +1 -1
  648. package/src/components/Tooltip/index.tsx +16 -1
  649. package/src/components/VisuallyHidden/VisuallyHidden.fragment.tsx +3 -1
  650. package/src/components/VisuallyHidden/VisuallyHidden.test.tsx +12 -0
  651. package/src/components/VisuallyHidden/index.tsx +7 -3
  652. package/src/index.ts +3 -2
  653. package/src/tokens/_computed.scss +1 -19
  654. package/src/tokens/_density.scss +0 -42
  655. package/src/tokens/_mixins.scss +4 -0
  656. package/src/tokens/_variables.scss +12 -114
@@ -1,18 +1,18 @@
1
- const multiContainer = "_multiContainer_iztep_1";
2
- const inputWrapper = "_inputWrapper_iztep_7";
3
- const input = "_input_iztep_7";
4
- const chips = "_chips_iztep_59";
5
- const chip = "_chip_iztep_59";
6
- const chipLabel = "_chipLabel_iztep_81";
7
- const chipRemove = "_chipRemove_iztep_87";
8
- const trigger = "_trigger_iztep_119";
9
- const positioner = "_positioner_iztep_162";
10
- const popup = "_popup_iztep_167";
11
- const item = "_item_iztep_195";
12
- const itemIndicator = "_itemIndicator_iztep_239";
13
- const empty = "_empty_iztep_252";
14
- const group = "_group_iztep_267";
15
- const groupLabel = "_groupLabel_iztep_273";
1
+ const multiContainer = "_multiContainer_g9rct_1";
2
+ const inputWrapper = "_inputWrapper_g9rct_7";
3
+ const input = "_input_g9rct_7";
4
+ const chips = "_chips_g9rct_59";
5
+ const chip = "_chip_g9rct_59";
6
+ const chipLabel = "_chipLabel_g9rct_81";
7
+ const chipRemove = "_chipRemove_g9rct_87";
8
+ const trigger = "_trigger_g9rct_119";
9
+ const positioner = "_positioner_g9rct_162";
10
+ const popup = "_popup_g9rct_167";
11
+ const item = "_item_g9rct_195";
12
+ const itemIndicator = "_itemIndicator_g9rct_239";
13
+ const empty = "_empty_g9rct_252";
14
+ const group = "_group_g9rct_267";
15
+ const groupLabel = "_groupLabel_g9rct_273";
16
16
  const styles = {
17
17
  multiContainer,
18
18
  inputWrapper,
@@ -96,6 +96,9 @@ const ComboboxContext = React__namespace.createContext({
96
96
  itemsRef: { current: /* @__PURE__ */ new Map() },
97
97
  itemsVersion: 0,
98
98
  incrementItemsVersion: () => {
99
+ },
100
+ explicitTriggerCount: 0,
101
+ registerTrigger: () => () => {
99
102
  }
100
103
  });
101
104
  function getNodeText(node) {
@@ -111,6 +114,7 @@ function ComboboxRoot({
111
114
  value,
112
115
  defaultValue,
113
116
  onValueChange,
117
+ onChange,
114
118
  multiple = false,
115
119
  open,
116
120
  defaultOpen,
@@ -134,15 +138,11 @@ function ComboboxRoot({
134
138
  const incrementItemsVersion = React__namespace.useCallback(() => {
135
139
  setItemsVersion((v) => v + 1);
136
140
  }, []);
137
- const handleValueChange = React__namespace.useCallback(
138
- (newValue) => {
139
- if (value === void 0) {
140
- setInternalValue(newValue);
141
- }
142
- onValueChange == null ? void 0 : onValueChange(newValue);
143
- },
144
- [value, onValueChange]
145
- );
141
+ const [explicitTriggerCount, setExplicitTriggerCount] = React__namespace.useState(0);
142
+ const registerTrigger = React__namespace.useCallback(() => {
143
+ setExplicitTriggerCount((count) => count + 1);
144
+ return () => setExplicitTriggerCount((count) => Math.max(0, count - 1));
145
+ }, []);
146
146
  const handleOpenChange = React__namespace.useCallback(
147
147
  (nextOpen) => {
148
148
  onOpenChange == null ? void 0 : onOpenChange(nextOpen);
@@ -162,31 +162,79 @@ function ComboboxRoot({
162
162
  return [currentValue];
163
163
  }, [currentValue]);
164
164
  const contextValue = React__namespace.useMemo(
165
- () => ({ placeholder, multiple, selectedValues, itemsRef, itemsVersion, incrementItemsVersion }),
166
- [placeholder, multiple, selectedValues, itemsVersion, incrementItemsVersion]
165
+ () => ({
166
+ placeholder,
167
+ multiple,
168
+ selectedValues,
169
+ itemsRef,
170
+ itemsVersion,
171
+ incrementItemsVersion,
172
+ explicitTriggerCount,
173
+ registerTrigger
174
+ }),
175
+ [placeholder, multiple, selectedValues, itemsVersion, incrementItemsVersion, explicitTriggerCount, registerTrigger]
167
176
  );
177
+ if (multiple) {
178
+ const controlledValue2 = value;
179
+ const uncontrolledValue2 = defaultValue;
180
+ const emitChange2 = onChange ?? onValueChange;
181
+ const handleValueChange2 = (newValue) => {
182
+ if (controlledValue2 === void 0) {
183
+ setInternalValue(newValue);
184
+ }
185
+ emitChange2 == null ? void 0 : emitChange2(newValue);
186
+ };
187
+ return /* @__PURE__ */ jsxRuntime.jsx(ComboboxContext.Provider, { value: contextValue, children: /* @__PURE__ */ jsxRuntime.jsx(
188
+ ComboboxRoot$1.ComboboxRoot,
189
+ {
190
+ value: controlledValue2,
191
+ defaultValue: uncontrolledValue2,
192
+ onValueChange: handleValueChange2,
193
+ open,
194
+ defaultOpen,
195
+ onOpenChange: (nextOpen) => handleOpenChange(nextOpen),
196
+ disabled,
197
+ required,
198
+ name,
199
+ multiple: true,
200
+ autoHighlight,
201
+ itemToStringLabel,
202
+ children
203
+ }
204
+ ) });
205
+ }
206
+ const controlledValue = value;
207
+ const uncontrolledValue = defaultValue;
208
+ const emitChange = onChange ?? onValueChange;
209
+ const handleValueChange = (newValue) => {
210
+ if (controlledValue === void 0) {
211
+ setInternalValue(newValue);
212
+ }
213
+ emitChange == null ? void 0 : emitChange(newValue);
214
+ };
168
215
  return /* @__PURE__ */ jsxRuntime.jsx(ComboboxContext.Provider, { value: contextValue, children: /* @__PURE__ */ jsxRuntime.jsx(
169
216
  ComboboxRoot$1.ComboboxRoot,
170
217
  {
171
- value,
172
- defaultValue,
218
+ value: controlledValue,
219
+ defaultValue: uncontrolledValue ?? null,
173
220
  onValueChange: handleValueChange,
174
221
  open,
175
222
  defaultOpen,
176
- onOpenChange: handleOpenChange,
223
+ onOpenChange: (nextOpen) => handleOpenChange(nextOpen),
177
224
  disabled,
178
225
  required,
179
226
  name,
180
- multiple,
227
+ multiple: false,
181
228
  autoHighlight,
182
229
  itemToStringLabel,
183
230
  children
184
231
  }
185
232
  ) });
186
233
  }
187
- function ComboboxInput({ className, ...htmlProps }) {
234
+ function ComboboxInput({ className, showTrigger = true, ...htmlProps }) {
188
235
  const context = React__namespace.useContext(ComboboxContext);
189
236
  const classes = [Combobox_module.default.input, className].filter(Boolean).join(" ");
237
+ const renderTrigger = showTrigger && context.explicitTriggerCount === 0;
190
238
  if (context.multiple) {
191
239
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: Combobox_module.default.multiContainer, children: [
192
240
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: Combobox_module.default.inputWrapper, children: [
@@ -198,7 +246,7 @@ function ComboboxInput({ className, ...htmlProps }) {
198
246
  className: classes
199
247
  }
200
248
  ),
201
- /* @__PURE__ */ jsxRuntime.jsx(ComboboxTrigger$1.ComboboxTrigger, { className: Combobox_module.default.trigger, children: /* @__PURE__ */ jsxRuntime.jsx(ChevronDownIcon, {}) })
249
+ renderTrigger && /* @__PURE__ */ jsxRuntime.jsx(ComboboxTrigger$1.ComboboxTrigger, { className: Combobox_module.default.trigger, children: /* @__PURE__ */ jsxRuntime.jsx(ChevronDownIcon, {}) })
202
250
  ] }),
203
251
  context.selectedValues.length > 0 && /* @__PURE__ */ jsxRuntime.jsx(ComboboxChips.ComboboxChips, { className: Combobox_module.default.chips, children: context.selectedValues.map((chipValue) => /* @__PURE__ */ jsxRuntime.jsxs(ComboboxChip.ComboboxChip, { className: Combobox_module.default.chip, children: [
204
252
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: Combobox_module.default.chipLabel, children: context.itemsRef.current.get(chipValue) ?? chipValue }),
@@ -215,10 +263,12 @@ function ComboboxInput({ className, ...htmlProps }) {
215
263
  className: classes
216
264
  }
217
265
  ),
218
- /* @__PURE__ */ jsxRuntime.jsx(ComboboxTrigger$1.ComboboxTrigger, { className: Combobox_module.default.trigger, children: /* @__PURE__ */ jsxRuntime.jsx(ChevronDownIcon, {}) })
266
+ renderTrigger && /* @__PURE__ */ jsxRuntime.jsx(ComboboxTrigger$1.ComboboxTrigger, { className: Combobox_module.default.trigger, children: /* @__PURE__ */ jsxRuntime.jsx(ChevronDownIcon, {}) })
219
267
  ] });
220
268
  }
221
269
  function ComboboxTrigger({ children, className, ...htmlProps }) {
270
+ const { registerTrigger } = React__namespace.useContext(ComboboxContext);
271
+ React__namespace.useEffect(() => registerTrigger(), [registerTrigger]);
222
272
  const classes = [Combobox_module.default.trigger, className].filter(Boolean).join(" ");
223
273
  return /* @__PURE__ */ jsxRuntime.jsx(ComboboxTrigger$1.ComboboxTrigger, { ...htmlProps, className: classes, children: children ?? /* @__PURE__ */ jsxRuntime.jsx(ChevronDownIcon, {}) });
224
274
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":["../../../src/components/Combobox/index.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { Combobox as BaseCombobox } from '@base-ui/react/combobox';\nimport styles from './Combobox.module.scss';\n\n// ============================================\n// Types\n// ============================================\n\nexport interface ComboboxProps {\n children: React.ReactNode;\n /** Controlled selected value (string for single, string[] for multiple) */\n value?: string | string[] | null;\n /** Default selected value (uncontrolled) */\n defaultValue?: string | string[];\n /** Called when selection changes */\n onValueChange?: (value: string | string[] | null) => void;\n /** Whether multiple items can be selected */\n multiple?: boolean;\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n disabled?: boolean;\n required?: boolean;\n name?: string;\n placeholder?: string;\n /** Auto-highlight first matching item while filtering */\n autoHighlight?: boolean;\n}\n\nexport interface ComboboxInputProps extends React.InputHTMLAttributes<HTMLInputElement> {\n className?: string;\n}\n\nexport interface ComboboxTriggerProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n children?: React.ReactNode;\n className?: string;\n}\n\nexport interface ComboboxContentProps extends React.HTMLAttributes<HTMLDivElement> {\n children: React.ReactNode;\n sideOffset?: number;\n align?: 'start' | 'center' | 'end';\n /** Maximum number of visible options before scrolling. Shows half of the next item as a scroll hint. @default 4 */\n maxVisibleItems?: number;\n}\n\nexport interface ComboboxItemProps extends Omit<React.HTMLAttributes<HTMLElement>, 'children'> {\n children: React.ReactNode;\n value: string;\n disabled?: boolean;\n}\n\nexport interface ComboboxEmptyProps extends React.HTMLAttributes<HTMLElement> {\n children: React.ReactNode;\n}\n\nexport interface ComboboxGroupProps extends React.HTMLAttributes<HTMLElement> {\n children: React.ReactNode;\n}\n\nexport interface ComboboxGroupLabelProps extends React.HTMLAttributes<HTMLElement> {\n children: React.ReactNode;\n}\n\n// ============================================\n// Icons\n// ============================================\n\nfunction ChevronDownIcon() {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n >\n <polyline points=\"6 9 12 15 18 9\" />\n </svg>\n );\n}\n\nfunction CheckIcon() {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n >\n <polyline points=\"20 6 9 17 4 12\" />\n </svg>\n );\n}\n\nfunction XIcon() {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"12\"\n height=\"12\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n >\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\" />\n <line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\" />\n </svg>\n );\n}\n\n// ============================================\n// Context for Combobox state\n// ============================================\n\ninterface ComboboxContextValue {\n placeholder?: string;\n multiple?: boolean;\n selectedValues: string[];\n itemsRef: React.MutableRefObject<Map<string, string>>;\n itemsVersion: number;\n incrementItemsVersion: () => void;\n}\n\nconst ComboboxContext = React.createContext<ComboboxContextValue>({\n selectedValues: [],\n itemsRef: { current: new Map() },\n itemsVersion: 0,\n incrementItemsVersion: () => {},\n});\n\nfunction getNodeText(node: React.ReactNode): string {\n if (node == null || typeof node === 'boolean') return '';\n if (typeof node === 'string' || typeof node === 'number') return String(node);\n if (Array.isArray(node)) return node.map(getNodeText).join('');\n if (React.isValidElement(node))\n return getNodeText((node.props as { children?: React.ReactNode }).children);\n return '';\n}\n\n// ============================================\n// Components\n// ============================================\n\nfunction ComboboxRoot({\n children,\n value,\n defaultValue,\n onValueChange,\n multiple = false,\n open,\n defaultOpen,\n onOpenChange,\n disabled,\n required,\n name,\n placeholder,\n autoHighlight = true,\n}: ComboboxProps) {\n // Track selected values for chip rendering\n const [internalValue, setInternalValue] = React.useState<string | string[] | null>(\n value ?? defaultValue ?? (multiple ? [] : null)\n );\n\n // Sync with controlled value\n React.useEffect(() => {\n if (value !== undefined) {\n setInternalValue(value);\n }\n }, [value]);\n\n // Registry for item value → label mapping\n const itemsRef = React.useRef<Map<string, string>>(new Map());\n const [itemsVersion, setItemsVersion] = React.useState(0);\n const incrementItemsVersion = React.useCallback(() => {\n setItemsVersion((v) => v + 1);\n }, []);\n\n const handleValueChange = React.useCallback(\n (newValue: string | string[] | null) => {\n if (value === undefined) {\n setInternalValue(newValue);\n }\n onValueChange?.(newValue);\n },\n [value, onValueChange]\n );\n\n const handleOpenChange = React.useCallback(\n (nextOpen: boolean) => {\n onOpenChange?.(nextOpen);\n },\n [onOpenChange]\n );\n\n // Convert value → label for input display\n const itemToStringLabel = React.useCallback(\n (itemValue: string) => {\n return itemsRef.current.get(itemValue) ?? itemValue;\n },\n []\n );\n\n // Derive selected values array for chip rendering\n const currentValue = value !== undefined ? value : internalValue;\n const selectedValues = React.useMemo(() => {\n if (currentValue == null) return [];\n if (Array.isArray(currentValue)) return currentValue;\n return [currentValue];\n }, [currentValue]);\n\n const contextValue = React.useMemo(\n () => ({ placeholder, multiple, selectedValues, itemsRef, itemsVersion, incrementItemsVersion }),\n [placeholder, multiple, selectedValues, itemsVersion, incrementItemsVersion]\n );\n\n return (\n <ComboboxContext.Provider value={contextValue}>\n <BaseCombobox.Root\n value={value as any}\n defaultValue={defaultValue as any}\n onValueChange={handleValueChange as any}\n open={open}\n defaultOpen={defaultOpen}\n onOpenChange={handleOpenChange as any}\n disabled={disabled}\n required={required}\n name={name}\n multiple={multiple as any}\n autoHighlight={autoHighlight}\n itemToStringLabel={itemToStringLabel}\n >\n {children}\n </BaseCombobox.Root>\n </ComboboxContext.Provider>\n );\n}\n\nfunction ComboboxInput({ className, ...htmlProps }: ComboboxInputProps) {\n const context = React.useContext(ComboboxContext);\n const classes = [styles.input, className].filter(Boolean).join(' ');\n\n if (context.multiple) {\n return (\n <div className={styles.multiContainer}>\n <div className={styles.inputWrapper}>\n <BaseCombobox.Input\n placeholder={context.selectedValues.length === 0 ? context.placeholder : undefined}\n {...htmlProps}\n className={classes}\n />\n <BaseCombobox.Trigger className={styles.trigger}>\n <ChevronDownIcon />\n </BaseCombobox.Trigger>\n </div>\n {context.selectedValues.length > 0 && (\n <BaseCombobox.Chips className={styles.chips}>\n {context.selectedValues.map((chipValue) => (\n <BaseCombobox.Chip key={chipValue} className={styles.chip}>\n <span className={styles.chipLabel}>\n {context.itemsRef.current.get(chipValue) ?? chipValue}\n </span>\n <BaseCombobox.ChipRemove className={styles.chipRemove}>\n <XIcon />\n </BaseCombobox.ChipRemove>\n </BaseCombobox.Chip>\n ))}\n </BaseCombobox.Chips>\n )}\n </div>\n );\n }\n\n return (\n <div className={styles.inputWrapper}>\n <BaseCombobox.Input\n placeholder={context.placeholder}\n {...htmlProps}\n className={classes}\n />\n <BaseCombobox.Trigger className={styles.trigger}>\n <ChevronDownIcon />\n </BaseCombobox.Trigger>\n </div>\n );\n}\n\nfunction ComboboxTrigger({ children, className, ...htmlProps }: ComboboxTriggerProps) {\n const classes = [styles.trigger, className].filter(Boolean).join(' ');\n\n return (\n <BaseCombobox.Trigger {...htmlProps} className={classes}>\n {children ?? <ChevronDownIcon />}\n </BaseCombobox.Trigger>\n );\n}\n\nfunction ComboboxContent({\n children,\n className,\n sideOffset = 4,\n align = 'start',\n maxVisibleItems,\n ...htmlProps\n}: ComboboxContentProps) {\n const popupClasses = [styles.popup, className].filter(Boolean).join(' ');\n\n const popupStyle = maxVisibleItems != null\n ? { '--fui-select-max-items': maxVisibleItems + 0.5, ...htmlProps.style } as React.CSSProperties\n : htmlProps.style;\n\n return (\n <BaseCombobox.Portal>\n <BaseCombobox.Positioner\n side=\"bottom\"\n sideOffset={sideOffset}\n align={align}\n className={styles.positioner}\n >\n <BaseCombobox.Popup {...htmlProps} className={popupClasses} style={popupStyle}>\n {children}\n </BaseCombobox.Popup>\n </BaseCombobox.Positioner>\n </BaseCombobox.Portal>\n );\n}\n\nfunction ComboboxItem({ children, value, disabled, className, ...htmlProps }: ComboboxItemProps) {\n const { itemsRef, incrementItemsVersion } = React.useContext(ComboboxContext);\n const classes = [styles.item, className].filter(Boolean).join(' ');\n\n // Register this item's label in the registry so the input can display it\n const label = React.useMemo(() => getNodeText(children).trim() || value, [children, value]);\n React.useEffect(() => {\n const items = itemsRef.current;\n items.set(value, label);\n incrementItemsVersion();\n return () => {\n items.delete(value);\n incrementItemsVersion();\n };\n // itemsRef is a stable ref, incrementItemsVersion is a stable callback\n }, [itemsRef, incrementItemsVersion, value, label]);\n\n return (\n <BaseCombobox.Item {...htmlProps} value={value} disabled={disabled} className={classes}>\n {children}\n <BaseCombobox.ItemIndicator className={styles.itemIndicator}>\n <CheckIcon />\n </BaseCombobox.ItemIndicator>\n </BaseCombobox.Item>\n );\n}\n\nfunction ComboboxEmpty({ children, className, ...htmlProps }: ComboboxEmptyProps) {\n const classes = [styles.empty, className].filter(Boolean).join(' ');\n return <BaseCombobox.Empty {...htmlProps} className={classes}>{children}</BaseCombobox.Empty>;\n}\n\nfunction ComboboxGroup({ children, className, ...htmlProps }: ComboboxGroupProps) {\n const classes = [styles.group, className].filter(Boolean).join(' ');\n return <BaseCombobox.Group {...htmlProps} className={classes}>{children}</BaseCombobox.Group>;\n}\n\nfunction ComboboxGroupLabel({ children, className, ...htmlProps }: ComboboxGroupLabelProps) {\n const classes = [styles.groupLabel, className].filter(Boolean).join(' ');\n return <BaseCombobox.GroupLabel {...htmlProps} className={classes}>{children}</BaseCombobox.GroupLabel>;\n}\n\n// ============================================\n// Export compound component\n// ============================================\n\nexport const Combobox = Object.assign(ComboboxRoot, {\n Input: ComboboxInput,\n Trigger: ComboboxTrigger,\n Content: ComboboxContent,\n Item: ComboboxItem,\n ItemIndicator: BaseCombobox.ItemIndicator,\n Empty: ComboboxEmpty,\n Group: ComboboxGroup,\n GroupLabel: ComboboxGroupLabel,\n});\n\n// Re-export individual components\nexport {\n ComboboxRoot,\n ComboboxInput,\n ComboboxTrigger,\n ComboboxContent,\n ComboboxItem,\n ComboboxEmpty,\n ComboboxGroup,\n ComboboxGroupLabel,\n};\n"],"names":["jsx","jsxs","React","BaseCombobox.Root","styles","BaseCombobox.Input","BaseCombobox.Trigger","BaseCombobox.Chips","BaseCombobox.Chip","BaseCombobox.ChipRemove","BaseCombobox.Portal","BaseCombobox.Positioner","BaseCombobox.Popup","BaseCombobox.Item","BaseCombobox.ItemIndicator","BaseCombobox.Empty","BaseCombobox.Group","BaseCombobox.GroupLabel"],"mappings":"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"}
1
+ {"version":3,"file":"index.cjs","sources":["../../../src/components/Combobox/index.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { Combobox as BaseCombobox } from '@base-ui/react/combobox';\nimport styles from './Combobox.module.scss';\n\n// ============================================\n// Types\n// ============================================\n\ninterface ComboboxCommonProps {\n children: React.ReactNode;\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n disabled?: boolean;\n required?: boolean;\n name?: string;\n placeholder?: string;\n /** Auto-highlight first matching item while filtering */\n autoHighlight?: boolean;\n}\n\nexport interface ComboboxSingleProps extends ComboboxCommonProps {\n /** Whether multiple items can be selected */\n multiple?: false;\n /** Controlled selected value */\n value?: string | null;\n /** Default selected value (uncontrolled) */\n defaultValue?: string;\n /** Called when selection changes */\n onValueChange?: (value: string | null) => void;\n /** Alias for onValueChange */\n onChange?: (value: string | null) => void;\n}\n\nexport interface ComboboxMultipleProps extends ComboboxCommonProps {\n /** Whether multiple items can be selected */\n multiple: true;\n /** Controlled selected value */\n value?: string[];\n /** Default selected value (uncontrolled) */\n defaultValue?: string[];\n /** Called when selection changes */\n onValueChange?: (value: string[]) => void;\n /** Alias for onValueChange */\n onChange?: (value: string[]) => void;\n}\n\nexport type ComboboxProps = ComboboxSingleProps | ComboboxMultipleProps;\n\nexport interface ComboboxInputProps extends React.InputHTMLAttributes<HTMLInputElement> {\n className?: string;\n /** Render the built-in chevron trigger beside the input.\n * Automatically disabled when an explicit <Combobox.Trigger /> is mounted.\n * @default true */\n showTrigger?: boolean;\n}\n\nexport interface ComboboxTriggerProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n children?: React.ReactNode;\n className?: string;\n}\n\nexport interface ComboboxContentProps extends React.HTMLAttributes<HTMLDivElement> {\n children: React.ReactNode;\n sideOffset?: number;\n align?: 'start' | 'center' | 'end';\n /** Maximum number of visible options before scrolling. Shows half of the next item as a scroll hint. @default 4 */\n maxVisibleItems?: number;\n}\n\nexport interface ComboboxItemProps extends Omit<React.HTMLAttributes<HTMLElement>, 'children'> {\n children: React.ReactNode;\n value: string;\n disabled?: boolean;\n}\n\nexport interface ComboboxEmptyProps extends React.HTMLAttributes<HTMLElement> {\n children: React.ReactNode;\n}\n\nexport interface ComboboxGroupProps extends React.HTMLAttributes<HTMLElement> {\n children: React.ReactNode;\n}\n\nexport interface ComboboxGroupLabelProps extends React.HTMLAttributes<HTMLElement> {\n children: React.ReactNode;\n}\n\n// ============================================\n// Icons\n// ============================================\n\nfunction ChevronDownIcon() {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n >\n <polyline points=\"6 9 12 15 18 9\" />\n </svg>\n );\n}\n\nfunction CheckIcon() {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n >\n <polyline points=\"20 6 9 17 4 12\" />\n </svg>\n );\n}\n\nfunction XIcon() {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"12\"\n height=\"12\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n >\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\" />\n <line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\" />\n </svg>\n );\n}\n\n// ============================================\n// Context for Combobox state\n// ============================================\n\ninterface ComboboxContextValue {\n placeholder?: string;\n multiple?: boolean;\n selectedValues: string[];\n itemsRef: React.MutableRefObject<Map<string, string>>;\n itemsVersion: number;\n incrementItemsVersion: () => void;\n explicitTriggerCount: number;\n registerTrigger: () => () => void;\n}\n\nconst ComboboxContext = React.createContext<ComboboxContextValue>({\n selectedValues: [],\n itemsRef: { current: new Map() },\n itemsVersion: 0,\n incrementItemsVersion: () => {},\n explicitTriggerCount: 0,\n registerTrigger: () => () => {},\n});\n\nfunction getNodeText(node: React.ReactNode): string {\n if (node == null || typeof node === 'boolean') return '';\n if (typeof node === 'string' || typeof node === 'number') return String(node);\n if (Array.isArray(node)) return node.map(getNodeText).join('');\n if (React.isValidElement(node))\n return getNodeText((node.props as { children?: React.ReactNode }).children);\n return '';\n}\n\n// ============================================\n// Components\n// ============================================\n\nfunction ComboboxRoot({\n children,\n value,\n defaultValue,\n onValueChange,\n onChange,\n multiple = false,\n open,\n defaultOpen,\n onOpenChange,\n disabled,\n required,\n name,\n placeholder,\n autoHighlight = true,\n}: ComboboxProps) {\n // Track selected values for chip rendering\n const [internalValue, setInternalValue] = React.useState<string | string[] | null>(\n value ?? defaultValue ?? (multiple ? [] : null)\n );\n\n // Sync with controlled value\n React.useEffect(() => {\n if (value !== undefined) {\n setInternalValue(value);\n }\n }, [value]);\n\n // Registry for item value → label mapping\n const itemsRef = React.useRef<Map<string, string>>(new Map());\n const [itemsVersion, setItemsVersion] = React.useState(0);\n const incrementItemsVersion = React.useCallback(() => {\n setItemsVersion((v) => v + 1);\n }, []);\n const [explicitTriggerCount, setExplicitTriggerCount] = React.useState(0);\n const registerTrigger = React.useCallback(() => {\n setExplicitTriggerCount((count) => count + 1);\n return () => setExplicitTriggerCount((count) => Math.max(0, count - 1));\n }, []);\n\n const handleOpenChange = React.useCallback(\n (nextOpen: boolean) => {\n onOpenChange?.(nextOpen);\n },\n [onOpenChange]\n );\n\n // Convert value → label for input display\n const itemToStringLabel = React.useCallback(\n (itemValue: string) => {\n return itemsRef.current.get(itemValue) ?? itemValue;\n },\n []\n );\n\n // Derive selected values array for chip rendering\n const currentValue = value !== undefined ? value : internalValue;\n const selectedValues = React.useMemo(() => {\n if (currentValue == null) return [];\n if (Array.isArray(currentValue)) return currentValue;\n return [currentValue];\n }, [currentValue]);\n\n const contextValue = React.useMemo(\n () => ({\n placeholder,\n multiple,\n selectedValues,\n itemsRef,\n itemsVersion,\n incrementItemsVersion,\n explicitTriggerCount,\n registerTrigger,\n }),\n [placeholder, multiple, selectedValues, itemsVersion, incrementItemsVersion, explicitTriggerCount, registerTrigger]\n );\n\n if (multiple) {\n const controlledValue = value as string[] | undefined;\n const uncontrolledValue = defaultValue as string[] | undefined;\n const emitChange = (onChange ?? onValueChange) as ((value: string[]) => void) | undefined;\n const handleValueChange = (newValue: string[]) => {\n if (controlledValue === undefined) {\n setInternalValue(newValue);\n }\n emitChange?.(newValue);\n };\n\n return (\n <ComboboxContext.Provider value={contextValue}>\n <BaseCombobox.Root<string, true>\n value={controlledValue}\n defaultValue={uncontrolledValue}\n onValueChange={handleValueChange}\n open={open}\n defaultOpen={defaultOpen}\n onOpenChange={(nextOpen) => handleOpenChange(nextOpen)}\n disabled={disabled}\n required={required}\n name={name}\n multiple\n autoHighlight={autoHighlight}\n itemToStringLabel={itemToStringLabel}\n >\n {children}\n </BaseCombobox.Root>\n </ComboboxContext.Provider>\n );\n }\n\n const controlledValue = value as string | null | undefined;\n const uncontrolledValue = defaultValue as string | undefined;\n const emitChange = (onChange ?? onValueChange) as ((value: string | null) => void) | undefined;\n const handleValueChange = (newValue: string | null) => {\n if (controlledValue === undefined) {\n setInternalValue(newValue);\n }\n emitChange?.(newValue);\n };\n\n return (\n <ComboboxContext.Provider value={contextValue}>\n <BaseCombobox.Root<string, false>\n value={controlledValue}\n defaultValue={uncontrolledValue ?? null}\n onValueChange={handleValueChange}\n open={open}\n defaultOpen={defaultOpen}\n onOpenChange={(nextOpen) => handleOpenChange(nextOpen)}\n disabled={disabled}\n required={required}\n name={name}\n multiple={false}\n autoHighlight={autoHighlight}\n itemToStringLabel={itemToStringLabel}\n >\n {children}\n </BaseCombobox.Root>\n </ComboboxContext.Provider>\n );\n}\n\nfunction ComboboxInput({ className, showTrigger = true, ...htmlProps }: ComboboxInputProps) {\n const context = React.useContext(ComboboxContext);\n const classes = [styles.input, className].filter(Boolean).join(' ');\n const renderTrigger = showTrigger && context.explicitTriggerCount === 0;\n\n if (context.multiple) {\n return (\n <div className={styles.multiContainer}>\n <div className={styles.inputWrapper}>\n <BaseCombobox.Input\n placeholder={context.selectedValues.length === 0 ? context.placeholder : undefined}\n {...htmlProps}\n className={classes}\n />\n {renderTrigger && (\n <BaseCombobox.Trigger className={styles.trigger}>\n <ChevronDownIcon />\n </BaseCombobox.Trigger>\n )}\n </div>\n {context.selectedValues.length > 0 && (\n <BaseCombobox.Chips className={styles.chips}>\n {context.selectedValues.map((chipValue) => (\n <BaseCombobox.Chip key={chipValue} className={styles.chip}>\n <span className={styles.chipLabel}>\n {context.itemsRef.current.get(chipValue) ?? chipValue}\n </span>\n <BaseCombobox.ChipRemove className={styles.chipRemove}>\n <XIcon />\n </BaseCombobox.ChipRemove>\n </BaseCombobox.Chip>\n ))}\n </BaseCombobox.Chips>\n )}\n </div>\n );\n }\n\n return (\n <div className={styles.inputWrapper}>\n <BaseCombobox.Input\n placeholder={context.placeholder}\n {...htmlProps}\n className={classes}\n />\n {renderTrigger && (\n <BaseCombobox.Trigger className={styles.trigger}>\n <ChevronDownIcon />\n </BaseCombobox.Trigger>\n )}\n </div>\n );\n}\n\nfunction ComboboxTrigger({ children, className, ...htmlProps }: ComboboxTriggerProps) {\n const { registerTrigger } = React.useContext(ComboboxContext);\n React.useEffect(() => registerTrigger(), [registerTrigger]);\n const classes = [styles.trigger, className].filter(Boolean).join(' ');\n\n return (\n <BaseCombobox.Trigger {...htmlProps} className={classes}>\n {children ?? <ChevronDownIcon />}\n </BaseCombobox.Trigger>\n );\n}\n\nfunction ComboboxContent({\n children,\n className,\n sideOffset = 4,\n align = 'start',\n maxVisibleItems,\n ...htmlProps\n}: ComboboxContentProps) {\n const popupClasses = [styles.popup, className].filter(Boolean).join(' ');\n\n const popupStyle = maxVisibleItems != null\n ? { '--fui-select-max-items': maxVisibleItems + 0.5, ...htmlProps.style } as React.CSSProperties\n : htmlProps.style;\n\n return (\n <BaseCombobox.Portal>\n <BaseCombobox.Positioner\n side=\"bottom\"\n sideOffset={sideOffset}\n align={align}\n className={styles.positioner}\n >\n <BaseCombobox.Popup {...htmlProps} className={popupClasses} style={popupStyle}>\n {children}\n </BaseCombobox.Popup>\n </BaseCombobox.Positioner>\n </BaseCombobox.Portal>\n );\n}\n\nfunction ComboboxItem({ children, value, disabled, className, ...htmlProps }: ComboboxItemProps) {\n const { itemsRef, incrementItemsVersion } = React.useContext(ComboboxContext);\n const classes = [styles.item, className].filter(Boolean).join(' ');\n\n // Register this item's label in the registry so the input can display it\n const label = React.useMemo(() => getNodeText(children).trim() || value, [children, value]);\n React.useEffect(() => {\n const items = itemsRef.current;\n items.set(value, label);\n incrementItemsVersion();\n return () => {\n items.delete(value);\n incrementItemsVersion();\n };\n // itemsRef is a stable ref, incrementItemsVersion is a stable callback\n }, [itemsRef, incrementItemsVersion, value, label]);\n\n return (\n <BaseCombobox.Item {...htmlProps} value={value} disabled={disabled} className={classes}>\n {children}\n <BaseCombobox.ItemIndicator className={styles.itemIndicator}>\n <CheckIcon />\n </BaseCombobox.ItemIndicator>\n </BaseCombobox.Item>\n );\n}\n\nfunction ComboboxEmpty({ children, className, ...htmlProps }: ComboboxEmptyProps) {\n const classes = [styles.empty, className].filter(Boolean).join(' ');\n return <BaseCombobox.Empty {...htmlProps} className={classes}>{children}</BaseCombobox.Empty>;\n}\n\nfunction ComboboxGroup({ children, className, ...htmlProps }: ComboboxGroupProps) {\n const classes = [styles.group, className].filter(Boolean).join(' ');\n return <BaseCombobox.Group {...htmlProps} className={classes}>{children}</BaseCombobox.Group>;\n}\n\nfunction ComboboxGroupLabel({ children, className, ...htmlProps }: ComboboxGroupLabelProps) {\n const classes = [styles.groupLabel, className].filter(Boolean).join(' ');\n return <BaseCombobox.GroupLabel {...htmlProps} className={classes}>{children}</BaseCombobox.GroupLabel>;\n}\n\n// ============================================\n// Export compound component\n// ============================================\n\nexport const Combobox = Object.assign(ComboboxRoot, {\n Input: ComboboxInput,\n Trigger: ComboboxTrigger,\n Content: ComboboxContent,\n Item: ComboboxItem,\n ItemIndicator: BaseCombobox.ItemIndicator,\n Empty: ComboboxEmpty,\n Group: ComboboxGroup,\n GroupLabel: ComboboxGroupLabel,\n});\n\n// Re-export individual components\nexport {\n ComboboxRoot,\n ComboboxInput,\n ComboboxTrigger,\n ComboboxContent,\n ComboboxItem,\n ComboboxEmpty,\n ComboboxGroup,\n ComboboxGroupLabel,\n};\n"],"names":["jsx","jsxs","React","controlledValue","uncontrolledValue","emitChange","handleValueChange","BaseCombobox.Root","styles","BaseCombobox.Input","BaseCombobox.Trigger","BaseCombobox.Chips","BaseCombobox.Chip","BaseCombobox.ChipRemove","BaseCombobox.Portal","BaseCombobox.Positioner","BaseCombobox.Popup","BaseCombobox.Item","BaseCombobox.ItemIndicator","BaseCombobox.Empty","BaseCombobox.Group","BaseCombobox.GroupLabel"],"mappings":"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"}
@@ -1,14 +1,6 @@
1
1
  import * as React from 'react';
2
- export interface ComboboxProps {
2
+ interface ComboboxCommonProps {
3
3
  children: React.ReactNode;
4
- /** Controlled selected value (string for single, string[] for multiple) */
5
- value?: string | string[] | null;
6
- /** Default selected value (uncontrolled) */
7
- defaultValue?: string | string[];
8
- /** Called when selection changes */
9
- onValueChange?: (value: string | string[] | null) => void;
10
- /** Whether multiple items can be selected */
11
- multiple?: boolean;
12
4
  open?: boolean;
13
5
  defaultOpen?: boolean;
14
6
  onOpenChange?: (open: boolean) => void;
@@ -19,8 +11,37 @@ export interface ComboboxProps {
19
11
  /** Auto-highlight first matching item while filtering */
20
12
  autoHighlight?: boolean;
21
13
  }
14
+ export interface ComboboxSingleProps extends ComboboxCommonProps {
15
+ /** Whether multiple items can be selected */
16
+ multiple?: false;
17
+ /** Controlled selected value */
18
+ value?: string | null;
19
+ /** Default selected value (uncontrolled) */
20
+ defaultValue?: string;
21
+ /** Called when selection changes */
22
+ onValueChange?: (value: string | null) => void;
23
+ /** Alias for onValueChange */
24
+ onChange?: (value: string | null) => void;
25
+ }
26
+ export interface ComboboxMultipleProps extends ComboboxCommonProps {
27
+ /** Whether multiple items can be selected */
28
+ multiple: true;
29
+ /** Controlled selected value */
30
+ value?: string[];
31
+ /** Default selected value (uncontrolled) */
32
+ defaultValue?: string[];
33
+ /** Called when selection changes */
34
+ onValueChange?: (value: string[]) => void;
35
+ /** Alias for onValueChange */
36
+ onChange?: (value: string[]) => void;
37
+ }
38
+ export type ComboboxProps = ComboboxSingleProps | ComboboxMultipleProps;
22
39
  export interface ComboboxInputProps extends React.InputHTMLAttributes<HTMLInputElement> {
23
40
  className?: string;
41
+ /** Render the built-in chevron trigger beside the input.
42
+ * Automatically disabled when an explicit <Combobox.Trigger /> is mounted.
43
+ * @default true */
44
+ showTrigger?: boolean;
24
45
  }
25
46
  export interface ComboboxTriggerProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {
26
47
  children?: React.ReactNode;
@@ -47,8 +68,8 @@ export interface ComboboxGroupProps extends React.HTMLAttributes<HTMLElement> {
47
68
  export interface ComboboxGroupLabelProps extends React.HTMLAttributes<HTMLElement> {
48
69
  children: React.ReactNode;
49
70
  }
50
- declare function ComboboxRoot({ children, value, defaultValue, onValueChange, multiple, open, defaultOpen, onOpenChange, disabled, required, name, placeholder, autoHighlight, }: ComboboxProps): import("react/jsx-runtime").JSX.Element;
51
- declare function ComboboxInput({ className, ...htmlProps }: ComboboxInputProps): import("react/jsx-runtime").JSX.Element;
71
+ declare function ComboboxRoot({ children, value, defaultValue, onValueChange, onChange, multiple, open, defaultOpen, onOpenChange, disabled, required, name, placeholder, autoHighlight, }: ComboboxProps): import("react/jsx-runtime").JSX.Element;
72
+ declare function ComboboxInput({ className, showTrigger, ...htmlProps }: ComboboxInputProps): import("react/jsx-runtime").JSX.Element;
52
73
  declare function ComboboxTrigger({ children, className, ...htmlProps }: ComboboxTriggerProps): import("react/jsx-runtime").JSX.Element;
53
74
  declare function ComboboxContent({ children, className, sideOffset, align, maxVisibleItems, ...htmlProps }: ComboboxContentProps): import("react/jsx-runtime").JSX.Element;
54
75
  declare function ComboboxItem({ children, value, disabled, className, ...htmlProps }: ComboboxItemProps): import("react/jsx-runtime").JSX.Element;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/Combobox/index.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/Combobox/index.tsx"],"names":[],"mappings":"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"}
@@ -77,6 +77,9 @@ const ComboboxContext = React.createContext({
77
77
  itemsRef: { current: /* @__PURE__ */ new Map() },
78
78
  itemsVersion: 0,
79
79
  incrementItemsVersion: () => {
80
+ },
81
+ explicitTriggerCount: 0,
82
+ registerTrigger: () => () => {
80
83
  }
81
84
  });
82
85
  function getNodeText(node) {
@@ -92,6 +95,7 @@ function ComboboxRoot({
92
95
  value,
93
96
  defaultValue,
94
97
  onValueChange,
98
+ onChange,
95
99
  multiple = false,
96
100
  open,
97
101
  defaultOpen,
@@ -115,15 +119,11 @@ function ComboboxRoot({
115
119
  const incrementItemsVersion = React.useCallback(() => {
116
120
  setItemsVersion((v) => v + 1);
117
121
  }, []);
118
- const handleValueChange = React.useCallback(
119
- (newValue) => {
120
- if (value === void 0) {
121
- setInternalValue(newValue);
122
- }
123
- onValueChange == null ? void 0 : onValueChange(newValue);
124
- },
125
- [value, onValueChange]
126
- );
122
+ const [explicitTriggerCount, setExplicitTriggerCount] = React.useState(0);
123
+ const registerTrigger = React.useCallback(() => {
124
+ setExplicitTriggerCount((count) => count + 1);
125
+ return () => setExplicitTriggerCount((count) => Math.max(0, count - 1));
126
+ }, []);
127
127
  const handleOpenChange = React.useCallback(
128
128
  (nextOpen) => {
129
129
  onOpenChange == null ? void 0 : onOpenChange(nextOpen);
@@ -143,31 +143,79 @@ function ComboboxRoot({
143
143
  return [currentValue];
144
144
  }, [currentValue]);
145
145
  const contextValue = React.useMemo(
146
- () => ({ placeholder, multiple, selectedValues, itemsRef, itemsVersion, incrementItemsVersion }),
147
- [placeholder, multiple, selectedValues, itemsVersion, incrementItemsVersion]
146
+ () => ({
147
+ placeholder,
148
+ multiple,
149
+ selectedValues,
150
+ itemsRef,
151
+ itemsVersion,
152
+ incrementItemsVersion,
153
+ explicitTriggerCount,
154
+ registerTrigger
155
+ }),
156
+ [placeholder, multiple, selectedValues, itemsVersion, incrementItemsVersion, explicitTriggerCount, registerTrigger]
148
157
  );
158
+ if (multiple) {
159
+ const controlledValue2 = value;
160
+ const uncontrolledValue2 = defaultValue;
161
+ const emitChange2 = onChange ?? onValueChange;
162
+ const handleValueChange2 = (newValue) => {
163
+ if (controlledValue2 === void 0) {
164
+ setInternalValue(newValue);
165
+ }
166
+ emitChange2 == null ? void 0 : emitChange2(newValue);
167
+ };
168
+ return /* @__PURE__ */ jsx(ComboboxContext.Provider, { value: contextValue, children: /* @__PURE__ */ jsx(
169
+ ComboboxRoot$1,
170
+ {
171
+ value: controlledValue2,
172
+ defaultValue: uncontrolledValue2,
173
+ onValueChange: handleValueChange2,
174
+ open,
175
+ defaultOpen,
176
+ onOpenChange: (nextOpen) => handleOpenChange(nextOpen),
177
+ disabled,
178
+ required,
179
+ name,
180
+ multiple: true,
181
+ autoHighlight,
182
+ itemToStringLabel,
183
+ children
184
+ }
185
+ ) });
186
+ }
187
+ const controlledValue = value;
188
+ const uncontrolledValue = defaultValue;
189
+ const emitChange = onChange ?? onValueChange;
190
+ const handleValueChange = (newValue) => {
191
+ if (controlledValue === void 0) {
192
+ setInternalValue(newValue);
193
+ }
194
+ emitChange == null ? void 0 : emitChange(newValue);
195
+ };
149
196
  return /* @__PURE__ */ jsx(ComboboxContext.Provider, { value: contextValue, children: /* @__PURE__ */ jsx(
150
197
  ComboboxRoot$1,
151
198
  {
152
- value,
153
- defaultValue,
199
+ value: controlledValue,
200
+ defaultValue: uncontrolledValue ?? null,
154
201
  onValueChange: handleValueChange,
155
202
  open,
156
203
  defaultOpen,
157
- onOpenChange: handleOpenChange,
204
+ onOpenChange: (nextOpen) => handleOpenChange(nextOpen),
158
205
  disabled,
159
206
  required,
160
207
  name,
161
- multiple,
208
+ multiple: false,
162
209
  autoHighlight,
163
210
  itemToStringLabel,
164
211
  children
165
212
  }
166
213
  ) });
167
214
  }
168
- function ComboboxInput({ className, ...htmlProps }) {
215
+ function ComboboxInput({ className, showTrigger = true, ...htmlProps }) {
169
216
  const context = React.useContext(ComboboxContext);
170
217
  const classes = [styles.input, className].filter(Boolean).join(" ");
218
+ const renderTrigger = showTrigger && context.explicitTriggerCount === 0;
171
219
  if (context.multiple) {
172
220
  return /* @__PURE__ */ jsxs("div", { className: styles.multiContainer, children: [
173
221
  /* @__PURE__ */ jsxs("div", { className: styles.inputWrapper, children: [
@@ -179,7 +227,7 @@ function ComboboxInput({ className, ...htmlProps }) {
179
227
  className: classes
180
228
  }
181
229
  ),
182
- /* @__PURE__ */ jsx(ComboboxTrigger$1, { className: styles.trigger, children: /* @__PURE__ */ jsx(ChevronDownIcon, {}) })
230
+ renderTrigger && /* @__PURE__ */ jsx(ComboboxTrigger$1, { className: styles.trigger, children: /* @__PURE__ */ jsx(ChevronDownIcon, {}) })
183
231
  ] }),
184
232
  context.selectedValues.length > 0 && /* @__PURE__ */ jsx(ComboboxChips, { className: styles.chips, children: context.selectedValues.map((chipValue) => /* @__PURE__ */ jsxs(ComboboxChip, { className: styles.chip, children: [
185
233
  /* @__PURE__ */ jsx("span", { className: styles.chipLabel, children: context.itemsRef.current.get(chipValue) ?? chipValue }),
@@ -196,10 +244,12 @@ function ComboboxInput({ className, ...htmlProps }) {
196
244
  className: classes
197
245
  }
198
246
  ),
199
- /* @__PURE__ */ jsx(ComboboxTrigger$1, { className: styles.trigger, children: /* @__PURE__ */ jsx(ChevronDownIcon, {}) })
247
+ renderTrigger && /* @__PURE__ */ jsx(ComboboxTrigger$1, { className: styles.trigger, children: /* @__PURE__ */ jsx(ChevronDownIcon, {}) })
200
248
  ] });
201
249
  }
202
250
  function ComboboxTrigger({ children, className, ...htmlProps }) {
251
+ const { registerTrigger } = React.useContext(ComboboxContext);
252
+ React.useEffect(() => registerTrigger(), [registerTrigger]);
203
253
  const classes = [styles.trigger, className].filter(Boolean).join(" ");
204
254
  return /* @__PURE__ */ jsx(ComboboxTrigger$1, { ...htmlProps, className: classes, children: children ?? /* @__PURE__ */ jsx(ChevronDownIcon, {}) });
205
255
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../src/components/Combobox/index.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { Combobox as BaseCombobox } from '@base-ui/react/combobox';\nimport styles from './Combobox.module.scss';\n\n// ============================================\n// Types\n// ============================================\n\nexport interface ComboboxProps {\n children: React.ReactNode;\n /** Controlled selected value (string for single, string[] for multiple) */\n value?: string | string[] | null;\n /** Default selected value (uncontrolled) */\n defaultValue?: string | string[];\n /** Called when selection changes */\n onValueChange?: (value: string | string[] | null) => void;\n /** Whether multiple items can be selected */\n multiple?: boolean;\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n disabled?: boolean;\n required?: boolean;\n name?: string;\n placeholder?: string;\n /** Auto-highlight first matching item while filtering */\n autoHighlight?: boolean;\n}\n\nexport interface ComboboxInputProps extends React.InputHTMLAttributes<HTMLInputElement> {\n className?: string;\n}\n\nexport interface ComboboxTriggerProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n children?: React.ReactNode;\n className?: string;\n}\n\nexport interface ComboboxContentProps extends React.HTMLAttributes<HTMLDivElement> {\n children: React.ReactNode;\n sideOffset?: number;\n align?: 'start' | 'center' | 'end';\n /** Maximum number of visible options before scrolling. Shows half of the next item as a scroll hint. @default 4 */\n maxVisibleItems?: number;\n}\n\nexport interface ComboboxItemProps extends Omit<React.HTMLAttributes<HTMLElement>, 'children'> {\n children: React.ReactNode;\n value: string;\n disabled?: boolean;\n}\n\nexport interface ComboboxEmptyProps extends React.HTMLAttributes<HTMLElement> {\n children: React.ReactNode;\n}\n\nexport interface ComboboxGroupProps extends React.HTMLAttributes<HTMLElement> {\n children: React.ReactNode;\n}\n\nexport interface ComboboxGroupLabelProps extends React.HTMLAttributes<HTMLElement> {\n children: React.ReactNode;\n}\n\n// ============================================\n// Icons\n// ============================================\n\nfunction ChevronDownIcon() {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n >\n <polyline points=\"6 9 12 15 18 9\" />\n </svg>\n );\n}\n\nfunction CheckIcon() {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n >\n <polyline points=\"20 6 9 17 4 12\" />\n </svg>\n );\n}\n\nfunction XIcon() {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"12\"\n height=\"12\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n >\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\" />\n <line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\" />\n </svg>\n );\n}\n\n// ============================================\n// Context for Combobox state\n// ============================================\n\ninterface ComboboxContextValue {\n placeholder?: string;\n multiple?: boolean;\n selectedValues: string[];\n itemsRef: React.MutableRefObject<Map<string, string>>;\n itemsVersion: number;\n incrementItemsVersion: () => void;\n}\n\nconst ComboboxContext = React.createContext<ComboboxContextValue>({\n selectedValues: [],\n itemsRef: { current: new Map() },\n itemsVersion: 0,\n incrementItemsVersion: () => {},\n});\n\nfunction getNodeText(node: React.ReactNode): string {\n if (node == null || typeof node === 'boolean') return '';\n if (typeof node === 'string' || typeof node === 'number') return String(node);\n if (Array.isArray(node)) return node.map(getNodeText).join('');\n if (React.isValidElement(node))\n return getNodeText((node.props as { children?: React.ReactNode }).children);\n return '';\n}\n\n// ============================================\n// Components\n// ============================================\n\nfunction ComboboxRoot({\n children,\n value,\n defaultValue,\n onValueChange,\n multiple = false,\n open,\n defaultOpen,\n onOpenChange,\n disabled,\n required,\n name,\n placeholder,\n autoHighlight = true,\n}: ComboboxProps) {\n // Track selected values for chip rendering\n const [internalValue, setInternalValue] = React.useState<string | string[] | null>(\n value ?? defaultValue ?? (multiple ? [] : null)\n );\n\n // Sync with controlled value\n React.useEffect(() => {\n if (value !== undefined) {\n setInternalValue(value);\n }\n }, [value]);\n\n // Registry for item value → label mapping\n const itemsRef = React.useRef<Map<string, string>>(new Map());\n const [itemsVersion, setItemsVersion] = React.useState(0);\n const incrementItemsVersion = React.useCallback(() => {\n setItemsVersion((v) => v + 1);\n }, []);\n\n const handleValueChange = React.useCallback(\n (newValue: string | string[] | null) => {\n if (value === undefined) {\n setInternalValue(newValue);\n }\n onValueChange?.(newValue);\n },\n [value, onValueChange]\n );\n\n const handleOpenChange = React.useCallback(\n (nextOpen: boolean) => {\n onOpenChange?.(nextOpen);\n },\n [onOpenChange]\n );\n\n // Convert value → label for input display\n const itemToStringLabel = React.useCallback(\n (itemValue: string) => {\n return itemsRef.current.get(itemValue) ?? itemValue;\n },\n []\n );\n\n // Derive selected values array for chip rendering\n const currentValue = value !== undefined ? value : internalValue;\n const selectedValues = React.useMemo(() => {\n if (currentValue == null) return [];\n if (Array.isArray(currentValue)) return currentValue;\n return [currentValue];\n }, [currentValue]);\n\n const contextValue = React.useMemo(\n () => ({ placeholder, multiple, selectedValues, itemsRef, itemsVersion, incrementItemsVersion }),\n [placeholder, multiple, selectedValues, itemsVersion, incrementItemsVersion]\n );\n\n return (\n <ComboboxContext.Provider value={contextValue}>\n <BaseCombobox.Root\n value={value as any}\n defaultValue={defaultValue as any}\n onValueChange={handleValueChange as any}\n open={open}\n defaultOpen={defaultOpen}\n onOpenChange={handleOpenChange as any}\n disabled={disabled}\n required={required}\n name={name}\n multiple={multiple as any}\n autoHighlight={autoHighlight}\n itemToStringLabel={itemToStringLabel}\n >\n {children}\n </BaseCombobox.Root>\n </ComboboxContext.Provider>\n );\n}\n\nfunction ComboboxInput({ className, ...htmlProps }: ComboboxInputProps) {\n const context = React.useContext(ComboboxContext);\n const classes = [styles.input, className].filter(Boolean).join(' ');\n\n if (context.multiple) {\n return (\n <div className={styles.multiContainer}>\n <div className={styles.inputWrapper}>\n <BaseCombobox.Input\n placeholder={context.selectedValues.length === 0 ? context.placeholder : undefined}\n {...htmlProps}\n className={classes}\n />\n <BaseCombobox.Trigger className={styles.trigger}>\n <ChevronDownIcon />\n </BaseCombobox.Trigger>\n </div>\n {context.selectedValues.length > 0 && (\n <BaseCombobox.Chips className={styles.chips}>\n {context.selectedValues.map((chipValue) => (\n <BaseCombobox.Chip key={chipValue} className={styles.chip}>\n <span className={styles.chipLabel}>\n {context.itemsRef.current.get(chipValue) ?? chipValue}\n </span>\n <BaseCombobox.ChipRemove className={styles.chipRemove}>\n <XIcon />\n </BaseCombobox.ChipRemove>\n </BaseCombobox.Chip>\n ))}\n </BaseCombobox.Chips>\n )}\n </div>\n );\n }\n\n return (\n <div className={styles.inputWrapper}>\n <BaseCombobox.Input\n placeholder={context.placeholder}\n {...htmlProps}\n className={classes}\n />\n <BaseCombobox.Trigger className={styles.trigger}>\n <ChevronDownIcon />\n </BaseCombobox.Trigger>\n </div>\n );\n}\n\nfunction ComboboxTrigger({ children, className, ...htmlProps }: ComboboxTriggerProps) {\n const classes = [styles.trigger, className].filter(Boolean).join(' ');\n\n return (\n <BaseCombobox.Trigger {...htmlProps} className={classes}>\n {children ?? <ChevronDownIcon />}\n </BaseCombobox.Trigger>\n );\n}\n\nfunction ComboboxContent({\n children,\n className,\n sideOffset = 4,\n align = 'start',\n maxVisibleItems,\n ...htmlProps\n}: ComboboxContentProps) {\n const popupClasses = [styles.popup, className].filter(Boolean).join(' ');\n\n const popupStyle = maxVisibleItems != null\n ? { '--fui-select-max-items': maxVisibleItems + 0.5, ...htmlProps.style } as React.CSSProperties\n : htmlProps.style;\n\n return (\n <BaseCombobox.Portal>\n <BaseCombobox.Positioner\n side=\"bottom\"\n sideOffset={sideOffset}\n align={align}\n className={styles.positioner}\n >\n <BaseCombobox.Popup {...htmlProps} className={popupClasses} style={popupStyle}>\n {children}\n </BaseCombobox.Popup>\n </BaseCombobox.Positioner>\n </BaseCombobox.Portal>\n );\n}\n\nfunction ComboboxItem({ children, value, disabled, className, ...htmlProps }: ComboboxItemProps) {\n const { itemsRef, incrementItemsVersion } = React.useContext(ComboboxContext);\n const classes = [styles.item, className].filter(Boolean).join(' ');\n\n // Register this item's label in the registry so the input can display it\n const label = React.useMemo(() => getNodeText(children).trim() || value, [children, value]);\n React.useEffect(() => {\n const items = itemsRef.current;\n items.set(value, label);\n incrementItemsVersion();\n return () => {\n items.delete(value);\n incrementItemsVersion();\n };\n // itemsRef is a stable ref, incrementItemsVersion is a stable callback\n }, [itemsRef, incrementItemsVersion, value, label]);\n\n return (\n <BaseCombobox.Item {...htmlProps} value={value} disabled={disabled} className={classes}>\n {children}\n <BaseCombobox.ItemIndicator className={styles.itemIndicator}>\n <CheckIcon />\n </BaseCombobox.ItemIndicator>\n </BaseCombobox.Item>\n );\n}\n\nfunction ComboboxEmpty({ children, className, ...htmlProps }: ComboboxEmptyProps) {\n const classes = [styles.empty, className].filter(Boolean).join(' ');\n return <BaseCombobox.Empty {...htmlProps} className={classes}>{children}</BaseCombobox.Empty>;\n}\n\nfunction ComboboxGroup({ children, className, ...htmlProps }: ComboboxGroupProps) {\n const classes = [styles.group, className].filter(Boolean).join(' ');\n return <BaseCombobox.Group {...htmlProps} className={classes}>{children}</BaseCombobox.Group>;\n}\n\nfunction ComboboxGroupLabel({ children, className, ...htmlProps }: ComboboxGroupLabelProps) {\n const classes = [styles.groupLabel, className].filter(Boolean).join(' ');\n return <BaseCombobox.GroupLabel {...htmlProps} className={classes}>{children}</BaseCombobox.GroupLabel>;\n}\n\n// ============================================\n// Export compound component\n// ============================================\n\nexport const Combobox = Object.assign(ComboboxRoot, {\n Input: ComboboxInput,\n Trigger: ComboboxTrigger,\n Content: ComboboxContent,\n Item: ComboboxItem,\n ItemIndicator: BaseCombobox.ItemIndicator,\n Empty: ComboboxEmpty,\n Group: ComboboxGroup,\n GroupLabel: ComboboxGroupLabel,\n});\n\n// Re-export individual components\nexport {\n ComboboxRoot,\n ComboboxInput,\n ComboboxTrigger,\n ComboboxContent,\n ComboboxItem,\n ComboboxEmpty,\n ComboboxGroup,\n ComboboxGroupLabel,\n};\n"],"names":["BaseCombobox.Root","BaseCombobox.Input","BaseCombobox.Trigger","BaseCombobox.Chips","BaseCombobox.Chip","BaseCombobox.ChipRemove","BaseCombobox.Portal","BaseCombobox.Positioner","BaseCombobox.Popup","BaseCombobox.Item","BaseCombobox.ItemIndicator","BaseCombobox.Empty","BaseCombobox.Group","BaseCombobox.GroupLabel"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../../src/components/Combobox/index.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { Combobox as BaseCombobox } from '@base-ui/react/combobox';\nimport styles from './Combobox.module.scss';\n\n// ============================================\n// Types\n// ============================================\n\ninterface ComboboxCommonProps {\n children: React.ReactNode;\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n disabled?: boolean;\n required?: boolean;\n name?: string;\n placeholder?: string;\n /** Auto-highlight first matching item while filtering */\n autoHighlight?: boolean;\n}\n\nexport interface ComboboxSingleProps extends ComboboxCommonProps {\n /** Whether multiple items can be selected */\n multiple?: false;\n /** Controlled selected value */\n value?: string | null;\n /** Default selected value (uncontrolled) */\n defaultValue?: string;\n /** Called when selection changes */\n onValueChange?: (value: string | null) => void;\n /** Alias for onValueChange */\n onChange?: (value: string | null) => void;\n}\n\nexport interface ComboboxMultipleProps extends ComboboxCommonProps {\n /** Whether multiple items can be selected */\n multiple: true;\n /** Controlled selected value */\n value?: string[];\n /** Default selected value (uncontrolled) */\n defaultValue?: string[];\n /** Called when selection changes */\n onValueChange?: (value: string[]) => void;\n /** Alias for onValueChange */\n onChange?: (value: string[]) => void;\n}\n\nexport type ComboboxProps = ComboboxSingleProps | ComboboxMultipleProps;\n\nexport interface ComboboxInputProps extends React.InputHTMLAttributes<HTMLInputElement> {\n className?: string;\n /** Render the built-in chevron trigger beside the input.\n * Automatically disabled when an explicit <Combobox.Trigger /> is mounted.\n * @default true */\n showTrigger?: boolean;\n}\n\nexport interface ComboboxTriggerProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n children?: React.ReactNode;\n className?: string;\n}\n\nexport interface ComboboxContentProps extends React.HTMLAttributes<HTMLDivElement> {\n children: React.ReactNode;\n sideOffset?: number;\n align?: 'start' | 'center' | 'end';\n /** Maximum number of visible options before scrolling. Shows half of the next item as a scroll hint. @default 4 */\n maxVisibleItems?: number;\n}\n\nexport interface ComboboxItemProps extends Omit<React.HTMLAttributes<HTMLElement>, 'children'> {\n children: React.ReactNode;\n value: string;\n disabled?: boolean;\n}\n\nexport interface ComboboxEmptyProps extends React.HTMLAttributes<HTMLElement> {\n children: React.ReactNode;\n}\n\nexport interface ComboboxGroupProps extends React.HTMLAttributes<HTMLElement> {\n children: React.ReactNode;\n}\n\nexport interface ComboboxGroupLabelProps extends React.HTMLAttributes<HTMLElement> {\n children: React.ReactNode;\n}\n\n// ============================================\n// Icons\n// ============================================\n\nfunction ChevronDownIcon() {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n >\n <polyline points=\"6 9 12 15 18 9\" />\n </svg>\n );\n}\n\nfunction CheckIcon() {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n >\n <polyline points=\"20 6 9 17 4 12\" />\n </svg>\n );\n}\n\nfunction XIcon() {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"12\"\n height=\"12\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n >\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\" />\n <line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\" />\n </svg>\n );\n}\n\n// ============================================\n// Context for Combobox state\n// ============================================\n\ninterface ComboboxContextValue {\n placeholder?: string;\n multiple?: boolean;\n selectedValues: string[];\n itemsRef: React.MutableRefObject<Map<string, string>>;\n itemsVersion: number;\n incrementItemsVersion: () => void;\n explicitTriggerCount: number;\n registerTrigger: () => () => void;\n}\n\nconst ComboboxContext = React.createContext<ComboboxContextValue>({\n selectedValues: [],\n itemsRef: { current: new Map() },\n itemsVersion: 0,\n incrementItemsVersion: () => {},\n explicitTriggerCount: 0,\n registerTrigger: () => () => {},\n});\n\nfunction getNodeText(node: React.ReactNode): string {\n if (node == null || typeof node === 'boolean') return '';\n if (typeof node === 'string' || typeof node === 'number') return String(node);\n if (Array.isArray(node)) return node.map(getNodeText).join('');\n if (React.isValidElement(node))\n return getNodeText((node.props as { children?: React.ReactNode }).children);\n return '';\n}\n\n// ============================================\n// Components\n// ============================================\n\nfunction ComboboxRoot({\n children,\n value,\n defaultValue,\n onValueChange,\n onChange,\n multiple = false,\n open,\n defaultOpen,\n onOpenChange,\n disabled,\n required,\n name,\n placeholder,\n autoHighlight = true,\n}: ComboboxProps) {\n // Track selected values for chip rendering\n const [internalValue, setInternalValue] = React.useState<string | string[] | null>(\n value ?? defaultValue ?? (multiple ? [] : null)\n );\n\n // Sync with controlled value\n React.useEffect(() => {\n if (value !== undefined) {\n setInternalValue(value);\n }\n }, [value]);\n\n // Registry for item value → label mapping\n const itemsRef = React.useRef<Map<string, string>>(new Map());\n const [itemsVersion, setItemsVersion] = React.useState(0);\n const incrementItemsVersion = React.useCallback(() => {\n setItemsVersion((v) => v + 1);\n }, []);\n const [explicitTriggerCount, setExplicitTriggerCount] = React.useState(0);\n const registerTrigger = React.useCallback(() => {\n setExplicitTriggerCount((count) => count + 1);\n return () => setExplicitTriggerCount((count) => Math.max(0, count - 1));\n }, []);\n\n const handleOpenChange = React.useCallback(\n (nextOpen: boolean) => {\n onOpenChange?.(nextOpen);\n },\n [onOpenChange]\n );\n\n // Convert value → label for input display\n const itemToStringLabel = React.useCallback(\n (itemValue: string) => {\n return itemsRef.current.get(itemValue) ?? itemValue;\n },\n []\n );\n\n // Derive selected values array for chip rendering\n const currentValue = value !== undefined ? value : internalValue;\n const selectedValues = React.useMemo(() => {\n if (currentValue == null) return [];\n if (Array.isArray(currentValue)) return currentValue;\n return [currentValue];\n }, [currentValue]);\n\n const contextValue = React.useMemo(\n () => ({\n placeholder,\n multiple,\n selectedValues,\n itemsRef,\n itemsVersion,\n incrementItemsVersion,\n explicitTriggerCount,\n registerTrigger,\n }),\n [placeholder, multiple, selectedValues, itemsVersion, incrementItemsVersion, explicitTriggerCount, registerTrigger]\n );\n\n if (multiple) {\n const controlledValue = value as string[] | undefined;\n const uncontrolledValue = defaultValue as string[] | undefined;\n const emitChange = (onChange ?? onValueChange) as ((value: string[]) => void) | undefined;\n const handleValueChange = (newValue: string[]) => {\n if (controlledValue === undefined) {\n setInternalValue(newValue);\n }\n emitChange?.(newValue);\n };\n\n return (\n <ComboboxContext.Provider value={contextValue}>\n <BaseCombobox.Root<string, true>\n value={controlledValue}\n defaultValue={uncontrolledValue}\n onValueChange={handleValueChange}\n open={open}\n defaultOpen={defaultOpen}\n onOpenChange={(nextOpen) => handleOpenChange(nextOpen)}\n disabled={disabled}\n required={required}\n name={name}\n multiple\n autoHighlight={autoHighlight}\n itemToStringLabel={itemToStringLabel}\n >\n {children}\n </BaseCombobox.Root>\n </ComboboxContext.Provider>\n );\n }\n\n const controlledValue = value as string | null | undefined;\n const uncontrolledValue = defaultValue as string | undefined;\n const emitChange = (onChange ?? onValueChange) as ((value: string | null) => void) | undefined;\n const handleValueChange = (newValue: string | null) => {\n if (controlledValue === undefined) {\n setInternalValue(newValue);\n }\n emitChange?.(newValue);\n };\n\n return (\n <ComboboxContext.Provider value={contextValue}>\n <BaseCombobox.Root<string, false>\n value={controlledValue}\n defaultValue={uncontrolledValue ?? null}\n onValueChange={handleValueChange}\n open={open}\n defaultOpen={defaultOpen}\n onOpenChange={(nextOpen) => handleOpenChange(nextOpen)}\n disabled={disabled}\n required={required}\n name={name}\n multiple={false}\n autoHighlight={autoHighlight}\n itemToStringLabel={itemToStringLabel}\n >\n {children}\n </BaseCombobox.Root>\n </ComboboxContext.Provider>\n );\n}\n\nfunction ComboboxInput({ className, showTrigger = true, ...htmlProps }: ComboboxInputProps) {\n const context = React.useContext(ComboboxContext);\n const classes = [styles.input, className].filter(Boolean).join(' ');\n const renderTrigger = showTrigger && context.explicitTriggerCount === 0;\n\n if (context.multiple) {\n return (\n <div className={styles.multiContainer}>\n <div className={styles.inputWrapper}>\n <BaseCombobox.Input\n placeholder={context.selectedValues.length === 0 ? context.placeholder : undefined}\n {...htmlProps}\n className={classes}\n />\n {renderTrigger && (\n <BaseCombobox.Trigger className={styles.trigger}>\n <ChevronDownIcon />\n </BaseCombobox.Trigger>\n )}\n </div>\n {context.selectedValues.length > 0 && (\n <BaseCombobox.Chips className={styles.chips}>\n {context.selectedValues.map((chipValue) => (\n <BaseCombobox.Chip key={chipValue} className={styles.chip}>\n <span className={styles.chipLabel}>\n {context.itemsRef.current.get(chipValue) ?? chipValue}\n </span>\n <BaseCombobox.ChipRemove className={styles.chipRemove}>\n <XIcon />\n </BaseCombobox.ChipRemove>\n </BaseCombobox.Chip>\n ))}\n </BaseCombobox.Chips>\n )}\n </div>\n );\n }\n\n return (\n <div className={styles.inputWrapper}>\n <BaseCombobox.Input\n placeholder={context.placeholder}\n {...htmlProps}\n className={classes}\n />\n {renderTrigger && (\n <BaseCombobox.Trigger className={styles.trigger}>\n <ChevronDownIcon />\n </BaseCombobox.Trigger>\n )}\n </div>\n );\n}\n\nfunction ComboboxTrigger({ children, className, ...htmlProps }: ComboboxTriggerProps) {\n const { registerTrigger } = React.useContext(ComboboxContext);\n React.useEffect(() => registerTrigger(), [registerTrigger]);\n const classes = [styles.trigger, className].filter(Boolean).join(' ');\n\n return (\n <BaseCombobox.Trigger {...htmlProps} className={classes}>\n {children ?? <ChevronDownIcon />}\n </BaseCombobox.Trigger>\n );\n}\n\nfunction ComboboxContent({\n children,\n className,\n sideOffset = 4,\n align = 'start',\n maxVisibleItems,\n ...htmlProps\n}: ComboboxContentProps) {\n const popupClasses = [styles.popup, className].filter(Boolean).join(' ');\n\n const popupStyle = maxVisibleItems != null\n ? { '--fui-select-max-items': maxVisibleItems + 0.5, ...htmlProps.style } as React.CSSProperties\n : htmlProps.style;\n\n return (\n <BaseCombobox.Portal>\n <BaseCombobox.Positioner\n side=\"bottom\"\n sideOffset={sideOffset}\n align={align}\n className={styles.positioner}\n >\n <BaseCombobox.Popup {...htmlProps} className={popupClasses} style={popupStyle}>\n {children}\n </BaseCombobox.Popup>\n </BaseCombobox.Positioner>\n </BaseCombobox.Portal>\n );\n}\n\nfunction ComboboxItem({ children, value, disabled, className, ...htmlProps }: ComboboxItemProps) {\n const { itemsRef, incrementItemsVersion } = React.useContext(ComboboxContext);\n const classes = [styles.item, className].filter(Boolean).join(' ');\n\n // Register this item's label in the registry so the input can display it\n const label = React.useMemo(() => getNodeText(children).trim() || value, [children, value]);\n React.useEffect(() => {\n const items = itemsRef.current;\n items.set(value, label);\n incrementItemsVersion();\n return () => {\n items.delete(value);\n incrementItemsVersion();\n };\n // itemsRef is a stable ref, incrementItemsVersion is a stable callback\n }, [itemsRef, incrementItemsVersion, value, label]);\n\n return (\n <BaseCombobox.Item {...htmlProps} value={value} disabled={disabled} className={classes}>\n {children}\n <BaseCombobox.ItemIndicator className={styles.itemIndicator}>\n <CheckIcon />\n </BaseCombobox.ItemIndicator>\n </BaseCombobox.Item>\n );\n}\n\nfunction ComboboxEmpty({ children, className, ...htmlProps }: ComboboxEmptyProps) {\n const classes = [styles.empty, className].filter(Boolean).join(' ');\n return <BaseCombobox.Empty {...htmlProps} className={classes}>{children}</BaseCombobox.Empty>;\n}\n\nfunction ComboboxGroup({ children, className, ...htmlProps }: ComboboxGroupProps) {\n const classes = [styles.group, className].filter(Boolean).join(' ');\n return <BaseCombobox.Group {...htmlProps} className={classes}>{children}</BaseCombobox.Group>;\n}\n\nfunction ComboboxGroupLabel({ children, className, ...htmlProps }: ComboboxGroupLabelProps) {\n const classes = [styles.groupLabel, className].filter(Boolean).join(' ');\n return <BaseCombobox.GroupLabel {...htmlProps} className={classes}>{children}</BaseCombobox.GroupLabel>;\n}\n\n// ============================================\n// Export compound component\n// ============================================\n\nexport const Combobox = Object.assign(ComboboxRoot, {\n Input: ComboboxInput,\n Trigger: ComboboxTrigger,\n Content: ComboboxContent,\n Item: ComboboxItem,\n ItemIndicator: BaseCombobox.ItemIndicator,\n Empty: ComboboxEmpty,\n Group: ComboboxGroup,\n GroupLabel: ComboboxGroupLabel,\n});\n\n// Re-export individual components\nexport {\n ComboboxRoot,\n ComboboxInput,\n ComboboxTrigger,\n ComboboxContent,\n ComboboxItem,\n ComboboxEmpty,\n ComboboxGroup,\n ComboboxGroupLabel,\n};\n"],"names":["controlledValue","uncontrolledValue","emitChange","handleValueChange","BaseCombobox.Root","BaseCombobox.Input","BaseCombobox.Trigger","BaseCombobox.Chips","BaseCombobox.Chip","BaseCombobox.ChipRemove","BaseCombobox.Portal","BaseCombobox.Positioner","BaseCombobox.Popup","BaseCombobox.Item","BaseCombobox.ItemIndicator","BaseCombobox.Empty","BaseCombobox.Group","BaseCombobox.GroupLabel"],"mappings":"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"}