@oneplatformdev/ui 0.1.99-beta.3 → 0.1.99-beta.300

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 (401) hide show
  1. package/.storybook/Wrappers.js.map +1 -1
  2. package/Accordion/Accordion.d.ts +1 -1
  3. package/Accordion/Accordion.d.ts.map +1 -1
  4. package/Accordion/Accordion.js +48 -26
  5. package/Accordion/Accordion.js.map +1 -1
  6. package/Alert/Alert.js.map +1 -1
  7. package/Alert/alertVariants.js.map +1 -1
  8. package/AlertDialog/AlertDialog.js.map +1 -1
  9. package/AlertDialog/AlertDialog.stories.js +66 -24
  10. package/AlertDialog/AlertDialog.stories.js.map +1 -1
  11. package/AlertDialog/AlertDialogRoot.d.ts.map +1 -1
  12. package/AlertDialog/AlertDialogRoot.js +25 -25
  13. package/AlertDialog/AlertDialogRoot.js.map +1 -1
  14. package/AreaChart/AreaChart.js.map +1 -1
  15. package/Aside/Aside.js.map +1 -1
  16. package/Aside/AsideSidebar.js.map +1 -1
  17. package/AspectRatio/AspectRatio.js.map +1 -1
  18. package/Avatar/Avatar.js.map +1 -1
  19. package/Badge/Badge.js.map +1 -1
  20. package/Badge/badgeVariants.d.ts +1 -1
  21. package/Badge/badgeVariants.js.map +1 -1
  22. package/Breadcrumb/Breadcrumb.js.map +1 -1
  23. package/Button/Button.d.ts +6 -6
  24. package/Button/Button.d.ts.map +1 -1
  25. package/Button/Button.js +46 -45
  26. package/Button/Button.js.map +1 -1
  27. package/Button/Button.stories.js +57 -62
  28. package/Button/Button.stories.js.map +1 -1
  29. package/Button/Button.types.d.ts +24 -1
  30. package/Button/Button.types.d.ts.map +1 -1
  31. package/Button/Button.utils.d.ts +3 -0
  32. package/Button/Button.utils.d.ts.map +1 -0
  33. package/Button/Button.utils.js +14 -0
  34. package/Button/Button.utils.js.map +1 -0
  35. package/Button/ButtonCounterBadge.d.ts +7 -0
  36. package/Button/ButtonCounterBadge.d.ts.map +1 -0
  37. package/Button/ButtonCounterBadge.js +20 -0
  38. package/Button/ButtonCounterBadge.js.map +1 -0
  39. package/Button/buttonVariants.d.ts +11 -20
  40. package/Button/buttonVariants.d.ts.map +1 -1
  41. package/Button/buttonVariants.js +108 -12
  42. package/Button/buttonVariants.js.map +1 -1
  43. package/Button/index.d.ts +1 -0
  44. package/Button/index.d.ts.map +1 -1
  45. package/Button/index.js +6 -3
  46. package/Button/index.js.map +1 -1
  47. package/ButtonIcon/ButtonIcon.d.ts +30 -19
  48. package/ButtonIcon/ButtonIcon.d.ts.map +1 -1
  49. package/ButtonIcon/ButtonIcon.js +69 -46
  50. package/ButtonIcon/ButtonIcon.js.map +1 -1
  51. package/ButtonIcon/ButtonIcon.stories.js +123 -78
  52. package/ButtonIcon/ButtonIcon.stories.js.map +1 -1
  53. package/ButtonIcon/ButtonIcon.types.d.ts +2 -1
  54. package/ButtonIcon/ButtonIcon.types.d.ts.map +1 -1
  55. package/ButtonIcon/buttonIconVariants.d.ts +2 -2
  56. package/ButtonIcon/buttonIconVariants.d.ts.map +1 -1
  57. package/ButtonIcon/buttonIconVariants.js +9 -7
  58. package/ButtonIcon/buttonIconVariants.js.map +1 -1
  59. package/CHANGELOG.md +3502 -1536
  60. package/Calendar/Calendar.js +0 -1
  61. package/Calendar/Calendar.js.map +1 -1
  62. package/Card/Card.d.ts.map +1 -1
  63. package/Card/Card.js +22 -21
  64. package/Card/Card.js.map +1 -1
  65. package/Carousel/Carousel.js +6 -7
  66. package/Carousel/Carousel.js.map +1 -1
  67. package/Chart/Chart.js.map +1 -1
  68. package/Checkbox/Checkbox.d.ts.map +1 -1
  69. package/Checkbox/Checkbox.js +36 -35
  70. package/Checkbox/Checkbox.js.map +1 -1
  71. package/Checkbox/Checkbox.stories.js +108 -0
  72. package/Checkbox/Checkbox.stories.js.map +1 -0
  73. package/Checkbox/Checkbox.types.d.ts +2 -1
  74. package/Checkbox/Checkbox.types.d.ts.map +1 -1
  75. package/Collapsible/Collapsible.js.map +1 -1
  76. package/Combobox/Combobox.d.ts +4 -2
  77. package/Combobox/Combobox.d.ts.map +1 -1
  78. package/Combobox/Combobox.js +222 -195
  79. package/Combobox/Combobox.js.map +1 -1
  80. package/Combobox/Combobox.stories.js +347 -0
  81. package/Combobox/Combobox.stories.js.map +1 -0
  82. package/Combobox/Combobox.types.d.ts +88 -24
  83. package/Combobox/Combobox.types.d.ts.map +1 -1
  84. package/Combobox/Combobox.types.js +4 -1
  85. package/Combobox/Combobox.types.js.map +1 -1
  86. package/Combobox/ComboboxOptionItem.d.ts +5 -3
  87. package/Combobox/ComboboxOptionItem.d.ts.map +1 -1
  88. package/Combobox/ComboboxOptionItem.js +80 -23
  89. package/Combobox/ComboboxOptionItem.js.map +1 -1
  90. package/Combobox/ComboboxRenderContent.d.ts +28 -0
  91. package/Combobox/ComboboxRenderContent.d.ts.map +1 -0
  92. package/Combobox/ComboboxRenderContent.js +142 -0
  93. package/Combobox/ComboboxRenderContent.js.map +1 -0
  94. package/Combobox/ComboboxRenderOptions.d.ts +4 -0
  95. package/Combobox/ComboboxRenderOptions.d.ts.map +1 -0
  96. package/Combobox/ComboboxRenderOptions.js +53 -0
  97. package/Combobox/ComboboxRenderOptions.js.map +1 -0
  98. package/Combobox/ComboboxRenderTrigger.d.ts +18 -0
  99. package/Combobox/ComboboxRenderTrigger.d.ts.map +1 -0
  100. package/Combobox/ComboboxRenderTrigger.js +118 -0
  101. package/Combobox/ComboboxRenderTrigger.js.map +1 -0
  102. package/Command/Command.d.ts +6 -1
  103. package/Command/Command.d.ts.map +1 -1
  104. package/Command/Command.js +63 -46
  105. package/Command/Command.js.map +1 -1
  106. package/ContextPopover/ContextDropdownMenu.d.ts +12 -0
  107. package/ContextPopover/ContextDropdownMenu.d.ts.map +1 -0
  108. package/ContextPopover/ContextDropdownMenu.js +41 -0
  109. package/ContextPopover/ContextDropdownMenu.js.map +1 -0
  110. package/ContextPopover/ContextPopover.d.ts +12 -0
  111. package/ContextPopover/ContextPopover.d.ts.map +1 -0
  112. package/ContextPopover/ContextPopover.js +34 -0
  113. package/ContextPopover/ContextPopover.js.map +1 -0
  114. package/ContextPopover/index.d.ts +4 -0
  115. package/ContextPopover/index.d.ts.map +1 -0
  116. package/ContextPopover/index.js +9 -0
  117. package/ContextPopover/index.js.map +1 -0
  118. package/ContextPopover/useContextPopoverHandler.d.ts +14 -0
  119. package/ContextPopover/useContextPopoverHandler.d.ts.map +1 -0
  120. package/ContextPopover/useContextPopoverHandler.js +21 -0
  121. package/ContextPopover/useContextPopoverHandler.js.map +1 -0
  122. package/DataTable/DataTable.js +14 -15
  123. package/DataTable/DataTable.js.map +1 -1
  124. package/DataTable/DataTableColumnFilter.js +6 -7
  125. package/DataTable/DataTableColumnFilter.js.map +1 -1
  126. package/DataTable/useDataTable.js.map +1 -1
  127. package/DatePicker/DatePicker.d.ts.map +1 -1
  128. package/DatePicker/DatePicker.js +31 -30
  129. package/DatePicker/DatePicker.js.map +1 -1
  130. package/Dialog/Dialog.d.ts +4 -1
  131. package/Dialog/Dialog.d.ts.map +1 -1
  132. package/Dialog/Dialog.js +84 -42
  133. package/Dialog/Dialog.js.map +1 -1
  134. package/Dialog/Dialog.stories.js +108 -0
  135. package/Dialog/Dialog.stories.js.map +1 -0
  136. package/Dialog/Dialog.types.d.ts +4 -0
  137. package/Dialog/Dialog.types.d.ts.map +1 -0
  138. package/Dialog/Dialog.types.js +2 -0
  139. package/Dialog/Dialog.types.js.map +1 -0
  140. package/Dialog/DialogOverlayScope.js.map +1 -1
  141. package/Dialog/index.d.ts +1 -0
  142. package/Dialog/index.d.ts.map +1 -1
  143. package/Dialog/useDialogClosePosition.d.ts +11 -0
  144. package/Dialog/useDialogClosePosition.d.ts.map +1 -0
  145. package/Dialog/useDialogClosePosition.js +50 -0
  146. package/Dialog/useDialogClosePosition.js.map +1 -0
  147. package/Drawer/Drawer.js.map +1 -1
  148. package/DropdownMenu/DropdownMenu.d.ts.map +1 -1
  149. package/DropdownMenu/DropdownMenu.js +33 -20
  150. package/DropdownMenu/DropdownMenu.js.map +1 -1
  151. package/Dropzone/Dropzone.d.ts.map +1 -1
  152. package/Dropzone/Dropzone.js +493 -132
  153. package/Dropzone/Dropzone.js.map +1 -1
  154. package/Dropzone/Dropzone.stories.js +387 -0
  155. package/Dropzone/Dropzone.stories.js.map +1 -0
  156. package/Dropzone/Dropzone.types.d.ts +29 -1
  157. package/Dropzone/Dropzone.types.d.ts.map +1 -1
  158. package/Dropzone/Dropzone.types.js +32 -9
  159. package/Dropzone/Dropzone.types.js.map +1 -1
  160. package/Dropzone/DropzoneCoverPreview.d.ts +14 -0
  161. package/Dropzone/DropzoneCoverPreview.d.ts.map +1 -0
  162. package/Dropzone/DropzoneCoverPreview.js +56 -0
  163. package/Dropzone/DropzoneCoverPreview.js.map +1 -0
  164. package/Dropzone/DropzoneFileCard.d.ts +17 -0
  165. package/Dropzone/DropzoneFileCard.d.ts.map +1 -0
  166. package/Dropzone/DropzoneFileCard.js +39 -0
  167. package/Dropzone/DropzoneFileCard.js.map +1 -0
  168. package/Dropzone/DropzoneFilePreview.d.ts.map +1 -1
  169. package/Dropzone/DropzoneFilePreview.js +46 -26
  170. package/Dropzone/DropzoneFilePreview.js.map +1 -1
  171. package/Dropzone/DropzoneSinglePickPreview.d.ts +10 -2
  172. package/Dropzone/DropzoneSinglePickPreview.d.ts.map +1 -1
  173. package/Dropzone/DropzoneSinglePickPreview.js +206 -22
  174. package/Dropzone/DropzoneSinglePickPreview.js.map +1 -1
  175. package/Dropzone/DropzoneUtils.d.ts +1 -0
  176. package/Dropzone/DropzoneUtils.d.ts.map +1 -1
  177. package/Dropzone/DropzoneUtils.js +17 -6
  178. package/Dropzone/DropzoneUtils.js.map +1 -1
  179. package/Dropzone/icons/file-csv.svg.js +5 -0
  180. package/Dropzone/icons/file-csv.svg.js.map +1 -0
  181. package/Dropzone/icons/file-doc.svg.js +5 -0
  182. package/Dropzone/icons/file-doc.svg.js.map +1 -0
  183. package/Dropzone/icons/file-docx.svg.js +5 -0
  184. package/Dropzone/icons/file-docx.svg.js.map +1 -0
  185. package/Dropzone/icons/file-jpg.svg.js +5 -0
  186. package/Dropzone/icons/file-jpg.svg.js.map +1 -0
  187. package/Dropzone/icons/file-pdf.svg.js +5 -0
  188. package/Dropzone/icons/file-pdf.svg.js.map +1 -0
  189. package/Dropzone/icons/file-png.svg.js +5 -0
  190. package/Dropzone/icons/file-png.svg.js.map +1 -0
  191. package/Dropzone/icons/file-ppt.svg.js +5 -0
  192. package/Dropzone/icons/file-ppt.svg.js.map +1 -0
  193. package/Dropzone/icons/file-pptx.svg.js +5 -0
  194. package/Dropzone/icons/file-pptx.svg.js.map +1 -0
  195. package/Dropzone/icons/file-rar.svg.js +5 -0
  196. package/Dropzone/icons/file-rar.svg.js.map +1 -0
  197. package/Dropzone/icons/file-svg.svg.js +5 -0
  198. package/Dropzone/icons/file-svg.svg.js.map +1 -0
  199. package/Dropzone/icons/file-webp.svg.js +5 -0
  200. package/Dropzone/icons/file-webp.svg.js.map +1 -0
  201. package/Dropzone/icons/file-xls.svg.js +5 -0
  202. package/Dropzone/icons/file-xls.svg.js.map +1 -0
  203. package/Dropzone/icons/file-xlsx.svg.js +5 -0
  204. package/Dropzone/icons/file-xlsx.svg.js.map +1 -0
  205. package/Dropzone/icons/file-zip.svg.js +5 -0
  206. package/Dropzone/icons/file-zip.svg.js.map +1 -0
  207. package/Dropzone/index.js +8 -5
  208. package/Form/Form.d.ts.map +1 -1
  209. package/Form/Form.js +28 -29
  210. package/Form/Form.js.map +1 -1
  211. package/Form/FormRenderControl.d.ts +1 -1
  212. package/Form/FormRenderControl.d.ts.map +1 -1
  213. package/Form/FormRenderControl.js +54 -14
  214. package/Form/FormRenderControl.js.map +1 -1
  215. package/Form/FormRenderControl.types.d.ts +6 -2
  216. package/Form/FormRenderControl.types.d.ts.map +1 -1
  217. package/Form/Form_old.js +4 -5
  218. package/Form/Form_old.js.map +1 -1
  219. package/FormCheckbox/FormCheckbox.js +4 -4
  220. package/FormCheckbox/FormCheckbox.js.map +1 -1
  221. package/FormCombobox/FormCombobox.d.ts +4 -2
  222. package/FormCombobox/FormCombobox.d.ts.map +1 -1
  223. package/FormCombobox/FormCombobox.js +29 -16
  224. package/FormCombobox/FormCombobox.js.map +1 -1
  225. package/FormCombobox/FormCombobox.types.d.ts +6 -2
  226. package/FormCombobox/FormCombobox.types.d.ts.map +1 -1
  227. package/FormDatePicker/FormDatePicker.d.ts.map +1 -1
  228. package/FormDatePicker/FormDatePicker.js +18 -16
  229. package/FormDatePicker/FormDatePicker.js.map +1 -1
  230. package/FormDropzone/FormDropzone.d.ts.map +1 -1
  231. package/FormDropzone/FormDropzone.js +13 -11
  232. package/FormDropzone/FormDropzone.js.map +1 -1
  233. package/FormInput/FormInput.d.ts.map +1 -1
  234. package/FormInput/FormInput.js +47 -27
  235. package/FormInput/FormInput.js.map +1 -1
  236. package/FormInput/FormInput.stories.js +80 -0
  237. package/FormInput/FormInput.stories.js.map +1 -0
  238. package/FormInput/FormInput.types.d.ts +1 -0
  239. package/FormInput/FormInput.types.d.ts.map +1 -1
  240. package/FormRadio/FormRadio.js.map +1 -1
  241. package/FormSelect/FormSelect.d.ts.map +1 -1
  242. package/FormSelect/FormSelect.js +19 -18
  243. package/FormSelect/FormSelect.js.map +1 -1
  244. package/FormTextarea/FormTextarea.d.ts.map +1 -1
  245. package/FormTextarea/FormTextarea.js +15 -12
  246. package/FormTextarea/FormTextarea.js.map +1 -1
  247. package/Header/Header.js.map +1 -1
  248. package/HoverCard/HoverCard.js.map +1 -1
  249. package/InfoBlock/InfoBlock.d.ts +7 -0
  250. package/InfoBlock/InfoBlock.d.ts.map +1 -0
  251. package/InfoBlock/InfoBlock.js +28 -0
  252. package/InfoBlock/InfoBlock.js.map +1 -0
  253. package/InfoBlock/InfoBlock.stories.js +50 -0
  254. package/InfoBlock/InfoBlock.stories.js.map +1 -0
  255. package/InfoBlock/InfoBlock.types.d.ts +9 -0
  256. package/InfoBlock/InfoBlock.types.d.ts.map +1 -0
  257. package/InfoBlock/InfoBlock.types.js +2 -0
  258. package/InfoBlock/InfoBlock.types.js.map +1 -0
  259. package/InfoBlock/index.d.ts +3 -0
  260. package/InfoBlock/index.d.ts.map +1 -0
  261. package/InfoBlock/index.js +5 -0
  262. package/InfoBlock/index.js.map +1 -0
  263. package/InfoBlock/infoBlockVariants.d.ts +6 -0
  264. package/InfoBlock/infoBlockVariants.d.ts.map +1 -0
  265. package/InfoBlock/infoBlockVariants.js +27 -0
  266. package/InfoBlock/infoBlockVariants.js.map +1 -0
  267. package/Input/Input.d.ts.map +1 -1
  268. package/Input/Input.js +105 -54
  269. package/Input/Input.js.map +1 -1
  270. package/Input/Input.stories.js +225 -0
  271. package/Input/Input.stories.js.map +1 -0
  272. package/Input/Input.types.d.ts +5 -0
  273. package/Input/Input.types.d.ts.map +1 -1
  274. package/Input/inputVariants.d.ts.map +1 -1
  275. package/Input/inputVariants.js +5 -4
  276. package/Input/inputVariants.js.map +1 -1
  277. package/InputOTP/InputOTP.d.ts.map +1 -1
  278. package/InputOTP/InputOTP.js.map +1 -1
  279. package/LICENSE +21 -21
  280. package/Label/Label.js.map +1 -1
  281. package/Label/labelVariants.js.map +1 -1
  282. package/LazyLoader/LazyLoader.js +4 -5
  283. package/LazyLoader/LazyLoader.js.map +1 -1
  284. package/LoadedIcon/LoadedIcon.d.ts.map +1 -1
  285. package/LoadedIcon/LoadedIcon.js +3 -1
  286. package/LoadedIcon/LoadedIcon.js.map +1 -1
  287. package/LoadingMask/LoadingMask.d.ts +1 -2
  288. package/LoadingMask/LoadingMask.d.ts.map +1 -1
  289. package/LoadingMask/LoadingMask.js +8 -8
  290. package/LoadingMask/LoadingMask.js.map +1 -1
  291. package/LoadingMask/LoadingMask.types.d.ts +1 -0
  292. package/LoadingMask/LoadingMask.types.d.ts.map +1 -1
  293. package/LoadingMask/RenderLoadingMask.js.map +1 -1
  294. package/LoadingProgress/LoadingProgress.js.map +1 -1
  295. package/LoadingProgress/loadingProgressVariants.js.map +1 -1
  296. package/Menubar/Menubar.js.map +1 -1
  297. package/NavigationMenu/NavigationMenu.js.map +1 -1
  298. package/NavigationMenu/navigationMenuVariants.js.map +1 -1
  299. package/Pagination/Pagination.js +0 -1
  300. package/Pagination/Pagination.js.map +1 -1
  301. package/Popover/Popover.d.ts +3 -1
  302. package/Popover/Popover.d.ts.map +1 -1
  303. package/Popover/Popover.js +15 -10
  304. package/Popover/Popover.js.map +1 -1
  305. package/Progress/Progress.js.map +1 -1
  306. package/README.md +7 -7
  307. package/Radio/Radio.js.map +1 -1
  308. package/RadioGroup/RadioGroup.js.map +1 -1
  309. package/Resizable/Resizable.d.ts +5 -20
  310. package/Resizable/Resizable.d.ts.map +1 -1
  311. package/Resizable/Resizable.js +48 -31
  312. package/Resizable/Resizable.js.map +1 -1
  313. package/Resizable/Resizable.stories.js +140 -0
  314. package/Resizable/Resizable.stories.js.map +1 -0
  315. package/ScrollArea/ScrollArea.d.ts +5 -1
  316. package/ScrollArea/ScrollArea.d.ts.map +1 -1
  317. package/ScrollArea/ScrollArea.js +23 -17
  318. package/ScrollArea/ScrollArea.js.map +1 -1
  319. package/Search/Search.d.ts.map +1 -1
  320. package/Search/Search.js +40 -31
  321. package/Search/Search.js.map +1 -1
  322. package/Search/Search.stories.js +17 -0
  323. package/Search/Search.stories.js.map +1 -0
  324. package/Select/Select.d.ts.map +1 -1
  325. package/Select/Select.js +53 -49
  326. package/Select/Select.js.map +1 -1
  327. package/Select/Select.stories.js.map +1 -1
  328. package/Select/Select.types.d.ts +4 -0
  329. package/Select/Select.types.d.ts.map +1 -1
  330. package/Select/SelectRoot.d.ts.map +1 -1
  331. package/Select/SelectRoot.js +79 -66
  332. package/Select/SelectRoot.js.map +1 -1
  333. package/Separator/Separator.js.map +1 -1
  334. package/Sheet/Sheet.js.map +1 -1
  335. package/Sidebar/Sidebar.js +20 -21
  336. package/Sidebar/Sidebar.js.map +1 -1
  337. package/Skeleton/Skeleton.js.map +1 -1
  338. package/Slider/Slider.js.map +1 -1
  339. package/Sonner/Sonner.js.map +1 -1
  340. package/Switch/Switch.d.ts +1 -1
  341. package/Switch/Switch.d.ts.map +1 -1
  342. package/Switch/Switch.js +19 -9
  343. package/Switch/Switch.js.map +1 -1
  344. package/Switch/Switch.stories.js +62 -0
  345. package/Switch/Switch.stories.js.map +1 -0
  346. package/Table/Table.js.map +1 -1
  347. package/TablePagination/TablePagination.js +17 -21
  348. package/TablePagination/TablePagination.js.map +1 -1
  349. package/Tabs/Tabs.js.map +1 -1
  350. package/Tabs/TabsRoot.js.map +1 -1
  351. package/Textarea/Textarea.d.ts.map +1 -1
  352. package/Textarea/Textarea.js +52 -47
  353. package/Textarea/Textarea.js.map +1 -1
  354. package/Textarea/Textarea.stories.js +12 -0
  355. package/Textarea/Textarea.stories.js.map +1 -0
  356. package/Textarea/Textarea.types.d.ts +3 -1
  357. package/Textarea/Textarea.types.d.ts.map +1 -1
  358. package/Textarea/useAutosizeTextArea.d.ts +1 -1
  359. package/Textarea/useAutosizeTextArea.d.ts.map +1 -1
  360. package/Textarea/useAutosizeTextArea.js.map +1 -1
  361. package/Theme/ThemeModeToggle.js +3 -4
  362. package/Theme/ThemeModeToggle.js.map +1 -1
  363. package/Theme/ThemeProvider.js.map +1 -1
  364. package/Toast/Toast.d.ts +1 -1
  365. package/Toast/Toast.js.map +1 -1
  366. package/Toast/toast.constants.js.map +1 -1
  367. package/Toast/toastVariants.d.ts +1 -1
  368. package/Toast/toastVariants.js.map +1 -1
  369. package/Toast/useToast.js.map +1 -1
  370. package/Toaster/Toaster.js.map +1 -1
  371. package/Toggle/Toggle.js.map +1 -1
  372. package/ToggleGroup/ToggleGroup.js.map +1 -1
  373. package/Tooltip/QuestionMarkIcon.svg.js +6 -0
  374. package/Tooltip/QuestionMarkIcon.svg.js.map +1 -0
  375. package/Tooltip/Tooltip.d.ts.map +1 -1
  376. package/Tooltip/Tooltip.js +52 -32
  377. package/Tooltip/Tooltip.js.map +1 -1
  378. package/Tooltip/Tooltip.types.d.ts +10 -0
  379. package/Tooltip/Tooltip.types.d.ts.map +1 -1
  380. package/Tooltip/TooltipRoot.js.map +1 -1
  381. package/Tooltip/tooltipVariants.d.ts +4 -0
  382. package/Tooltip/tooltipVariants.d.ts.map +1 -0
  383. package/Tooltip/tooltipVariants.js +23 -0
  384. package/Tooltip/tooltipVariants.js.map +1 -0
  385. package/index.d.ts +2 -0
  386. package/index.d.ts.map +1 -1
  387. package/index.js +357 -343
  388. package/index.js.map +1 -1
  389. package/package.json +13 -6
  390. package/styles.css +1 -0
  391. package/vite-env.d.js +2 -0
  392. package/vite-env.d.js.map +1 -0
  393. package/vite-env.d.ts +7 -0
  394. package/Button/Button.s.d.ts +0 -83
  395. package/Button/Button.s.d.ts.map +0 -1
  396. package/Button/Button.s.js +0 -163
  397. package/Button/Button.s.js.map +0 -1
  398. package/Combobox/ComboboxOptions.d.ts +0 -4
  399. package/Combobox/ComboboxOptions.d.ts.map +0 -1
  400. package/Combobox/ComboboxOptions.js +0 -65
  401. package/Combobox/ComboboxOptions.js.map +0 -1
@@ -0,0 +1,347 @@
1
+ import { jsx as a, jsxs as m } from "react/jsx-runtime";
2
+ import { useState as y, useMemo as x } from "react";
3
+ import { Combobox as g } from "./Combobox.js";
4
+ const p = (e) => new Promise((t) => setTimeout(t, e)), v = (e = []) => {
5
+ const t = [], l = (n) => {
6
+ if (n?.length)
7
+ for (const o of n)
8
+ t.push(o), o.items?.length && l(o.items);
9
+ };
10
+ return l(e), t;
11
+ }, b = (e, t = 150) => async ({ search: l }) => {
12
+ await p(t);
13
+ const n = (l ?? "").trim().toLowerCase();
14
+ if (!n) return e;
15
+ const o = v(e), d = new Set(
16
+ o.filter((s) => String(s.label).toLowerCase().includes(n)).map((s) => String(s.value))
17
+ ), i = (s) => s.map((c) => {
18
+ const h = c.items?.length ? i(c.items) : void 0;
19
+ return !(d.has(String(c.value)) || String(c.label).toLowerCase().includes(n)) && !h?.length ? null : { ...c, items: h };
20
+ }).filter(Boolean);
21
+ return i(e);
22
+ }, C = (e, t) => {
23
+ const l = (t ?? "").trim().toLowerCase();
24
+ if (!l) return e;
25
+ const n = v(e), o = new Set(
26
+ n.filter((i) => String(i.label).toLowerCase().includes(l)).map((i) => String(i.value))
27
+ ), d = (i) => i.map((s) => {
28
+ const c = s.items?.length ? d(s.items) : void 0;
29
+ return !(o.has(String(s.value)) || String(s.label).toLowerCase().includes(l)) && !c?.length ? null : { ...s, items: c };
30
+ }).filter(Boolean);
31
+ return d(e);
32
+ }, N = (e, t = 250, l = 20) => async ({ search: n, offset: o = 0 }) => {
33
+ await p(t);
34
+ const d = C(e, n), i = v(d);
35
+ return {
36
+ data: i.slice(o, o + l),
37
+ total: i.length
38
+ };
39
+ }, u = [
40
+ { value: "ua", label: "Ukraine" },
41
+ { value: "pl", label: "Poland" },
42
+ { value: "de", label: "Germany" },
43
+ { value: "fr", label: "France" },
44
+ { value: "es", label: "Spain" },
45
+ { value: "it", label: "Italy" }
46
+ ], O = Array.from({ length: 120 }).map((e, t) => ({
47
+ value: `option-${t + 1}`,
48
+ label: `Option ${t + 1}`
49
+ })), f = [
50
+ {
51
+ value: "europe",
52
+ label: "Europe",
53
+ items: [
54
+ {
55
+ value: "fr",
56
+ label: "France",
57
+ items: [
58
+ {
59
+ value: "paris",
60
+ label: "Paris (Île-de-France)",
61
+ items: [
62
+ { value: "paris-1", label: "Paris 1st arrondissement" },
63
+ { value: "paris-3", label: "Paris 3rd arrondissement" },
64
+ { value: "paris-10", label: "Paris 10th arrondissement" }
65
+ ]
66
+ },
67
+ { value: "marseille", label: "Marseille (Provence-Alpes-Côte d'Azur)" },
68
+ {
69
+ value: "lyon",
70
+ label: "Lyon (Auvergne-Rhône-Alpes)",
71
+ items: [
72
+ { value: "lyon-presquile", label: "Presqu'île (1st/2nd)" },
73
+ { value: "lyon-vieux", label: "Vieux Lyon" }
74
+ ]
75
+ },
76
+ { value: "toulouse", label: "Toulouse (Occitanie)" },
77
+ { value: "bordeaux", label: "Bordeaux (Nouvelle-Aquitaine)" },
78
+ { value: "strasbourg", label: "Strasbourg (Grand Est)" },
79
+ {
80
+ value: "rennes",
81
+ label: "Rennes (Brittany)",
82
+ items: [
83
+ { value: "rennes-centre", label: "Rennes Centre" },
84
+ { value: "rennes-beauregard", label: "Beauregard" }
85
+ ]
86
+ }
87
+ ]
88
+ },
89
+ { value: "ua", label: "Ukraine" },
90
+ { value: "pl", label: "Poland" },
91
+ { value: "de", label: "Germany" }
92
+ ]
93
+ },
94
+ {
95
+ value: "north-america",
96
+ label: "North America",
97
+ items: [
98
+ { value: "us", label: "United States" },
99
+ { value: "ca", label: "Canada" },
100
+ { value: "mx", label: "Mexico" },
101
+ { value: "north-america-long", label: "To long option to test wrapping. ".repeat(3) },
102
+ {
103
+ value: "north-america-long-single",
104
+ label: "To long option to test wrapping. ".replace(/ /g, "_").repeat(3)
105
+ }
106
+ ]
107
+ }
108
+ ], S = (e) => e.flatMap((t) => [
109
+ t,
110
+ ...t.items ? S(t.items) : []
111
+ ]);
112
+ function r({ initialValue: e = "", ...t }) {
113
+ const [l, n] = y(e), o = x(
114
+ () => t.loadData,
115
+ // eslint-disable-next-line react-hooks/exhaustive-deps
116
+ []
117
+ );
118
+ return /* @__PURE__ */ m("div", { className: "max-w-sm", children: [
119
+ /* @__PURE__ */ a(
120
+ g,
121
+ {
122
+ type: "single",
123
+ ...t,
124
+ value: l,
125
+ onChange: n,
126
+ loadData: o,
127
+ defaultNodeMatched: !0
128
+ }
129
+ ),
130
+ /* @__PURE__ */ m("div", { className: "mt-3 text-xs text-muted-foreground", children: [
131
+ "value: ",
132
+ /* @__PURE__ */ a("span", { className: "font-mono", children: String(l || "") })
133
+ ] })
134
+ ] });
135
+ }
136
+ function w({
137
+ initialValue: e = [],
138
+ ...t
139
+ }) {
140
+ const [l, n] = y(e), o = x(() => t.loadData, []);
141
+ return /* @__PURE__ */ m("div", { className: "max-w-sm", children: [
142
+ /* @__PURE__ */ a(
143
+ g,
144
+ {
145
+ ...t,
146
+ type: "multi",
147
+ value: l,
148
+ onChange: n,
149
+ loadData: o
150
+ }
151
+ ),
152
+ /* @__PURE__ */ m("div", { className: "mt-3 text-xs text-muted-foreground", children: [
153
+ "value: ",
154
+ /* @__PURE__ */ a("span", { className: "font-mono", children: (l || []).join(", ") })
155
+ ] })
156
+ ] });
157
+ }
158
+ const D = {
159
+ title: "Combobox",
160
+ component: g,
161
+ parameters: {
162
+ layout: "centered"
163
+ },
164
+ args: {
165
+ placeholder: "Select option...",
166
+ searchLabel: "Type to search...",
167
+ emptyLabel: "No options",
168
+ disabled: !1,
169
+ loadData: b(u, 250)
170
+ },
171
+ argTypes: {
172
+ loadData: { control: !1 },
173
+ onChange: { control: !1 },
174
+ onMount: { control: !1 },
175
+ emptyAction: { control: !1 },
176
+ commandInputAction: { control: !1 },
177
+ listHeadAction: { control: !1 },
178
+ options: { control: !1 },
179
+ value: { control: !1 }
180
+ },
181
+ decorators: [
182
+ (e) => /* @__PURE__ */ a("div", { className: "p-6 w-[420px]", children: /* @__PURE__ */ a(e, {}) })
183
+ ]
184
+ }, P = {
185
+ render: (e) => /* @__PURE__ */ a(r, { ...e })
186
+ }, F = {
187
+ render: (e) => /* @__PURE__ */ a(r, { ...e, initialValue: "pl" })
188
+ }, V = {
189
+ args: { disabled: !0 },
190
+ render: (e) => /* @__PURE__ */ a(r, { ...e, initialValue: "de" })
191
+ }, k = {
192
+ args: {
193
+ options: u,
194
+ loadData: async () => u
195
+ },
196
+ render: (e) => /* @__PURE__ */ a(r, { ...e })
197
+ }, B = {
198
+ args: {
199
+ loadData: b(u, 1200)
200
+ },
201
+ render: (e) => /* @__PURE__ */ a(r, { ...e })
202
+ }, I = {
203
+ args: {
204
+ loadData: async () => u,
205
+ onMount: async (e) => {
206
+ e.setOpen(!0), e.setOptions([]), e.setLoading(!0), await p(1200), e.setOptions(u), e.setLoading(!1);
207
+ }
208
+ },
209
+ render: (e) => /* @__PURE__ */ a(r, { ...e })
210
+ }, E = {
211
+ args: {
212
+ emptyLabel: "Nothing found",
213
+ emptyAction: (e) => {
214
+ const t = !!e.search?.trim();
215
+ return /* @__PURE__ */ a(
216
+ "button",
217
+ {
218
+ type: "button",
219
+ className: "inline-flex items-center justify-center rounded-md border px-3 py-1.5 text-sm",
220
+ disabled: !t,
221
+ onClick: () => {
222
+ const l = e.search.trim(), n = { value: l, label: `Create "${l}"` };
223
+ e.setOptions([n]), e.setLoading(!1);
224
+ },
225
+ children: "Create option"
226
+ }
227
+ );
228
+ }
229
+ },
230
+ render: (e) => /* @__PURE__ */ a(r, { ...e })
231
+ }, W = {
232
+ args: {
233
+ commandInputAction: (e) => /* @__PURE__ */ m("div", { className: "px-3 py-2 flex items-center justify-between text-xs text-muted-foreground", children: [
234
+ /* @__PURE__ */ m("span", { children: [
235
+ "results: ",
236
+ /* @__PURE__ */ a("span", { className: "font-mono", children: e.options.length })
237
+ ] }),
238
+ /* @__PURE__ */ a(
239
+ "button",
240
+ {
241
+ type: "button",
242
+ className: "underline",
243
+ onClick: () => {
244
+ e.setSearch(""), e.setLoading(!1);
245
+ },
246
+ children: "Clear search"
247
+ }
248
+ )
249
+ ] })
250
+ },
251
+ render: (e) => /* @__PURE__ */ a(r, { ...e })
252
+ }, j = {
253
+ args: {
254
+ listHeadAction: (e) => /* @__PURE__ */ a(
255
+ "button",
256
+ {
257
+ type: "button",
258
+ className: "w-full text-left px-3 py-2 text-sm",
259
+ onClick: () => {
260
+ e.setSearch(""), e.setOpen(!1);
261
+ },
262
+ children: "Close list"
263
+ }
264
+ )
265
+ },
266
+ render: (e) => /* @__PURE__ */ a(r, { ...e })
267
+ }, q = {
268
+ args: {
269
+ listFooterAction: (e) => /* @__PURE__ */ a(
270
+ "button",
271
+ {
272
+ type: "button",
273
+ className: "w-full text-left min-h-10 text-sm",
274
+ onClick: () => {
275
+ e.setSearch(""), e.setOpen(!1);
276
+ },
277
+ children: "list footer action"
278
+ }
279
+ )
280
+ },
281
+ render: (e) => /* @__PURE__ */ a(r, { ...e })
282
+ }, _ = {
283
+ args: {
284
+ loadData: b(f, 250)
285
+ // defaultNodeDisabled: false,
286
+ // defaultNodeMatched: false,
287
+ // defaultNodeMuted: true,
288
+ // defaultNodeInteractive: false,
289
+ },
290
+ render: (e) => /* @__PURE__ */ a(r, { ...e })
291
+ }, R = {
292
+ args: {
293
+ loadData: b(f, 250),
294
+ onMount: async (e) => {
295
+ await p(900), e.setOptions(S(f));
296
+ }
297
+ },
298
+ render: (e) => /* @__PURE__ */ a(w, { ...e, initialValue: ["fr", "de"] })
299
+ }, $ = {
300
+ args: {
301
+ loadData: b(u, 250),
302
+ onMount: async (e) => {
303
+ await p(900), e.setOptions(u);
304
+ }
305
+ },
306
+ render: (e) => /* @__PURE__ */ a(r, { ...e })
307
+ }, G = {
308
+ args: {
309
+ renderTrigger: (e) => (console.log("state", e), /* @__PURE__ */ a(
310
+ "button",
311
+ {
312
+ type: "button",
313
+ className: "w-full",
314
+ onClick: () => e.setOpen((t) => !t),
315
+ children: e.selectedOption ? `Selected: ${e.selectedOption.label}` : "Select option..."
316
+ }
317
+ ))
318
+ },
319
+ render: (e) => /* @__PURE__ */ a(r, { ...e })
320
+ }, H = {
321
+ args: {
322
+ placeholder: "Select option...",
323
+ searchLabel: "Type to search...",
324
+ emptyLabel: "No options",
325
+ loadData: N(O, 500, 20)
326
+ },
327
+ render: (e) => /* @__PURE__ */ a(r, { ...e })
328
+ };
329
+ export {
330
+ P as Default,
331
+ V as Disabled,
332
+ E as EmptyStateWithAction,
333
+ H as InfiniteScrollLoadMore,
334
+ I as Loading,
335
+ _ as NestedOptions,
336
+ R as NestedOptionsMulti,
337
+ $ as OnMountPrefetch,
338
+ G as RenderCustomTrigger,
339
+ B as SlowFetchLoading,
340
+ W as WithCommandInputAction,
341
+ q as WithListFooterAction,
342
+ j as WithListHeadAction,
343
+ k as WithStaticOptionsProp,
344
+ F as WithValueSelected,
345
+ D as default
346
+ };
347
+ //# sourceMappingURL=Combobox.stories.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Combobox.stories.js","sources":["../../src/Combobox/Combobox.stories.tsx"],"sourcesContent":["import React, { useMemo, useState } from 'react';\r\nimport type { Meta, StoryObj } from '@storybook/react';\r\n\r\nimport { Combobox } from './Combobox';\r\nimport {\r\n ComboboxCallbackStateParams,\r\n ComboboxOption,\r\n ComboboxProps, MultiComboboxProps, SingleComboboxProps,\r\n} from './Combobox.types';\r\n\r\nconst sleep = (ms: number) => new Promise((r) => setTimeout(r, ms));\r\n\r\nconst flatten = (nodes: ComboboxOption[] = []): ComboboxOption[] => {\r\n const res: ComboboxOption[] = [];\r\n const walk = (list?: ComboboxOption[]) => {\r\n if (!list?.length) return;\r\n for (const n of list) {\r\n res.push(n);\r\n if (n.items?.length) walk(n.items);\r\n }\r\n };\r\n walk(nodes);\r\n return res;\r\n};\r\n\r\nconst createFetchOptions =\r\n (all: ComboboxOption[], delayMs = 150): ComboboxProps['loadData'] =>\r\n async ({ search }) => {\r\n await sleep(delayMs);\r\n\r\n const q = (search ?? '').trim().toLowerCase();\r\n if (!q) return all;\r\n\r\n // simple \"contains\" search across flattened options; then return top-level filtered\r\n // (enough for Storybook demos; your real API can do better)\r\n const allFlat = flatten(all);\r\n const matchedValues = new Set(\r\n allFlat\r\n .filter((o) => String(o.label).toLowerCase().includes(q))\r\n .map((o) => String(o.value)),\r\n );\r\n\r\n const filterTree = (list: ComboboxOption[]): ComboboxOption[] => {\r\n return list\r\n .map((n) => {\r\n const items = n.items?.length ? filterTree(n.items) : undefined;\r\n const selfMatch =\r\n matchedValues.has(String(n.value)) ||\r\n String(n.label).toLowerCase().includes(q);\r\n\r\n if (!selfMatch && !items?.length) return null;\r\n return { ...n, items };\r\n })\r\n .filter(Boolean) as ComboboxOption[];\r\n };\r\n\r\n return filterTree(all);\r\n };\r\n\r\n\r\nconst filterTreeBySearch = (\r\n all: ComboboxOption[],\r\n search?: string,\r\n): ComboboxOption[] => {\r\n const q = (search ?? '').trim().toLowerCase();\r\n if (!q) return all;\r\n\r\n const allFlat = flatten(all);\r\n\r\n const matchedValues = new Set(\r\n allFlat\r\n .filter((o) => String(o.label).toLowerCase().includes(q))\r\n .map((o) => String(o.value)),\r\n );\r\n\r\n const filterTree = (list: ComboboxOption[]): ComboboxOption[] => {\r\n return list\r\n .map((n) => {\r\n const items = n.items?.length ? filterTree(n.items) : undefined;\r\n const selfMatch =\r\n matchedValues.has(String(n.value)) ||\r\n String(n.label).toLowerCase().includes(q);\r\n\r\n if (!selfMatch && !items?.length) return null;\r\n return { ...n, items };\r\n })\r\n .filter(Boolean) as ComboboxOption[];\r\n };\r\n\r\n return filterTree(all);\r\n};\r\n\r\nconst createPaginatedFetchOptions =\r\n (\r\n all: ComboboxOption[],\r\n delayMs = 250,\r\n limit = 20,\r\n ): ComboboxProps['loadData'] =>\r\n async ({ search, offset = 0 }) => {\r\n await sleep(delayMs);\r\n\r\n const filteredTree = filterTreeBySearch(all, search);\r\n const filteredFlat = flatten(filteredTree);\r\n\r\n const data = filteredFlat.slice(offset, offset + limit);\r\n\r\n return {\r\n data,\r\n total: filteredFlat.length,\r\n };\r\n };\r\n\r\nconst BASE_OPTIONS: ComboboxOption[] = [\r\n { value: 'ua', label: 'Ukraine' },\r\n { value: 'pl', label: 'Poland' },\r\n { value: 'de', label: 'Germany' },\r\n { value: 'fr', label: 'France' },\r\n { value: 'es', label: 'Spain' },\r\n { value: 'it', label: 'Italy' },\r\n];\r\n\r\nconst MANY_OPTIONS: ComboboxOption[] = Array.from({ length: 120 }).map((_, i) => ({\r\n value: `option-${i + 1}`,\r\n label: `Option ${i + 1}`,\r\n}));\r\n\r\nconst NESTED_OPTIONS: ComboboxOption[] = [\r\n {\r\n value: 'europe',\r\n label: 'Europe',\r\n items: [\r\n {\r\n value: 'fr',\r\n label: 'France',\r\n items: [\r\n {\r\n value: 'paris',\r\n label: 'Paris (Île-de-France)',\r\n items: [\r\n { value: 'paris-1', label: 'Paris 1st arrondissement' },\r\n { value: 'paris-3', label: 'Paris 3rd arrondissement' },\r\n { value: 'paris-10', label: 'Paris 10th arrondissement' },\r\n ],\r\n },\r\n { value: 'marseille', label: 'Marseille (Provence-Alpes-Côte d\\'Azur)' },\r\n {\r\n value: 'lyon',\r\n label: 'Lyon (Auvergne-Rhône-Alpes)',\r\n items: [\r\n { value: 'lyon-presquile', label: 'Presqu\\'île (1st/2nd)' },\r\n { value: 'lyon-vieux', label: 'Vieux Lyon' },\r\n ],\r\n },\r\n { value: 'toulouse', label: 'Toulouse (Occitanie)' },\r\n { value: 'bordeaux', label: 'Bordeaux (Nouvelle-Aquitaine)' },\r\n { value: 'strasbourg', label: 'Strasbourg (Grand Est)' },\r\n {\r\n value: 'rennes',\r\n label: 'Rennes (Brittany)',\r\n items: [\r\n { value: 'rennes-centre', label: 'Rennes Centre' },\r\n { value: 'rennes-beauregard', label: 'Beauregard' },\r\n ],\r\n },\r\n ]\r\n },\r\n { value: 'ua', label: 'Ukraine' },\r\n { value: 'pl', label: 'Poland' },\r\n { value: 'de', label: 'Germany' },\r\n ],\r\n },\r\n {\r\n value: 'north-america',\r\n label: 'North America',\r\n items: [\r\n { value: 'us', label: 'United States' },\r\n { value: 'ca', label: 'Canada' },\r\n { value: 'mx', label: 'Mexico' },\r\n { value: 'north-america-long', label: 'To long option to test wrapping. '.repeat(3) },\r\n {\r\n value: 'north-america-long-single',\r\n label: 'To long option to test wrapping. '.replace(/ /g, '_').repeat(3)\r\n },\r\n ],\r\n },\r\n];\r\nconst getFlattenOptions = (options: ComboboxOption[]) => {\r\n return options.flatMap(option => [\r\n option,\r\n ...(option.items ? getFlattenOptions(option.items) : [])\r\n ]);\r\n};\r\n\r\nconst getAllValues = (options: ComboboxOption[]): string[] => {\r\n return getFlattenOptions(options).map(o => o.value)\r\n};\r\n\r\ntype ControlledProps<T extends ComboboxProps = ComboboxProps> = Omit<T, 'value' | 'onChange'> & {\r\n initialValue?: T['value'];\r\n};\r\n\r\nfunction ControlledCombobox({ initialValue = '', ...args }: ControlledProps<SingleComboboxProps>) {\r\n const [ value, setValue ] = useState<SingleComboboxProps['value']>(initialValue);\r\n const loadData = useMemo(\r\n () => args.loadData,\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n [],\r\n );\r\n\r\n return (\r\n <div className=\"max-w-sm\">\r\n <Combobox type='single' {...args} value={value} onChange={setValue} loadData={loadData}\r\n defaultNodeMatched/>\r\n <div className=\"mt-3 text-xs text-muted-foreground\">\r\n value: <span className=\"font-mono\">{String(value || '')}</span>\r\n </div>\r\n </div>\r\n );\r\n}\r\n\r\nfunction ControlledComboboxMulti({\r\n initialValue = [],\r\n ...args\r\n }: ControlledProps<MultiComboboxProps>) {\r\n const [ value, setValue ] = useState<MultiComboboxProps['value'] | undefined>(initialValue);\r\n const loadData = useMemo(() => args.loadData, []);\r\n return (\r\n <div className=\"max-w-sm\">\r\n <Combobox\r\n {...args}\r\n type='multi'\r\n value={value}\r\n onChange={setValue}\r\n loadData={loadData}\r\n />\r\n <div className=\"mt-3 text-xs text-muted-foreground\">\r\n value: <span className=\"font-mono\">{(value || []).join(', ')}</span>\r\n </div>\r\n </div>\r\n );\r\n}\r\n\r\nconst meta = {\r\n title: 'Combobox',\r\n component: Combobox,\r\n parameters: {\r\n layout: 'centered',\r\n },\r\n args: {\r\n placeholder: 'Select option...',\r\n searchLabel: 'Type to search...',\r\n emptyLabel: 'No options',\r\n disabled: false,\r\n loadData: createFetchOptions(BASE_OPTIONS, 250),\r\n },\r\n argTypes: {\r\n loadData: { control: false },\r\n onChange: { control: false },\r\n onMount: { control: false },\r\n emptyAction: { control: false },\r\n commandInputAction: { control: false },\r\n listHeadAction: { control: false },\r\n options: { control: false },\r\n value: { control: false },\r\n },\r\n decorators: [\r\n (Story) => (\r\n <div className=\"p-6 w-[420px]\">\r\n <Story/>\r\n </div>\r\n ),\r\n ],\r\n} satisfies Meta<typeof Combobox>;\r\n\r\nexport default meta;\r\n\r\ntype Story = StoryObj<typeof meta>;\r\n\r\n/** 1) Default (async options) */\r\nexport const Default: Story = {\r\n render: (args) => <ControlledCombobox {...args} />,\r\n};\r\n\r\n/** 2) With initial selected value */\r\nexport const WithValueSelected: Story = {\r\n render: (args) => <ControlledCombobox {...args} initialValue=\"pl\"/>,\r\n};\r\n\r\n/** 3) Disabled */\r\nexport const Disabled: Story = {\r\n args: { disabled: true },\r\n render: (args) => <ControlledCombobox {...args} initialValue=\"de\"/>,\r\n};\r\n\r\n/** 4) Static options via `options` prop (no async needed, but loadData still required) */\r\nexport const WithStaticOptionsProp: Story = {\r\n args: {\r\n options: BASE_OPTIONS,\r\n loadData: async () => BASE_OPTIONS,\r\n },\r\n render: (args) => <ControlledCombobox {...args} />,\r\n};\r\n\r\n/** 5) Slow fetch to show loading state on open/search */\r\nexport const SlowFetchLoading: Story = {\r\n args: {\r\n loadData: createFetchOptions(BASE_OPTIONS, 1200),\r\n },\r\n render: (args) => <ControlledCombobox {...args} />,\r\n};\r\n\r\n/** 5.1) Forced loading state (opened on mount) */\r\nexport const Loading: Story = {\r\n args: {\r\n loadData: async () => BASE_OPTIONS,\r\n onMount: async (st: ComboboxCallbackStateParams<object, 'single'>) => {\r\n st.setOpen(true);\r\n st.setOptions([]);\r\n st.setLoading(true);\r\n await sleep(1200);\r\n st.setOptions(BASE_OPTIONS);\r\n st.setLoading(false);\r\n },\r\n },\r\n render: (args) => <ControlledCombobox {...args} />,\r\n};\r\n\r\n/** 6) Empty state with action (search something like \"zzz\") */\r\nexport const EmptyStateWithAction: Story = {\r\n args: {\r\n emptyLabel: 'Nothing found',\r\n emptyAction: (st: ComboboxCallbackStateParams) => {\r\n const canCreate = Boolean(st.search?.trim());\r\n return (\r\n <button\r\n type=\"button\"\r\n className=\"inline-flex items-center justify-center rounded-md border px-3 py-1.5 text-sm\"\r\n disabled={!canCreate}\r\n onClick={() => {\r\n const v = st.search.trim();\r\n const next: ComboboxOption = { value: v, label: `Create \"${v}\"` };\r\n st.setOptions([ next ]);\r\n st.setLoading(false);\r\n }}\r\n >\r\n Create option\r\n </button>\r\n );\r\n },\r\n },\r\n render: (args) => <ControlledCombobox {...args} />,\r\n};\r\n\r\n/** 7) commandInputAction (helper row under input) */\r\nexport const WithCommandInputAction: Story = {\r\n args: {\r\n commandInputAction: (st: ComboboxCallbackStateParams) => (\r\n <div className=\"px-3 py-2 flex items-center justify-between text-xs text-muted-foreground\">\r\n <span>\r\n results: <span className=\"font-mono\">{st.options.length}</span>\r\n </span>\r\n <button\r\n type=\"button\"\r\n className=\"underline\"\r\n onClick={() => {\r\n st.setSearch('');\r\n st.setLoading(false);\r\n }}\r\n >\r\n Clear search\r\n </button>\r\n </div>\r\n ),\r\n },\r\n render: (args) => <ControlledCombobox {...args} />,\r\n};\r\n\r\n/** 8) listHeadAction (top action inside list) */\r\nexport const WithListHeadAction: Story = {\r\n args: {\r\n listHeadAction: (st: ComboboxCallbackStateParams) => (\r\n <button\r\n type=\"button\"\r\n className=\"w-full text-left px-3 py-2 text-sm\"\r\n onClick={() => {\r\n st.setSearch('');\r\n st.setOpen(false);\r\n }}\r\n >\r\n Close list\r\n </button>\r\n ),\r\n },\r\n render: (args) => <ControlledCombobox {...args} />,\r\n};\r\n\r\n/** 9) listHeadAction (footer action outside of list) */\r\nexport const WithListFooterAction: Story = {\r\n args: {\r\n listFooterAction: (st: ComboboxCallbackStateParams) => (\r\n <button\r\n type=\"button\"\r\n className=\"w-full text-left min-h-10 text-sm\"\r\n onClick={() => {\r\n st.setSearch('');\r\n st.setOpen(false);\r\n }}\r\n >\r\n list footer action\r\n </button>\r\n ),\r\n },\r\n render: (args) => <ControlledCombobox {...args} />,\r\n};\r\n\r\n/** 10) Nested options tree */\r\nexport const NestedOptions: Story = {\r\n args: {\r\n loadData: createFetchOptions(NESTED_OPTIONS, 250),\r\n // defaultNodeDisabled: false,\r\n // defaultNodeMatched: false,\r\n // defaultNodeMuted: true,\r\n // defaultNodeInteractive: false,\r\n },\r\n render: (args) => <ControlledCombobox {...args} />,\r\n};\r\n\r\n/** 11) Multi Nested options tree */\r\nexport const NestedOptionsMulti: Story = {\r\n args: {\r\n loadData: createFetchOptions(NESTED_OPTIONS, 250),\r\n onMount: async (st: ComboboxCallbackStateParams<object, 'single'>) => {\r\n await sleep(900);\r\n st.setOptions(getFlattenOptions(NESTED_OPTIONS));\r\n },\r\n },\r\n render: (args) => {\r\n const TEST_FULL = false;\r\n const initialValues = TEST_FULL ? getAllValues(NESTED_OPTIONS) : [ 'fr', 'de' ];\r\n return <ControlledComboboxMulti {...args} initialValue={initialValues}/>\r\n },\r\n};\r\n\r\n/** 12) onMount initial loading (simulate prefetch on mount) */\r\nexport const OnMountPrefetch: Story = {\r\n args: {\r\n loadData: createFetchOptions(BASE_OPTIONS, 250),\r\n onMount: async (st: ComboboxCallbackStateParams<object, 'multi'>) => {\r\n await sleep(900);\r\n st.setOptions(BASE_OPTIONS);\r\n },\r\n },\r\n render: (args) => <ControlledCombobox {...args} />,\r\n};\r\n\r\n/** 13) render custom trigger */\r\nexport const RenderCustomTrigger: Story = {\r\n args: {\r\n renderTrigger: (state) => {\r\n console.log('state', state);\r\n return (\r\n <button\r\n type=\"button\"\r\n className=\"w-full\"\r\n onClick={() => state.setOpen((o) => !o)}\r\n >\r\n {state.selectedOption ? `Selected: ${state.selectedOption.label}` : 'Select option...'}\r\n </button>\r\n )\r\n }\r\n },\r\n render: (args) => <ControlledCombobox {...args} />,\r\n};\r\n\r\n/** 14) Load more with infinite scroll */\r\nexport const InfiniteScrollLoadMore: Story = {\r\n args: {\r\n placeholder: 'Select option...',\r\n searchLabel: 'Type to search...',\r\n emptyLabel: 'No options',\r\n loadData: createPaginatedFetchOptions(MANY_OPTIONS, 500, 20),\r\n },\r\n render: (args) => <ControlledCombobox {...args} />,\r\n};\r\n"],"names":["sleep","ms","r","flatten","nodes","res","walk","list","n","createFetchOptions","all","delayMs","search","q","allFlat","matchedValues","o","filterTree","items","filterTreeBySearch","createPaginatedFetchOptions","limit","offset","filteredTree","filteredFlat","BASE_OPTIONS","MANY_OPTIONS","_","i","NESTED_OPTIONS","getFlattenOptions","options","option","ControlledCombobox","initialValue","args","value","setValue","useState","loadData","useMemo","jsxs","jsx","Combobox","ControlledComboboxMulti","meta","Story","Default","WithValueSelected","Disabled","WithStaticOptionsProp","SlowFetchLoading","Loading","st","EmptyStateWithAction","canCreate","v","next","WithCommandInputAction","WithListHeadAction","WithListFooterAction","NestedOptions","NestedOptionsMulti","OnMountPrefetch","RenderCustomTrigger","state","InfiniteScrollLoadMore"],"mappings":"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"}
@@ -1,50 +1,114 @@
1
- import { Dispatch, ReactNode, SetStateAction } from 'react';
2
- export interface ComboboxOption {
1
+ import { Dispatch, HTMLAttributes, ReactNode, Ref, SetStateAction } from 'react';
2
+ export type ComboboxValueType = string | string[];
3
+ export type ComboboxSelectedType = 'single' | 'multi';
4
+ export declare const DEFAULT_COMBOBOX_TYPE: ComboboxSelectedType;
5
+ export interface ComboboxOption<Data extends object = object> {
3
6
  value: string;
4
7
  label: string;
5
- items?: ComboboxOption[];
8
+ node?: Data;
9
+ items?: ComboboxOption<Data>[];
10
+ path?: string[];
11
+ parent?: string;
12
+ level?: number;
13
+ matched?: boolean;
6
14
  }
7
- export interface ComboboxCallbackStateParams {
8
- options: ComboboxOption[];
9
- setOptions: Dispatch<SetStateAction<ComboboxOption[]>>;
10
- selectedOption?: ComboboxOption;
11
- setSelectedOption: Dispatch<SetStateAction<ComboboxOption | undefined>>;
15
+ export interface ComboboxCallbackStateParams<Data extends object = object, T extends ComboboxSelectedType = 'single'> {
16
+ options: ComboboxOption<Data>[];
17
+ setOptions: Dispatch<SetStateAction<ComboboxOption<Data>[]>>;
12
18
  search: string;
13
19
  setSearch: Dispatch<SetStateAction<string>>;
20
+ onChangeOption: (option: ComboboxOption<Data>) => void;
14
21
  open: boolean;
15
22
  setOpen: Dispatch<SetStateAction<boolean>>;
16
23
  loading: boolean;
17
24
  setLoading: Dispatch<SetStateAction<boolean>>;
18
25
  isEmptyList: boolean;
19
26
  isSearchedEmptyList: boolean;
27
+ placeholder?: string;
28
+ type: T;
29
+ selectedOption: T extends 'single' ? ComboboxOption<Data> | undefined : ComboboxOption<Data>[];
30
+ setSelectedOption: T extends 'single' ? Dispatch<SetStateAction<ComboboxOption<Data> | undefined>> : Dispatch<SetStateAction<ComboboxOption<Data>[] | undefined>>;
20
31
  }
21
- export interface IComboboxOptionsNodeProps {
22
- value?: string;
23
- option: ComboboxOption;
24
- onChangeOption?: (option: ComboboxOption) => void;
32
+ export type ComboboxCallbackStateParamsUnion<Data extends object = object> = ComboboxCallbackStateParams<Data, 'single'> | ComboboxCallbackStateParams<Data, 'multi'>;
33
+ export type ComboboxCallbackStateParamsRenderHandler<Data extends object = object> = (params: ComboboxCallbackStateParamsUnion<Data>) => ReactNode;
34
+ export interface IComboboxOptionsNodeHandlersProps<Data extends object = object> {
35
+ defaultNodeOpen?: boolean | ((option: ComboboxOption<Data>, deep: number) => boolean | undefined);
36
+ defaultNodeDisabled?: boolean | ((option: ComboboxOption<Data>, deep: number) => boolean | undefined);
37
+ defaultNodeMatched?: boolean | ((option: ComboboxOption<Data>, deep: number) => boolean | undefined);
38
+ defaultNodeMuted?: boolean | ((option: ComboboxOption<Data>, deep: number) => boolean | undefined);
39
+ defaultNodeInteractive?: boolean | ((option: ComboboxOption<Data>, deep: number) => boolean | undefined);
40
+ /** Use onPointerUp instead of cmdk onSelect. Fixes selection inside modal Dialog. */
41
+ forcePointerSelect?: boolean;
42
+ }
43
+ export interface IComboboxOptionsNodeProps<Data extends object = object> extends IComboboxOptionsNodeHandlersProps<Data> {
44
+ type: ComboboxSelectedType;
45
+ search?: string;
46
+ value?: ComboboxValueType;
47
+ option: ComboboxOption<Data>;
48
+ onSelect?: (option: ComboboxOption<Data>) => void;
25
49
  deep?: number;
26
- setOpen: Dispatch<SetStateAction<boolean>>;
27
50
  }
28
- export interface IComboboxOptionsProps extends Omit<IComboboxOptionsNodeProps, 'option'> {
29
- options?: ComboboxOption[];
51
+ export interface IComboboxOptionsProps<Data extends object = object> extends Omit<IComboboxOptionsNodeProps<Data>, 'option'>, IComboboxOptionsNodeHandlersProps<Data> {
52
+ options?: ComboboxOption<Data>[];
30
53
  }
31
- export interface ComboboxProps {
32
- value: string;
33
- onChange: (value: string) => void;
54
+ interface IListActionProps extends HTMLAttributes<HTMLDivElement> {
55
+ bordered?: boolean;
56
+ }
57
+ interface IPopoverSlotProps {
58
+ /** Set Popover modal mode. Use `true` when Combobox is inside a modal Dialog. */
59
+ modal?: boolean;
60
+ /** Container element for Popover portal. Use to render inside modal Dialog. */
61
+ container?: HTMLElement | null;
62
+ }
63
+ export interface ISlotProps {
64
+ popover?: IPopoverSlotProps;
65
+ listFooterAction?: IListActionProps;
66
+ }
67
+ type ComboboxLoadDataParams = {
68
+ search?: string;
69
+ offset?: number;
70
+ };
71
+ type ComboboxLoadDataResult<Data extends object = object> = {
72
+ data: ComboboxOption<Data>[];
73
+ total: number;
74
+ };
75
+ type ComboboxLoadDataReturn<Data extends object = object> = ComboboxOption<Data>[] | ComboboxLoadDataResult<Data>;
76
+ type ComboboxLoadData<Data extends object = object> = (params: ComboboxLoadDataParams, signal: AbortSignal, controller: ComboboxCallbackStateParams<Data, 'single'> | ComboboxCallbackStateParams<Data, 'multi'>) => Promise<ComboboxLoadDataReturn<Data>>;
77
+ export interface ComboboxBaseProps<Data extends object = object, T extends ComboboxSelectedType = 'single'> extends IComboboxOptionsNodeHandlersProps {
78
+ type?: T;
79
+ imperativeRef?: Ref<ComboboxCallbackStateParams<Data, 'single'> | ComboboxCallbackStateParams<Data, 'multi'> | null>;
34
80
  placeholder?: string;
35
81
  searchLabel?: string;
36
82
  disabled?: boolean;
37
- fetchOptions: (search?: string) => Promise<ComboboxOption[]>;
38
- options?: ComboboxOption[];
83
+ /** Callback for load data on search debounce */
84
+ loadData: ComboboxLoadData<Data>;
85
+ options?: ComboboxOption<Data>[];
39
86
  /** Command Empty list label*/
40
87
  emptyLabel?: string;
41
88
  /** Command Empty list action */
42
- emptyAction?: ((params: ComboboxCallbackStateParams) => ReactNode) | ReactNode;
89
+ emptyAction?: ((params: ComboboxCallbackStateParams<Data, T>) => ReactNode) | ReactNode;
43
90
  /** Command Input footer action */
44
- commandInputAction?: ((params: ComboboxCallbackStateParams) => ReactNode) | ReactNode;
91
+ commandInputAction?: ((params: ComboboxCallbackStateParams<Data, T>) => ReactNode) | ReactNode;
45
92
  /** Command List first element action */
46
- listHeadAction?: ((params: ComboboxCallbackStateParams) => ReactNode) | ReactNode;
93
+ listHeadAction?: ((params: ComboboxCallbackStateParams<Data, T>) => ReactNode) | ReactNode;
94
+ /** Command List footer element action */
95
+ listFooterAction?: ((params: ComboboxCallbackStateParams<Data, T>) => ReactNode) | ReactNode;
47
96
  /** Callback for load data on start component */
48
- onMount?: (params: ComboboxCallbackStateParams) => Promise<void>;
97
+ onMount?: (params: ComboboxCallbackStateParams<Data, T>) => Promise<void>;
98
+ renderTrigger?: (params: ComboboxCallbackStateParams<Data, T>) => ReactNode;
99
+ renderList?: (params: ComboboxCallbackStateParams<Data, T>) => ReactNode;
100
+ slotProps?: ISlotProps;
101
+ }
102
+ export interface SingleComboboxProps<Data extends object = object> extends ComboboxBaseProps<Data, 'single'> {
103
+ type?: 'single';
104
+ value?: string;
105
+ onChange: (value: string | undefined) => void;
106
+ }
107
+ export interface MultiComboboxProps<Data extends object = object> extends ComboboxBaseProps<Data, 'multi'> {
108
+ type: 'multi';
109
+ value?: string[];
110
+ onChange: (value: string[] | undefined) => void;
49
111
  }
112
+ export type ComboboxProps<Data extends object = object, T extends ComboboxSelectedType = 'single'> = T extends 'single' ? SingleComboboxProps<Data> : MultiComboboxProps<Data>;
113
+ export {};
50
114
  //# sourceMappingURL=Combobox.types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Combobox.types.d.ts","sourceRoot":"","sources":["../../src/Combobox/Combobox.types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAE5D,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,cAAc,EAAE,CAAC;CAC1B;AAED,MAAM,WAAW,2BAA2B;IAC1C,OAAO,EAAE,cAAc,EAAE,CAAC;IAC1B,UAAU,EAAG,QAAQ,CAAC,cAAc,CAAC,cAAc,EAAE,CAAC,CAAC,CAAA;IACvD,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,iBAAiB,EAAG,QAAQ,CAAC,cAAc,CAAC,cAAc,GAAG,SAAS,CAAC,CAAC,CAAA;IACxE,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAG,QAAQ,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAA;IAC5C,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,QAAQ,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC;IAC3C,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,QAAQ,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC;IAC9C,WAAW,EAAE,OAAO,CAAC;IACrB,mBAAmB,EAAE,OAAO,CAAC;CAC9B;AAED,MAAM,WAAW,yBAAyB;IACxC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,cAAc,CAAC;IACvB,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,cAAc,KAAK,IAAI,CAAC;IAClD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,QAAQ,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAA;CAC3C;AAED,MAAM,WAAW,qBACf,SAAQ,IAAI,CAAC,yBAAyB,EAAE,QAAQ,CAAC;IACjD,OAAO,CAAC,EAAE,cAAc,EAAE,CAAC;CAC5B;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,YAAY,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC;IAC7D,OAAO,CAAC,EAAE,cAAc,EAAE,CAAC;IAC3B,8BAA8B;IAC9B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gCAAgC;IAChC,WAAW,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,2BAA2B,KAAK,SAAS,CAAC,GAAG,SAAS,CAAC;IAC/E,kCAAkC;IAClC,kBAAkB,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,2BAA2B,KAAK,SAAS,CAAC,GAAG,SAAS,CAAC;IACtF,wCAAwC;IACxC,cAAc,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,2BAA2B,KAAK,SAAS,CAAC,GAAG,SAAS,CAAC;IAClF,gDAAgD;IAChD,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,2BAA2B,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAClE"}
1
+ {"version":3,"file":"Combobox.types.d.ts","sourceRoot":"","sources":["../../src/Combobox/Combobox.types.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,5 @@
1
-
1
+ const O = "single";
2
+ export {
3
+ O as DEFAULT_COMBOBOX_TYPE
4
+ };
2
5
  //# sourceMappingURL=Combobox.types.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Combobox.types.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
1
+ {"version":3,"file":"Combobox.types.js","sources":["../../src/Combobox/Combobox.types.ts"],"sourcesContent":["import { Dispatch, HTMLAttributes, ReactNode, Ref, SetStateAction } from 'react';\r\n\r\nexport type ComboboxValueType = string | string[];\r\nexport type ComboboxSelectedType = 'single' | 'multi';\r\n\r\nexport const DEFAULT_COMBOBOX_TYPE: ComboboxSelectedType = 'single';\r\n\r\nexport interface ComboboxOption<Data extends object = object> {\r\n value: string;\r\n label: string;\r\n node?: Data;\r\n // tree only\r\n items?: ComboboxOption<Data>[];\r\n path?: string[];\r\n parent?: string;\r\n level?: number;\r\n matched?: boolean;\r\n}\r\n\r\nexport interface ComboboxCallbackStateParams<\r\n Data extends object = object,\r\n T extends ComboboxSelectedType = 'single'\r\n> {\r\n options: ComboboxOption<Data>[];\r\n setOptions: Dispatch<SetStateAction<ComboboxOption<Data>[]>>\r\n search: string;\r\n setSearch: Dispatch<SetStateAction<string>>\r\n onChangeOption: (option: ComboboxOption<Data>) => void;\r\n open: boolean,\r\n setOpen: Dispatch<SetStateAction<boolean>>;\r\n loading: boolean;\r\n setLoading: Dispatch<SetStateAction<boolean>>;\r\n isEmptyList: boolean;\r\n isSearchedEmptyList: boolean;\r\n placeholder?: string;\r\n\r\n type: T;\r\n selectedOption: T extends 'single'\r\n ? ComboboxOption<Data> | undefined\r\n : ComboboxOption<Data>[];\r\n setSelectedOption: T extends 'single'\r\n ? Dispatch<SetStateAction<ComboboxOption<Data> | undefined>>\r\n : Dispatch<SetStateAction<ComboboxOption<Data>[] | undefined>>;\r\n}\r\n\r\nexport type ComboboxCallbackStateParamsUnion<Data extends object = object> = ComboboxCallbackStateParams<Data, 'single'> | ComboboxCallbackStateParams<Data, 'multi'>\r\nexport type ComboboxCallbackStateParamsRenderHandler<Data extends object = object> = (params:ComboboxCallbackStateParamsUnion<Data>) => ReactNode\r\n\r\nexport interface IComboboxOptionsNodeHandlersProps<Data extends object = object> {\r\n defaultNodeOpen?: boolean | ((option: ComboboxOption<Data>, deep: number) => boolean | undefined);\r\n defaultNodeDisabled?: boolean | ((option: ComboboxOption<Data>, deep: number) => boolean | undefined);\r\n defaultNodeMatched?: boolean | ((option: ComboboxOption<Data>, deep: number) => boolean | undefined);\r\n defaultNodeMuted?: boolean | ((option: ComboboxOption<Data>, deep: number) => boolean | undefined);\r\n defaultNodeInteractive?: boolean | ((option: ComboboxOption<Data>, deep: number) => boolean | undefined);\r\n /** Use onPointerUp instead of cmdk onSelect. Fixes selection inside modal Dialog. */\r\n forcePointerSelect?: boolean;\r\n}\r\n\r\nexport interface IComboboxOptionsNodeProps<Data extends object = object>\r\n extends IComboboxOptionsNodeHandlersProps<Data> {\r\n type: ComboboxSelectedType,\r\n search?: string;\r\n value?: ComboboxValueType;\r\n option: ComboboxOption<Data>;\r\n onSelect?: (option: ComboboxOption<Data>) => void;\r\n deep?: number;\r\n}\r\n\r\nexport interface IComboboxOptionsProps<Data extends object = object>\r\n extends Omit<IComboboxOptionsNodeProps<Data>, 'option'>, IComboboxOptionsNodeHandlersProps<Data> {\r\n options?: ComboboxOption<Data>[];\r\n}\r\n\r\ninterface IListActionProps extends HTMLAttributes<HTMLDivElement> {\r\n bordered?: boolean;\r\n}\r\ninterface IPopoverSlotProps {\r\n /** Set Popover modal mode. Use `true` when Combobox is inside a modal Dialog. */\r\n modal?: boolean;\r\n /** Container element for Popover portal. Use to render inside modal Dialog. */\r\n container?: HTMLElement | null;\r\n}\r\n\r\nexport interface ISlotProps {\r\n popover?: IPopoverSlotProps;\r\n listFooterAction?: IListActionProps;\r\n}\r\n\r\ntype ComboboxLoadDataParams = { search?: string; offset?: number; }\r\ntype ComboboxLoadDataResult<Data extends object = object> = { data: ComboboxOption<Data>[]; total: number; }\r\ntype ComboboxLoadDataReturn<Data extends object = object> = ComboboxOption<Data>[] | ComboboxLoadDataResult<Data>;\r\ntype ComboboxLoadData<Data extends object = object> = (\r\n params: ComboboxLoadDataParams,\r\n signal: AbortSignal,\r\n controller: ComboboxCallbackStateParams<Data, 'single'> | ComboboxCallbackStateParams<Data, 'multi'>\r\n) => Promise<ComboboxLoadDataReturn<Data>>;\r\n\r\nexport interface ComboboxBaseProps<\r\n Data extends object = object,\r\n T extends ComboboxSelectedType = 'single'\r\n> extends IComboboxOptionsNodeHandlersProps {\r\n type?: T;\r\n imperativeRef?: Ref<\r\n ComboboxCallbackStateParams<Data, 'single'>\r\n | ComboboxCallbackStateParams<Data, 'multi'>\r\n | null\r\n >;\r\n placeholder?: string;\r\n searchLabel?: string;\r\n disabled?: boolean;\r\n /** Callback for load data on search debounce */\r\n loadData: ComboboxLoadData<Data>;\r\n options?: ComboboxOption<Data>[];\r\n /** Command Empty list label*/\r\n emptyLabel?: string;\r\n /** Command Empty list action */\r\n emptyAction?: ((params: ComboboxCallbackStateParams<Data, T>) => ReactNode) | ReactNode;\r\n /** Command Input footer action */\r\n commandInputAction?: ((params: ComboboxCallbackStateParams<Data, T>) => ReactNode) | ReactNode;\r\n /** Command List first element action */\r\n listHeadAction?: ((params: ComboboxCallbackStateParams<Data, T>) => ReactNode) | ReactNode;\r\n /** Command List footer element action */\r\n listFooterAction?: ((params: ComboboxCallbackStateParams<Data, T>) => ReactNode) | ReactNode;\r\n /** Callback for load data on start component */\r\n onMount?: (params: ComboboxCallbackStateParams<Data, T>) => Promise<void>;\r\n\r\n renderTrigger?: (params: ComboboxCallbackStateParams<Data, T>) => ReactNode;\r\n renderList?: (params: ComboboxCallbackStateParams<Data, T>) => ReactNode;\r\n\r\n slotProps?: ISlotProps;\r\n}\r\n\r\nexport interface SingleComboboxProps<Data extends object = object>\r\n extends ComboboxBaseProps<Data, 'single'> {\r\n type?: 'single';\r\n value?: string;\r\n onChange: (value: string | undefined) => void;\r\n}\r\nexport interface MultiComboboxProps<Data extends object = object>\r\n extends ComboboxBaseProps<Data, 'multi'> {\r\n type: 'multi';\r\n value?: string[];\r\n onChange: (value: string[] | undefined) => void;\r\n}\r\n\r\nexport type ComboboxProps<\r\n Data extends object = object,\r\n T extends ComboboxSelectedType = 'single'\r\n> = T extends 'single'\r\n ? SingleComboboxProps<Data>\r\n : MultiComboboxProps<Data>;\r\n"],"names":["DEFAULT_COMBOBOX_TYPE"],"mappings":"AAKO,MAAMA,IAA8C;"}
@@ -1,5 +1,7 @@
1
+ import { PropsWithChildren } from 'react';
1
2
  import { IComboboxOptionsNodeProps } from './Combobox.types';
2
- export declare const ComboboxOptionItem: import('react').ForwardRefExoticComponent<IComboboxOptionsNodeProps & {
3
- children?: import('react').ReactNode | undefined;
4
- } & import('react').RefAttributes<HTMLDivElement>>;
3
+ export declare const ComboboxOptionItem: <Data extends object>(props: PropsWithChildren<IComboboxOptionsNodeProps<Data>> & {
4
+ onCollapseToggle?: () => void;
5
+ expanded?: boolean;
6
+ }) => import("react/jsx-runtime").JSX.Element;
5
7
  //# sourceMappingURL=ComboboxOptionItem.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ComboboxOptionItem.d.ts","sourceRoot":"","sources":["../../src/Combobox/ComboboxOptionItem.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,yBAAyB,EAAE,MAAM,kBAAkB,CAAC;AAM7D,eAAO,MAAM,kBAAkB;;kDAsC7B,CAAC"}
1
+ {"version":3,"file":"ComboboxOptionItem.d.ts","sourceRoot":"","sources":["../../src/Combobox/ComboboxOptionItem.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAiB,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAEzD,OAAO,EAAyB,yBAAyB,EAAE,MAAM,kBAAkB,CAAC;AAcpF,eAAO,MAAM,kBAAkB,GAAI,IAAI,SAAS,MAAM,EACpD,OAAO,iBAAiB,CAAC,yBAAyB,CAAC,IAAI,CAAC,CAAC,GAAG;IAC1D,gBAAgB,CAAC,EAAE,MAAM,IAAI,CAAC;IAC9B,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,4CA2HF,CAAA"}