haze-ui 1.26.0 → 1.27.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 (392) hide show
  1. package/README.md +420 -36
  2. package/dist/components/Anchor/Anchor.js +78 -0
  3. package/dist/components/Anchor/index.js +3 -0
  4. package/dist/components/AppShell/AppShell.js +44 -0
  5. package/dist/components/AppShell/index.js +3 -0
  6. package/dist/components/AspectRatio/AspectRatio.js +0 -1
  7. package/dist/components/AspectRatio/index.js +0 -1
  8. package/dist/components/Badge/Badge.js +5 -17
  9. package/dist/components/Badge/badge-styles.js +15 -0
  10. package/dist/components/Badge/index.js +3 -3
  11. package/dist/components/BottomSheet/BottomSheet.js +133 -22
  12. package/dist/components/Button/index.js +4 -3
  13. package/dist/components/Calendar/Calendar.js +454 -78
  14. package/dist/components/Calendar/date.js +35 -2
  15. package/dist/components/Card/Card.js +0 -1
  16. package/dist/components/Card/index.js +0 -1
  17. package/dist/components/Carousel/Carousel.js +64 -41
  18. package/dist/components/Cascader/Cascader.js +185 -137
  19. package/dist/components/Chart/Chart.js +31 -0
  20. package/dist/components/Chart/chart-elements.js +88 -0
  21. package/dist/components/Chart/index.js +3 -0
  22. package/dist/components/ChatContainer/ChatContainer.js +36 -16
  23. package/dist/components/ChatInput/ChatInput.js +49 -29
  24. package/dist/components/ChatMessage/ChatMessage.js +76 -29
  25. package/dist/components/Checkbox/Checkbox.js +6 -5
  26. package/dist/components/Checkbox/CheckboxCore.js +6 -5
  27. package/dist/components/CodeBlock/CodeBlock.js +0 -1
  28. package/dist/components/CodeBlock/index.js +0 -1
  29. package/dist/components/Collapsible/Collapsible.js +23 -10
  30. package/dist/components/ColorPicker/ColorPicker.js +5 -4
  31. package/dist/components/ColorPicker/ColorPickerCore.js +5 -4
  32. package/dist/components/Combobox/Combobox.js +195 -76
  33. package/dist/components/Combobox/ComboboxGroup.js +23 -0
  34. package/dist/components/Combobox/ComboboxOption.js +7 -6
  35. package/dist/components/Combobox/index.js +4 -3
  36. package/dist/components/Command/Command.js +102 -59
  37. package/dist/components/Command/CommandDialog.js +48 -0
  38. package/dist/components/Command/command-filter.js +16 -0
  39. package/dist/components/Command/index.js +3 -2
  40. package/dist/components/ConfirmDialog/ConfirmDialog.js +3 -3
  41. package/dist/components/Container/Container.js +0 -1
  42. package/dist/components/Container/index.js +0 -1
  43. package/dist/components/ContextMenu/ContextMenuContent.js +4 -4
  44. package/dist/components/DataTable/CellEditor.js +38 -0
  45. package/dist/components/DataTable/DataTable.js +390 -142
  46. package/dist/components/DataTable/features.js +25 -0
  47. package/dist/components/DataTable/index.js +2 -1
  48. package/dist/components/DataTable/summary.js +17 -0
  49. package/dist/components/DateRangePicker/DateRangePicker.js +10 -7
  50. package/dist/components/DateRangePicker/DateRangePickerCore.js +59 -27
  51. package/dist/components/Datepicker/Datepicker.js +16 -12
  52. package/dist/components/Datepicker/DatepickerCore.js +50 -37
  53. package/dist/components/Dialog/Dialog.js +56 -32
  54. package/dist/components/Divider/Divider.js +0 -1
  55. package/dist/components/Divider/index.js +0 -1
  56. package/dist/components/Drawer/Drawer.js +49 -29
  57. package/dist/components/DropdownMenu/DropdownMenu.js +38 -26
  58. package/dist/components/DropdownMenu/DropdownMenuSub.js +23 -0
  59. package/dist/components/DropdownMenu/DropdownMenuSubContent.js +24 -0
  60. package/dist/components/DropdownMenu/DropdownMenuSubTrigger.js +30 -0
  61. package/dist/components/DropdownMenu/index.js +4 -1
  62. package/dist/components/Flex/Flex.js +0 -1
  63. package/dist/components/Flex/index.js +0 -1
  64. package/dist/components/Fullscreen/Fullscreen.js +29 -0
  65. package/dist/components/Fullscreen/index.js +3 -0
  66. package/dist/components/Grid/Grid.js +0 -1
  67. package/dist/components/Grid/GridItem.js +0 -1
  68. package/dist/components/Grid/index.js +0 -1
  69. package/dist/components/Icon/Icon.js +0 -1
  70. package/dist/components/Icon/index.js +0 -1
  71. package/dist/components/Image/Image.js +37 -19
  72. package/dist/components/Image/ImagePreview.js +233 -0
  73. package/dist/components/Input/Input.js +6 -5
  74. package/dist/components/Input/InputCore.js +3 -2
  75. package/dist/components/Kbd/Kbd.js +0 -1
  76. package/dist/components/Kbd/index.js +0 -1
  77. package/dist/components/LocaleProvider/LocaleProvider.js +16 -13
  78. package/dist/components/LocaleProvider/index.js +2 -1
  79. package/dist/components/LocaleProvider/locale.js +58 -2
  80. package/dist/components/LocaleProvider/strings.js +15 -0
  81. package/dist/components/LocaleProvider/zh-cn.js +58 -2
  82. package/dist/components/Mentions/Mentions.js +6 -5
  83. package/dist/components/Mentions/MentionsCore.js +69 -68
  84. package/dist/components/Menu/Menu.js +5 -5
  85. package/dist/components/Menu/MenuSub.js +23 -0
  86. package/dist/components/Menu/MenuSubContent.js +24 -0
  87. package/dist/components/Menu/MenuSubTrigger.js +30 -0
  88. package/dist/components/Menu/index.js +4 -1
  89. package/dist/components/NumberInput/NumberInput.js +6 -5
  90. package/dist/components/NumberInput/NumberInputCore.js +9 -8
  91. package/dist/components/OTPInput/OTPInput.js +5 -4
  92. package/dist/components/OTPInput/OTPInputCore.js +34 -33
  93. package/dist/components/PasswordInput/PasswordInput.js +5 -4
  94. package/dist/components/PasswordInput/PasswordInputCore.js +8 -7
  95. package/dist/components/Popover/Popover.js +43 -31
  96. package/dist/components/PromptInput/PromptInput.js +213 -0
  97. package/dist/components/PromptInput/index.js +3 -0
  98. package/dist/components/Radio/Radio.js +7 -6
  99. package/dist/components/Radio/RadioGroup.js +5 -4
  100. package/dist/components/Radio/RadioGroupCore.js +23 -14
  101. package/dist/components/Rating/Rating.js +5 -4
  102. package/dist/components/Rating/RatingCore.js +62 -28
  103. package/dist/components/Resizable/index.js +1 -1
  104. package/dist/components/Segmented/Segmented.js +5 -4
  105. package/dist/components/Segmented/SegmentedCore.js +22 -18
  106. package/dist/components/Select/OptionGroup.js +12 -0
  107. package/dist/components/Select/Select.js +19 -9
  108. package/dist/components/Select/SelectCore.js +73 -13
  109. package/dist/components/Select/SelectFloating.js +248 -0
  110. package/dist/components/Select/index.js +5 -4
  111. package/dist/components/Select/select-options.js +57 -0
  112. package/dist/components/Sidebar/Sidebar.js +9 -9
  113. package/dist/components/Skeleton/Skeleton.js +0 -1
  114. package/dist/components/Skeleton/index.js +0 -1
  115. package/dist/components/Slider/Slider.js +16 -8
  116. package/dist/components/Slider/SliderCore.js +75 -12
  117. package/dist/components/Stat/Stat.js +0 -1
  118. package/dist/components/Stat/index.js +0 -1
  119. package/dist/components/Switch/Switch.js +6 -5
  120. package/dist/components/Switch/SwitchCore.js +3 -2
  121. package/dist/components/Tabs/Tab.js +7 -4
  122. package/dist/components/Tabs/TabList.js +38 -7
  123. package/dist/components/Tabs/TabPanel.js +4 -3
  124. package/dist/components/Tabs/Tabs.js +11 -6
  125. package/dist/components/TagGroup/TagGroup.js +19 -7
  126. package/dist/components/TagGroup/TagGroupItem.js +17 -11
  127. package/dist/components/TagInput/TagInput.js +10 -8
  128. package/dist/components/TagInput/TagInputCore.js +94 -57
  129. package/dist/components/Textarea/Textarea.js +6 -5
  130. package/dist/components/Textarea/TextareaCore.js +3 -2
  131. package/dist/components/TimePicker/TimePicker.js +6 -5
  132. package/dist/components/TimePicker/TimePickerCore.js +3 -2
  133. package/dist/components/Toast/Toast.js +23 -22
  134. package/dist/components/Toast/ToastContainer.js +67 -47
  135. package/dist/components/Toast/ToastContext.js +23 -4
  136. package/dist/components/Toast/toast2.js +63 -28
  137. package/dist/components/Toast/useToast.js +9 -7
  138. package/dist/components/Toggle/Toggle.js +20 -0
  139. package/dist/components/Toggle/ToggleCore.js +31 -0
  140. package/dist/components/Toggle/index.js +4 -0
  141. package/dist/components/Toolbar/Toolbar.js +33 -32
  142. package/dist/components/Toolbar/ToolbarToggle.js +31 -0
  143. package/dist/components/Toolbar/index.js +2 -1
  144. package/dist/components/Tooltip/Tooltip.js +1 -1
  145. package/dist/components/Tour/Tour.js +57 -53
  146. package/dist/components/Tree/Tree.js +199 -77
  147. package/dist/components/Tree/TreeItem.js +17 -15
  148. package/dist/components/Tree/utils.js +26 -10
  149. package/dist/components/Typography/Typography.js +0 -1
  150. package/dist/components/Typography/index.js +0 -1
  151. package/dist/components/Upload/Upload.js +21 -8
  152. package/dist/components/Upload/UploadCore.js +224 -37
  153. package/dist/components/Upload/UploadList.js +172 -0
  154. package/dist/components/Upload/xhr-upload.js +22 -0
  155. package/dist/components/VirtualList/VirtualList.js +84 -56
  156. package/dist/components/Watermark/Watermark.js +55 -0
  157. package/dist/components/Watermark/index.js +3 -0
  158. package/dist/css/anchor.css +2 -0
  159. package/dist/css/app-shell.css +2 -0
  160. package/dist/css/badge.css +1 -1
  161. package/dist/css/bottom-sheet.css +1 -1
  162. package/dist/css/button.css +1 -1
  163. package/dist/css/calendar.css +1 -1
  164. package/dist/css/cascader.css +1 -1
  165. package/dist/css/chart.css +2 -0
  166. package/dist/css/chat-container.css +1 -1
  167. package/dist/css/chat-message.css +1 -1
  168. package/dist/css/combobox.css +3 -2
  169. package/dist/css/command.css +2 -1
  170. package/dist/css/context-menu.css +1 -1
  171. package/dist/css/data-table.css +2 -1
  172. package/dist/css/date-range-picker.css +1 -1
  173. package/dist/css/datepicker.css +2 -2
  174. package/dist/css/dialog.css +1 -1
  175. package/dist/css/dropdown-menu.css +4 -1
  176. package/dist/css/image.css +2 -1
  177. package/dist/css/menu.css +4 -1
  178. package/dist/css/popover.css +1 -1
  179. package/dist/css/prompt-input.css +2 -0
  180. package/dist/css/rating.css +1 -1
  181. package/dist/css/select.css +3 -1
  182. package/dist/css/slider.css +1 -1
  183. package/dist/css/tag-group.css +2 -0
  184. package/dist/css/tag-input.css +3 -1
  185. package/dist/css/toggle.css +2 -0
  186. package/dist/css/toolbar.css +1 -0
  187. package/dist/css/tooltip.css +1 -1
  188. package/dist/css/tree.css +1 -1
  189. package/dist/css/upload.css +2 -1
  190. package/dist/css/watermark.css +2 -0
  191. package/dist/css-manifest.json +60 -1
  192. package/dist/form/FormItem.js +55 -50
  193. package/dist/form/FormList.js +79 -0
  194. package/dist/form/index.js +5 -1
  195. package/dist/form/standard-schema.js +16 -0
  196. package/dist/haze-ui.css +51 -27
  197. package/dist/headless/index.js +7 -0
  198. package/dist/hooks/useClickOutside.js +24 -0
  199. package/dist/hooks/useFullscreen.js +42 -0
  200. package/dist/hooks/useHotkeys.js +77 -0
  201. package/dist/hooks/useInView.js +27 -0
  202. package/dist/hooks/useLocalStorage.js +8 -0
  203. package/dist/hooks/useMediaQuery.js +2 -1
  204. package/dist/hooks/usePrevious.js +11 -0
  205. package/dist/hooks/useSessionStorage.js +8 -0
  206. package/dist/hooks/useStorageState.js +80 -0
  207. package/dist/index.js +205 -171
  208. package/dist/registry.json +2259 -91
  209. package/dist/tokens/colors.js +0 -1
  210. package/dist/tokens/index.js +0 -1
  211. package/dist/tokens/motion.js +0 -1
  212. package/dist/tokens/oklch.js +0 -1
  213. package/dist/tokens/palette.js +0 -1
  214. package/dist/tokens/registry.js +17 -28
  215. package/dist/tokens/spacing.js +0 -1
  216. package/dist/tokens/typography.js +0 -1
  217. package/dist/types/components/Anchor/Anchor.d.ts +25 -0
  218. package/dist/types/components/Anchor/index.d.ts +2 -0
  219. package/dist/types/components/AppShell/AppShell.d.ts +17 -0
  220. package/dist/types/components/AppShell/index.d.ts +2 -0
  221. package/dist/types/components/Badge/badge-styles.d.ts +21 -0
  222. package/dist/types/components/Badge/index.d.ts +1 -0
  223. package/dist/types/components/BottomSheet/BottomSheet.d.ts +52 -3
  224. package/dist/types/components/BottomSheet/index.d.ts +1 -1
  225. package/dist/types/components/Button/Button.d.ts +7 -0
  226. package/dist/types/components/Button/ButtonLink.d.ts +3 -0
  227. package/dist/types/components/Button/index.d.ts +1 -0
  228. package/dist/types/components/Button/styles.d.ts +17 -0
  229. package/dist/types/components/Calendar/Calendar.d.ts +71 -7
  230. package/dist/types/components/Calendar/date.d.ts +52 -0
  231. package/dist/types/components/Calendar/index.d.ts +1 -1
  232. package/dist/types/components/Cascader/Cascader.d.ts +29 -3
  233. package/dist/types/components/Chart/Chart.d.ts +29 -0
  234. package/dist/types/components/Chart/chart-elements.d.ts +52 -0
  235. package/dist/types/components/Chart/index.d.ts +2 -0
  236. package/dist/types/components/ChatContainer/ChatContainer.d.ts +18 -3
  237. package/dist/types/components/ChatInput/ChatInput.d.ts +11 -1
  238. package/dist/types/components/ChatMessage/ChatMessage.d.ts +13 -1
  239. package/dist/types/components/Checkbox/Checkbox.d.ts +6 -2
  240. package/dist/types/components/Checkbox/CheckboxCore.d.ts +4 -2
  241. package/dist/types/components/Collapsible/Collapsible.d.ts +24 -2
  242. package/dist/types/components/Collapsible/index.d.ts +1 -1
  243. package/dist/types/components/ColorPicker/ColorPicker.d.ts +7 -1
  244. package/dist/types/components/ColorPicker/ColorPickerCore.d.ts +7 -1
  245. package/dist/types/components/Combobox/Combobox.d.ts +101 -7
  246. package/dist/types/components/Combobox/ComboboxGroup.d.ts +22 -0
  247. package/dist/types/components/Combobox/ComboboxOption.d.ts +7 -2
  248. package/dist/types/components/Combobox/index.d.ts +3 -1
  249. package/dist/types/components/Command/Command.d.ts +70 -6
  250. package/dist/types/components/Command/CommandDialog.d.ts +36 -0
  251. package/dist/types/components/Command/command-filter.d.ts +34 -0
  252. package/dist/types/components/Command/index.d.ts +4 -2
  253. package/dist/types/components/DataTable/CellEditor.d.ts +24 -0
  254. package/dist/types/components/DataTable/DataTable.d.ts +149 -32
  255. package/dist/types/components/DataTable/features.d.ts +118 -0
  256. package/dist/types/components/DataTable/index.d.ts +2 -1
  257. package/dist/types/components/DataTable/summary.d.ts +19 -0
  258. package/dist/types/components/DateRangePicker/DateRangePicker.d.ts +15 -1
  259. package/dist/types/components/DateRangePicker/DateRangePickerCore.d.ts +26 -2
  260. package/dist/types/components/DateRangePicker/index.d.ts +1 -1
  261. package/dist/types/components/Datepicker/Datepicker.d.ts +17 -1
  262. package/dist/types/components/Datepicker/DatepickerCore.d.ts +24 -2
  263. package/dist/types/components/Datepicker/index.d.ts +1 -1
  264. package/dist/types/components/Dialog/Dialog.d.ts +68 -3
  265. package/dist/types/components/Dialog/index.d.ts +1 -1
  266. package/dist/types/components/Drawer/Drawer.d.ts +33 -3
  267. package/dist/types/components/Drawer/index.d.ts +1 -1
  268. package/dist/types/components/DropdownMenu/DropdownMenu.d.ts +23 -3
  269. package/dist/types/components/DropdownMenu/DropdownMenuSub.d.ts +18 -0
  270. package/dist/types/components/DropdownMenu/DropdownMenuSubContent.d.ts +13 -0
  271. package/dist/types/components/DropdownMenu/DropdownMenuSubTrigger.d.ts +14 -0
  272. package/dist/types/components/DropdownMenu/index.d.ts +7 -1
  273. package/dist/types/components/Fullscreen/Fullscreen.d.ts +34 -0
  274. package/dist/types/components/Fullscreen/index.d.ts +3 -0
  275. package/dist/types/components/Image/Image.d.ts +20 -5
  276. package/dist/types/components/Image/ImagePreview.d.ts +13 -0
  277. package/dist/types/components/Image/index.d.ts +1 -1
  278. package/dist/types/components/Input/Input.d.ts +5 -2
  279. package/dist/types/components/Input/InputCore.d.ts +4 -2
  280. package/dist/types/components/LocaleProvider/LocaleContext.d.ts +9 -0
  281. package/dist/types/components/LocaleProvider/LocaleProvider.d.ts +12 -1
  282. package/dist/types/components/LocaleProvider/index.d.ts +2 -0
  283. package/dist/types/components/LocaleProvider/locale.d.ts +56 -0
  284. package/dist/types/components/LocaleProvider/strings.d.ts +28 -0
  285. package/dist/types/components/Mentions/Mentions.d.ts +5 -2
  286. package/dist/types/components/Mentions/MentionsCore.d.ts +4 -2
  287. package/dist/types/components/Menu/MenuSub.d.ts +18 -0
  288. package/dist/types/components/Menu/MenuSubContent.d.ts +12 -0
  289. package/dist/types/components/Menu/MenuSubTrigger.d.ts +14 -0
  290. package/dist/types/components/Menu/index.d.ts +6 -0
  291. package/dist/types/components/NumberInput/NumberInput.d.ts +5 -2
  292. package/dist/types/components/NumberInput/NumberInputCore.d.ts +4 -2
  293. package/dist/types/components/OTPInput/OTPInput.d.ts +5 -1
  294. package/dist/types/components/OTPInput/OTPInputCore.d.ts +4 -1
  295. package/dist/types/components/PasswordInput/PasswordInput.d.ts +5 -1
  296. package/dist/types/components/PasswordInput/PasswordInputCore.d.ts +4 -1
  297. package/dist/types/components/Popover/Popover.d.ts +41 -3
  298. package/dist/types/components/Popover/index.d.ts +1 -1
  299. package/dist/types/components/PromptInput/PromptInput.d.ts +46 -0
  300. package/dist/types/components/PromptInput/index.d.ts +2 -0
  301. package/dist/types/components/Radio/Radio.d.ts +5 -2
  302. package/dist/types/components/Radio/RadioGroup.d.ts +8 -2
  303. package/dist/types/components/Radio/RadioGroupCore.d.ts +7 -2
  304. package/dist/types/components/Rating/Rating.d.ts +8 -1
  305. package/dist/types/components/Rating/RatingCore.d.ts +7 -1
  306. package/dist/types/components/Resizable/index.d.ts +2 -0
  307. package/dist/types/components/Segmented/Segmented.d.ts +8 -1
  308. package/dist/types/components/Segmented/SegmentedCore.d.ts +7 -2
  309. package/dist/types/components/Select/OptionGroup.d.ts +16 -0
  310. package/dist/types/components/Select/Select.d.ts +66 -4
  311. package/dist/types/components/Select/SelectCore.d.ts +70 -6
  312. package/dist/types/components/Select/SelectFloating.d.ts +83 -0
  313. package/dist/types/components/Select/index.d.ts +2 -0
  314. package/dist/types/components/Select/select-options.d.ts +53 -0
  315. package/dist/types/components/Slider/Slider.d.ts +29 -4
  316. package/dist/types/components/Slider/SliderCore.d.ts +35 -6
  317. package/dist/types/components/Switch/Switch.d.ts +5 -2
  318. package/dist/types/components/Switch/SwitchCore.d.ts +4 -2
  319. package/dist/types/components/Tabs/TabList.d.ts +7 -0
  320. package/dist/types/components/Tabs/Tabs.d.ts +8 -1
  321. package/dist/types/components/Tabs/TabsContext.d.ts +20 -0
  322. package/dist/types/components/Tabs/index.d.ts +1 -0
  323. package/dist/types/components/TagGroup/TagGroup.d.ts +13 -1
  324. package/dist/types/components/TagInput/TagInput.d.ts +12 -1
  325. package/dist/types/components/TagInput/TagInputCore.d.ts +11 -1
  326. package/dist/types/components/Textarea/Textarea.d.ts +5 -2
  327. package/dist/types/components/Textarea/TextareaCore.d.ts +4 -2
  328. package/dist/types/components/TimePicker/TimePicker.d.ts +5 -2
  329. package/dist/types/components/TimePicker/TimePickerCore.d.ts +4 -2
  330. package/dist/types/components/Toast/Toast.d.ts +31 -2
  331. package/dist/types/components/Toast/ToastContainer.d.ts +11 -1
  332. package/dist/types/components/Toast/ToastContext.d.ts +44 -3
  333. package/dist/types/components/Toast/index.d.ts +1 -1
  334. package/dist/types/components/Toast/toast.d.ts +35 -4
  335. package/dist/types/components/Toast/useToast.d.ts +16 -4
  336. package/dist/types/components/Toggle/Toggle.d.ts +19 -0
  337. package/dist/types/components/Toggle/ToggleCore.d.ts +23 -0
  338. package/dist/types/components/Toggle/index.d.ts +4 -0
  339. package/dist/types/components/Toolbar/ToolbarToggle.d.ts +19 -0
  340. package/dist/types/components/Toolbar/index.d.ts +2 -0
  341. package/dist/types/components/Tour/Tour.d.ts +3 -3
  342. package/dist/types/components/Tree/Tree.d.ts +3 -3
  343. package/dist/types/components/Tree/TreeItem.d.ts +6 -1
  344. package/dist/types/components/Tree/types.d.ts +26 -0
  345. package/dist/types/components/Tree/utils.d.ts +32 -0
  346. package/dist/types/components/Upload/Upload.d.ts +38 -3
  347. package/dist/types/components/Upload/UploadCore.d.ts +75 -4
  348. package/dist/types/components/Upload/UploadList.d.ts +12 -0
  349. package/dist/types/components/Upload/index.d.ts +1 -0
  350. package/dist/types/components/Upload/types.d.ts +60 -0
  351. package/dist/types/components/Upload/xhr-upload.d.ts +20 -0
  352. package/dist/types/components/VirtualList/VirtualList.d.ts +16 -1
  353. package/dist/types/components/Watermark/Watermark.d.ts +32 -0
  354. package/dist/types/components/Watermark/index.d.ts +2 -0
  355. package/dist/types/form/FormItem.d.ts +33 -8
  356. package/dist/types/form/FormList.d.ts +113 -0
  357. package/dist/types/form/index.d.ts +26 -0
  358. package/dist/types/form/standard-schema.d.ts +30 -0
  359. package/dist/types/headless/index.d.ts +182 -0
  360. package/dist/types/hooks/index.d.ts +11 -0
  361. package/dist/types/hooks/useClickOutside.d.ts +46 -0
  362. package/dist/types/hooks/useFullscreen.d.ts +33 -0
  363. package/dist/types/hooks/useHotkeys.d.ts +53 -0
  364. package/dist/types/hooks/useInView.d.ts +32 -0
  365. package/dist/types/hooks/useLocalStorage.d.ts +33 -0
  366. package/dist/types/hooks/useMediaQuery.d.ts +3 -0
  367. package/dist/types/hooks/usePrevious.d.ts +18 -0
  368. package/dist/types/hooks/useSessionStorage.d.ts +26 -0
  369. package/dist/types/hooks/useStorageState.d.ts +12 -0
  370. package/dist/types/index.d.ts +57 -32
  371. package/dist/types/utils/collision.d.ts +39 -1
  372. package/dist/types/utils/direction.d.ts +22 -0
  373. package/dist/types/utils/floating.d.ts +32 -4
  374. package/dist/types/utils/focus-scope.d.ts +2 -1
  375. package/dist/types/utils/focus.d.ts +2 -1
  376. package/dist/types/utils/menuKeyboard.d.ts +19 -4
  377. package/dist/types/utils/refs.d.ts +16 -0
  378. package/dist/types/utils/sortable-shared.d.ts +42 -0
  379. package/dist/types/utils/sortable.d.ts +36 -0
  380. package/dist/types/utils/submenu.d.ts +63 -0
  381. package/dist/types/utils/view-transition.d.ts +28 -0
  382. package/dist/utils/classnames.js +0 -1
  383. package/dist/utils/collision.js +37 -26
  384. package/dist/utils/direction.js +34 -0
  385. package/dist/utils/floating.js +163 -143
  386. package/dist/utils/menuKeyboard.js +59 -46
  387. package/dist/utils/refs.js +9 -0
  388. package/dist/utils/sortable-shared.js +24 -0
  389. package/dist/utils/sortable.js +46 -0
  390. package/dist/utils/submenu.js +104 -0
  391. package/dist/utils/view-transition.js +26 -0
  392. package/package.json +109 -16
@@ -1,92 +1,211 @@
1
1
 
2
2
  "use client";
3
3
  import { classnames as e } from "../../utils/classnames.js";
4
- import { FloatingPanel as t, useFloating as n } from "../../utils/floating.js";
5
- import r from "../VirtualList/VirtualList.js";
4
+ import { mergeRefs as t } from "../../utils/refs.js";
5
+ import { formatString as n } from "../LocaleProvider/locale.js";
6
+ import { useStrings as r } from "../LocaleProvider/useStrings.js";
7
+ import { FloatingPanel as ee, useFloating as te } from "../../utils/floating.js";
8
+ import ne from "../Chip/Chip.js";
9
+ import re from "../Spinner/Spinner.js";
10
+ import ie from "../VirtualList/VirtualList.js";
11
+ import ae from "./ComboboxGroup.js";
6
12
  import i from "./ComboboxOption.js";
7
13
  /* empty css */
8
- import { jsx as a, jsxs as o } from "react/jsx-runtime";
9
- import { useEffect as s, useId as c, useRef as l, useState as u } from "react";
10
- import { useControl as d } from "react-use-control";
14
+ import { Fragment as a, jsx as o, jsxs as s } from "react/jsx-runtime";
15
+ import { useCallback as oe, useEffect as se, useId as ce, useMemo as le, useRef as c, useState as l } from "react";
16
+ import { useControl as u } from "react-use-control";
11
17
  //#region src/lib/components/Combobox/Combobox.tsx
12
- var f = "haze-Combobox__wrapper", p = "haze-Combobox__input", m = "haze-Combobox__listbox", h = "haze-Combobox__listboxVirtual", g = 200, _ = 37, v = "haze-Combobox__virtualRow";
13
- function y({ value: y, open: b, options: x, placeholder: S, virtualThreshold: C = 100, className: w }) {
14
- let [T, E] = d(y, ""), [D, O] = u(""), [k, A] = d(b, !1), [j, M] = u(-1), [N, P] = u(D), F = c(), I = l(null), L = l(null), R = l(null), z = n({
15
- open: k,
16
- setOpen: A,
17
- triggerRef: I,
18
- panelRef: L,
18
+ var ue = "haze-Combobox__wrapper", de = "haze-Combobox__input", fe = "haze-Combobox__multiBox", pe = "haze-Combobox__multiInput", d = "haze-Combobox__matchMark", f = "haze-Combobox__stateRow", me = "haze-Combobox__groupHeadingText", he = "haze-Combobox__listbox", ge = "haze-Combobox__listboxVirtual", _e = 200, ve = 37, ye = "haze-Combobox__virtualRow";
19
+ function be(t, n) {
20
+ if (n === "") return t;
21
+ let r = t.toLowerCase().indexOf(n.toLowerCase());
22
+ return r < 0 ? t : /* @__PURE__ */ s(a, { children: [
23
+ t.slice(0, r),
24
+ /* @__PURE__ */ o("mark", {
25
+ className: e([d]),
26
+ children: t.slice(r, r + n.length)
27
+ }),
28
+ t.slice(r + n.length)
29
+ ] });
30
+ }
31
+ function p({ value: a, open: d, options: p, multiple: m = !1, onValuesChange: h, creatable: xe = !1, onCreate: Se, loading: g = !1, empty: Ce, highlightMatches: we = !1, maxHeight: _, placeholder: Te, virtualThreshold: v = 100, virtualized: y, className: Ee, ref: b }) {
32
+ let x = r("combobox"), [S, C] = u(a, m ? [] : ""), [w, De] = l([]), [T, E] = l(""), [D, O] = u(d, !1), [k, A] = l(-1), [Oe, ke] = l(T), j = ce(), M = c(null), Ae = oe((e) => t(M, b)(e), [M, b]), N = c(null), P = c(null), F = c(null), I = c(null), L = te({
33
+ open: D,
34
+ setOpen: O,
35
+ triggerRef: m ? N : M,
36
+ panelRef: P,
19
37
  animated: !0
20
- }), B = x.filter((e) => e.label.toLowerCase().includes(D.toLowerCase())), V = C > 0 && B.length > C, H = (e) => `${F}-option-${e}`, U = k && B[j] ? H(j) : void 0;
21
- s(() => {
22
- !V || !z.shown || j < 0 || R.current?.scrollToIndex(j, "auto");
38
+ }), R = Array.isArray(S) ? S : [], z = le(() => {
39
+ if (w.length === 0) return p;
40
+ let e = new Set(p.map((e) => e.value)), t = w.filter((t) => !e.has(t)).map((e) => ({
41
+ value: e,
42
+ label: e
43
+ }));
44
+ return t.length > 0 ? [...p, ...t] : p;
45
+ }, [p, w]), B = z.filter((e) => e.label.toLowerCase().includes(T.toLowerCase())), V = xe && !g && T.trim() !== "" && B.length === 0, H = T.trim(), je = n(x.create, { query: H }), U = V ? [{
46
+ value: H,
47
+ label: H
48
+ }, ...B] : B, W = typeof y == "object" ? y : void 0, G = (y === void 0 ? void 0 : !!y) ?? (v > 0 && U.length > v), K = W?.itemHeight ?? ve, Me = W?.overscan, q = (e) => `${j}-option-${e}`, Ne = D && U[k] ? q(k) : void 0, J = [];
49
+ for (let e = 0; e < U.length; e++) {
50
+ let t = U[e];
51
+ if (t === void 0) continue;
52
+ let n = J[J.length - 1];
53
+ if (t.group !== void 0 && n?.label === t.group) {
54
+ n.rows.push({
55
+ option: t,
56
+ index: e
57
+ });
58
+ continue;
59
+ }
60
+ J.push(t.group === void 0 ? {
61
+ key: `row-${t.value}`,
62
+ label: void 0,
63
+ rows: [{
64
+ option: t,
65
+ index: e
66
+ }]
67
+ } : {
68
+ key: `group-${t.group}`,
69
+ label: t.group,
70
+ rows: [{
71
+ option: t,
72
+ index: e
73
+ }]
74
+ });
75
+ }
76
+ let Pe = J.some((e) => e.label !== void 0);
77
+ se(() => {
78
+ if (!L.shown || k < 0) return;
79
+ if (G) {
80
+ F.current?.scrollToIndex(k, "auto");
81
+ return;
82
+ }
83
+ let e = I.current;
84
+ e && typeof e.scrollIntoView == "function" && e.scrollIntoView({ block: "nearest" });
23
85
  }, [
24
- V,
25
- z.shown,
26
- j
27
- ]), D !== N && (P(D), M(-1));
28
- let W = (e) => {
29
- E(e);
30
- let t = x.find((t) => t.value === e)?.label ?? e;
31
- O(t), A(!1), I.current?.focus();
32
- };
33
- return /* @__PURE__ */ o("div", {
34
- className: e([f, w]),
35
- children: [/* @__PURE__ */ a("input", {
36
- ref: I,
37
- role: "combobox",
38
- style: z.triggerStyle,
39
- "aria-expanded": k,
40
- "aria-controls": F,
41
- "aria-autocomplete": "list",
42
- "aria-activedescendant": U,
43
- className: p,
44
- value: D,
45
- placeholder: S,
46
- onChange: (e) => {
47
- O(e.target.value), A(!0);
86
+ G,
87
+ L.shown,
88
+ k
89
+ ]), T !== Oe && (ke(T), A(-1));
90
+ let Y = (e) => m ? R.includes(e) : S === e, Fe = (e) => z.find((t) => t.value === e)?.label ?? e, X = (e, t) => {
91
+ let n = t ?? z.find((t) => t.value === e)?.label ?? e;
92
+ if (m) {
93
+ let t = R.includes(e) ? R.filter((t) => t !== e) : [...R, e];
94
+ C(t), h?.(t), E("");
95
+ } else C(e), h?.(e), E(n), O(!1);
96
+ M.current?.focus();
97
+ }, Ie = () => {
98
+ Se?.(H), De((e) => e.includes(H) ? e : [...e, H]), X(H, H);
99
+ }, Z = (e) => {
100
+ if (V && e === H) {
101
+ Ie();
102
+ return;
103
+ }
104
+ X(e);
105
+ }, Le = (e) => {
106
+ if (e.key === "ArrowDown") e.preventDefault(), O(!0), A((e) => Math.min(e + 1, U.length - 1));
107
+ else if (e.key === "ArrowUp") e.preventDefault(), O(!0), A((e) => Math.max(e - 1, 0));
108
+ else if (e.key === "Enter" && k >= 0 && U[k]) e.preventDefault(), Z(U[k].value);
109
+ else if (e.key === "Escape") O(!1);
110
+ else if (e.key === "Backspace" && m && T === "" && R.length > 0) {
111
+ e.preventDefault();
112
+ let t = R.slice(0, -1);
113
+ C(t), h?.(t);
114
+ }
115
+ }, Q = (e, t, n) => /* @__PURE__ */ o(i, {
116
+ ref: !n && t === k ? I : void 0,
117
+ value: e.value,
118
+ id: q(t),
119
+ setSize: U.length,
120
+ posInSet: t + 1,
121
+ highlighted: t === k,
122
+ selected: Y(e.value),
123
+ onSelect: Z,
124
+ className: n ? ye : void 0,
125
+ children: V && t === 0 ? je : we ? be(e.label, T) : e.label
126
+ }, e.value), $ = /* @__PURE__ */ o("input", {
127
+ ref: Ae,
128
+ role: "combobox",
129
+ style: m ? void 0 : L.triggerStyle,
130
+ "aria-expanded": D,
131
+ "aria-controls": j,
132
+ "aria-autocomplete": "list",
133
+ "aria-activedescendant": Ne,
134
+ "aria-busy": g || void 0,
135
+ className: m ? pe : de,
136
+ value: T,
137
+ placeholder: Te,
138
+ onChange: (e) => {
139
+ E(e.target.value), O(!0);
140
+ },
141
+ onPointerDown: m ? void 0 : L.onTriggerPointerDown,
142
+ onClick: m ? void 0 : L.onTriggerClick,
143
+ onKeyDown: Le
144
+ });
145
+ return /* @__PURE__ */ s("div", {
146
+ className: e([ue, Ee]),
147
+ children: [m ? /* @__PURE__ */ s("div", {
148
+ ref: N,
149
+ style: L.triggerStyle,
150
+ onPointerDown: L.onTriggerPointerDown,
151
+ onClick: () => {
152
+ L.onTriggerClick(), M.current?.focus();
48
153
  },
49
- onPointerDown: z.onTriggerPointerDown,
50
- onClick: z.onTriggerClick,
51
- onKeyDown: (e) => {
52
- e.key === "ArrowDown" ? (e.preventDefault(), A(!0), M((e) => Math.min(e + 1, B.length - 1))) : e.key === "ArrowUp" ? (e.preventDefault(), A(!0), M((e) => Math.max(e - 1, 0))) : e.key === "Enter" && j >= 0 && B[j] ? (e.preventDefault(), W(B[j].value)) : e.key === "Escape" && A(!1);
53
- }
54
- }), /* @__PURE__ */ a(t, {
55
- ref: L,
56
- behavior: z,
154
+ className: e(fe),
155
+ children: [R.map((e) => /* @__PURE__ */ o("span", {
156
+ onClick: (e) => e.stopPropagation(),
157
+ children: /* @__PURE__ */ o(ne, {
158
+ color: "primary",
159
+ onClose: () => {
160
+ let t = R.filter((t) => t !== e);
161
+ C(t), h?.(t);
162
+ },
163
+ children: Fe(e)
164
+ })
165
+ }, e)), $]
166
+ }) : $, /* @__PURE__ */ o(ee, {
167
+ ref: P,
168
+ behavior: L,
57
169
  placement: "bottom-span",
58
- id: F,
170
+ id: j,
59
171
  role: "listbox",
60
- visualClass: V ? h : m,
61
- children: V ? /* @__PURE__ */ a(r, {
62
- ref: R,
172
+ "aria-multiselectable": m ? "true" : void 0,
173
+ visualClass: G ? ge : he,
174
+ style: _ !== void 0 && !G ? { maxHeight: `${_}px` } : void 0,
175
+ children: g ? /* @__PURE__ */ o("div", {
176
+ role: "option",
177
+ "aria-selected": !1,
178
+ "aria-disabled": "true",
179
+ className: e([f]),
180
+ children: /* @__PURE__ */ o(re, { size: "sm" })
181
+ }) : U.length === 0 ? /* @__PURE__ */ o("div", {
182
+ role: "option",
183
+ "aria-selected": !1,
184
+ "aria-disabled": "true",
185
+ className: e([f]),
186
+ children: Ce ?? x.noResults
187
+ }) : G ? /* @__PURE__ */ o(ie, {
188
+ ref: F,
63
189
  "data-virtualized": !0,
64
- items: B,
65
- height: g,
66
- itemHeight: _,
67
- renderItem: (e, t) => /* @__PURE__ */ a(i, {
68
- value: e.value,
69
- id: H(t),
70
- setSize: B.length,
71
- posInSet: t + 1,
72
- highlighted: t === j,
73
- selected: e.value === T,
74
- onSelect: W,
75
- className: v,
76
- children: e.label
77
- })
78
- }) : B.map((e, t) => /* @__PURE__ */ a(i, {
79
- value: e.value,
80
- id: H(t),
81
- setSize: B.length,
82
- posInSet: t + 1,
83
- highlighted: t === j,
84
- selected: e.value === T,
85
- onSelect: W,
86
- children: e.label
87
- }, e.value))
190
+ items: U,
191
+ height: Math.min(_ ?? _e, U.length * K),
192
+ itemHeight: K,
193
+ overscan: Me,
194
+ groups: Pe ? J.filter((e) => e.label !== void 0).map((t) => ({
195
+ startIndex: t.rows[0]?.index ?? 0,
196
+ key: t.key,
197
+ render: () => /* @__PURE__ */ o("div", {
198
+ className: e([me]),
199
+ children: t.label
200
+ })
201
+ })) : void 0,
202
+ renderItem: (e, t) => Q(e, t, !0)
203
+ }) : J.flatMap((e) => e.label === void 0 ? e.rows.map(({ option: e, index: t }) => Q(e, t, !1)) : [/* @__PURE__ */ o(ae, {
204
+ label: e.label,
205
+ children: e.rows.map(({ option: e, index: t }) => Q(e, t, !1))
206
+ }, e.key)])
88
207
  })]
89
208
  });
90
209
  }
91
210
  //#endregion
92
- export { y as default };
211
+ export { p as default };
@@ -0,0 +1,23 @@
1
+
2
+ "use client";
3
+ import { classnames as e } from "../../utils/classnames.js";
4
+ /* empty css */
5
+ import { jsx as t, jsxs as n } from "react/jsx-runtime";
6
+ import { useId as r } from "react";
7
+ //#region src/lib/components/Combobox/ComboboxGroup.tsx
8
+ var i = "haze-ComboboxGroup__groupHeading";
9
+ function a({ label: a, className: o, children: s }) {
10
+ let c = r();
11
+ return /* @__PURE__ */ n("div", {
12
+ role: "group",
13
+ "aria-labelledby": c,
14
+ className: e([o]),
15
+ children: [/* @__PURE__ */ t("div", {
16
+ id: c,
17
+ className: e([i]),
18
+ children: a
19
+ }), s]
20
+ });
21
+ }
22
+ //#endregion
23
+ export { a as default };
@@ -5,21 +5,22 @@ import { classnames as e } from "../../utils/classnames.js";
5
5
  import { jsx as t } from "react/jsx-runtime";
6
6
  //#region src/lib/components/Combobox/ComboboxOption.tsx
7
7
  var n = "haze-ComboboxOption__option", r = "haze-ComboboxOption__highlightedStyle", i = "haze-ComboboxOption__selectedStyle";
8
- function a({ value: a, highlighted: o = !1, selected: s = !1, id: c, setSize: l, posInSet: u, onSelect: d, className: f, children: p }) {
8
+ function a({ value: a, highlighted: o = !1, selected: s = !1, id: c, ref: l, setSize: u, posInSet: d, onSelect: f, className: p, children: m }) {
9
9
  return /* @__PURE__ */ t("div", {
10
+ ref: l,
10
11
  role: "option",
11
12
  id: c,
12
13
  "aria-selected": s || o,
13
- "aria-setsize": l,
14
- "aria-posinset": u,
15
- onClick: () => d?.(a),
14
+ "aria-setsize": u,
15
+ "aria-posinset": d,
16
+ onClick: () => f?.(a),
16
17
  className: e([
17
18
  n,
18
19
  o && r,
19
20
  s && i,
20
- f
21
+ p
21
22
  ]),
22
- children: p
23
+ children: m
23
24
  });
24
25
  }
25
26
  //#endregion
@@ -1,4 +1,5 @@
1
1
  "use client";
2
- import e from "./ComboboxOption.js";
3
- import t from "./Combobox.js";
4
- export { t as Combobox, e as ComboboxOption };
2
+ import e from "./ComboboxGroup.js";
3
+ import t from "./ComboboxOption.js";
4
+ import n from "./Combobox.js";
5
+ export { n as Combobox, e as ComboboxGroup, t as ComboboxOption };
@@ -1,95 +1,138 @@
1
1
 
2
2
  "use client";
3
3
  import { classnames as e } from "../../utils/classnames.js";
4
- import { getEnabledMenuItems as t, useMenuKeyboard as n, useRovingTabindex as r } from "../../utils/menuKeyboard.js";
4
+ import { mergeRefs as t } from "../../utils/refs.js";
5
+ import { useStrings as n } from "../LocaleProvider/useStrings.js";
6
+ import { getEnabledMenuItems as r, useMenuKeyboard as i, useRovingTabindex as a } from "../../utils/menuKeyboard.js";
7
+ import o from "../Kbd/Kbd.js";
8
+ import { collectCommandItems as s, commandItemMatches as c } from "./command-filter.js";
5
9
  /* empty css */
6
- import { jsx as i } from "react/jsx-runtime";
7
- import { createContext as a, useContext as o, useId as s, useMemo as c, useRef as l } from "react";
8
- import { useControl as u } from "react-use-control";
10
+ import { jsx as l, jsxs as u } from "react/jsx-runtime";
11
+ import { Children as d, createContext as f, useContext as p, useId as m, useMemo as h, useRef as g } from "react";
12
+ import { useControl as _ } from "react-use-control";
9
13
  //#region src/lib/components/Command/Command.tsx
10
- var d = "[role=\"option\"]", f = a(void 0);
11
- function p() {
12
- let e = o(f);
14
+ var v = "[role=\"option\"]", y = f(void 0);
15
+ function b() {
16
+ let e = p(y);
13
17
  if (!e) throw Error("Command sub-components must be used within <Command>");
14
18
  return e;
15
19
  }
16
- var m = "haze-Command__base";
17
- function h({ query: t, children: n, className: r }) {
18
- let [a, o] = u(t, ""), d = l(null), p = l(null), h = s(), g = c(() => ({
19
- query: a,
20
- setQuery: o,
21
- inputRef: d,
22
- listRef: p,
23
- listId: h
20
+ var x = "haze-Command__base";
21
+ function S({ query: t, shouldFilter: n = !0, onItemSelect: r, children: i, className: a }) {
22
+ let [o, s] = _(t, ""), c = g(null), u = g(null), d = m(), f = h(() => ({
23
+ query: o,
24
+ setQuery: s,
25
+ shouldFilter: n,
26
+ onItemSelect: r,
27
+ inputRef: c,
28
+ listRef: u,
29
+ listId: d
24
30
  }), [
25
- a,
26
31
  o,
27
- h
32
+ s,
33
+ n,
34
+ r,
35
+ d
28
36
  ]);
29
- return /* @__PURE__ */ i(f.Provider, {
30
- value: g,
31
- children: i("div", {
37
+ return /* @__PURE__ */ l(y.Provider, {
38
+ value: f,
39
+ children: l("div", {
32
40
  role: "combobox",
33
41
  "aria-expanded": !0,
34
- "aria-controls": h,
35
- className: e([m, r]),
36
- children: n
42
+ "aria-controls": d,
43
+ className: e([x, a]),
44
+ children: i
37
45
  })
38
46
  });
39
47
  }
40
- var g = "haze-Command__inputStyle";
41
- function _({ placeholder: n, className: r }) {
42
- let { query: a, setQuery: o, inputRef: s, listRef: c } = p();
43
- return /* @__PURE__ */ i("input", {
44
- ref: s,
48
+ var C = "haze-Command__inputStyle";
49
+ function w({ placeholder: n, className: i, ref: a }) {
50
+ let { query: o, setQuery: s, inputRef: c, listRef: u } = b();
51
+ return /* @__PURE__ */ l("input", {
52
+ ref: t(c, a),
45
53
  type: "text",
46
54
  placeholder: n,
47
- value: a,
48
- onChange: (e) => o(e.target.value),
55
+ value: o,
56
+ onChange: (e) => s(e.target.value),
49
57
  onKeyDown: (e) => {
50
58
  if (e.key !== "ArrowDown" && e.key !== "ArrowUp") return;
51
59
  e.preventDefault();
52
- let n = t(c.current, d);
53
- (e.key === "ArrowDown" ? n[0] : n[n.length - 1])?.focus();
60
+ let t = r(u.current, v);
61
+ (e.key === "ArrowDown" ? t[0] : t[t.length - 1])?.focus();
54
62
  },
55
- className: e([g, r])
63
+ className: e([C, i])
56
64
  });
57
65
  }
58
- var v = "haze-Command__listStyle";
59
- function y({ children: t, className: a }) {
60
- let { inputRef: o, listRef: s, listId: c } = p();
61
- r({
62
- menuRef: s,
66
+ var T = "haze-Command__listStyle", E = "haze-Command__emptyStyle";
67
+ function D({ children: t, empty: r, className: o }) {
68
+ let { inputRef: d, listRef: f, listId: p, shouldFilter: m, query: h } = b(), g = n("command");
69
+ a({
70
+ menuRef: f,
63
71
  active: !0,
64
- selector: d
72
+ selector: v
65
73
  });
66
- let l = n({
67
- menuRef: s,
68
- selector: d,
69
- onClose: () => o.current?.focus()
70
- });
71
- return /* @__PURE__ */ i("div", {
72
- ref: s,
74
+ let _ = i({
75
+ menuRef: f,
76
+ selector: v,
77
+ onClose: () => d.current?.focus()
78
+ }), y = s(t, M), x = m && y.length > 0 && !y.some((e) => c(e.props, h));
79
+ return /* @__PURE__ */ u("div", {
80
+ ref: f,
73
81
  role: "listbox",
74
- id: c,
75
- onKeyDown: l,
76
- className: e([v, a]),
77
- children: t
82
+ id: p,
83
+ onKeyDown: _,
84
+ className: e([T, o]),
85
+ children: [t, x && /* @__PURE__ */ l("div", {
86
+ role: "option",
87
+ "aria-selected": !1,
88
+ "aria-disabled": "true",
89
+ className: e([E]),
90
+ children: r ?? g.noResults
91
+ })]
78
92
  });
79
93
  }
80
- var b = "haze-Command__itemStyle";
81
- function x({ children: t, className: n, onSelect: r }) {
82
- let { query: a } = p();
83
- return a && !(typeof t == "string" ? t : "").toLowerCase().includes(a.toLowerCase()) ? null : /* @__PURE__ */ i("div", {
94
+ var O = "haze-Command__groupHeading";
95
+ function k({ heading: t, children: n, className: r }) {
96
+ let { shouldFilter: i, query: a } = b(), o = m(), f = s(n, M);
97
+ return (f.length === 0 ? d.count(n) > 0 : !i || f.some((e) => c(e.props, a))) ? /* @__PURE__ */ u("div", {
98
+ role: "group",
99
+ "aria-labelledby": t === void 0 ? void 0 : o,
100
+ className: e([r]),
101
+ children: [t !== void 0 && /* @__PURE__ */ l("div", {
102
+ id: o,
103
+ className: e([O]),
104
+ children: t
105
+ }), n]
106
+ }) : null;
107
+ }
108
+ var A = "haze-Command__itemStyle", j = "haze-Command__itemWithShortcut";
109
+ function M({ children: t, value: n, keywords: r, shortcut: i, className: a, onSelect: s }) {
110
+ let { shouldFilter: d, query: f, onItemSelect: p } = b();
111
+ if (d && !c({
112
+ value: n,
113
+ keywords: r,
114
+ children: t
115
+ }, f)) return null;
116
+ let m = () => {
117
+ s?.(), p?.();
118
+ };
119
+ return /* @__PURE__ */ u("div", {
84
120
  role: "option",
85
121
  tabIndex: -1,
86
- onClick: r,
122
+ onClick: m,
87
123
  onKeyDown: (e) => {
88
- (e.key === "Enter" || e.key === " ") && (e.preventDefault(), r?.());
124
+ (e.key === "Enter" || e.key === " ") && (e.preventDefault(), m());
89
125
  },
90
- className: e([b, n]),
91
- children: t
126
+ className: e([
127
+ A,
128
+ i !== void 0 && j,
129
+ a
130
+ ]),
131
+ children: [t, i !== void 0 && /* @__PURE__ */ l(o, {
132
+ size: "sm",
133
+ children: i
134
+ })]
92
135
  });
93
136
  }
94
137
  //#endregion
95
- export { _ as CommandInput, x as CommandItem, y as CommandList, h as default };
138
+ export { k as CommandGroup, w as CommandInput, M as CommandItem, D as CommandList, S as default };
@@ -0,0 +1,48 @@
1
+
2
+ "use client";
3
+ import e from "../Dialog/Dialog.js";
4
+ import t, { CommandInput as n } from "./Command.js";
5
+ import { useHotkeys as r } from "../../hooks/useHotkeys.js";
6
+ /* empty css */
7
+ import { jsx as i, jsxs as a } from "react/jsx-runtime";
8
+ import { useCallback as o, useEffect as s, useRef as c } from "react";
9
+ import { useControl as l } from "react-use-control";
10
+ //#region src/lib/components/Command/CommandDialog.tsx
11
+ var u = "haze-CommandDialog__panel", d = "haze-CommandDialog__panelTitle", f = "haze-CommandDialog__palette";
12
+ function p({ open: p, onOpenChange: m, hotkey: h, title: g, placeholder: _, children: v, className: y }) {
13
+ let [b, x, S] = l(p, !1), C = c(null), w = o(() => {
14
+ let e = !b;
15
+ x(e), m?.(e);
16
+ }, [
17
+ b,
18
+ x,
19
+ m
20
+ ]), T = o(() => {
21
+ x(!1), m?.(!1);
22
+ }, [x, m]);
23
+ return r(h === void 0 ? {} : { [h]: w }, {
24
+ enabled: h !== void 0,
25
+ allowInInput: !0
26
+ }), s(() => {
27
+ b && C.current?.focus();
28
+ }, [b]), /* @__PURE__ */ i(e, {
29
+ open: S,
30
+ onClose: () => m?.(!1),
31
+ title: g,
32
+ classNames: {
33
+ root: u,
34
+ header: d
35
+ },
36
+ className: y,
37
+ children: a(t, {
38
+ className: f,
39
+ onItemSelect: T,
40
+ children: [/* @__PURE__ */ i(n, {
41
+ ref: C,
42
+ placeholder: _
43
+ }), v]
44
+ })
45
+ });
46
+ }
47
+ //#endregion
48
+ export { p as default };
@@ -0,0 +1,16 @@
1
+ "use client";
2
+ import { Children as e, isValidElement as t } from "react";
3
+ //#region src/lib/components/Command/command-filter.ts
4
+ function n(e) {
5
+ return typeof e == "string" ? e : typeof e == "number" || typeof e == "boolean" ? String(e) : Array.isArray(e) ? e.map(n).join("") : t(e) ? n(e.props.children) : "";
6
+ }
7
+ function r(e, t) {
8
+ if (!t) return !0;
9
+ let r = t.toLowerCase();
10
+ return (e.value ?? n(e.children)).toLowerCase().includes(r) ? !0 : (e.keywords ?? []).some((e) => e.toLowerCase().includes(r));
11
+ }
12
+ function i(n, r) {
13
+ return e.toArray(n).flatMap((e) => t(e) ? e.type === r ? [e] : i(e.props.children, r) : []);
14
+ }
15
+ //#endregion
16
+ export { i as collectCommandItems, r as commandItemMatches, n as commandItemText };
@@ -1,3 +1,4 @@
1
1
  "use client";
2
- import e, { CommandInput as t, CommandItem as n, CommandList as r } from "./Command.js";
3
- export { e as Command, t as CommandInput, n as CommandItem, r as CommandList };
2
+ import e, { CommandGroup as t, CommandInput as n, CommandItem as r, CommandList as i } from "./Command.js";
3
+ import a from "./CommandDialog.js";
4
+ export { e as Command, a as CommandDialog, t as CommandGroup, n as CommandInput, r as CommandItem, i as CommandList };
@@ -1,9 +1,9 @@
1
1
 
2
2
  "use client";
3
3
  import { classnames as e } from "../../utils/classnames.js";
4
- import { useFocusScope as t } from "../../utils/focus-scope.js";
4
+ import { useStrings as t } from "../LocaleProvider/useStrings.js";
5
5
  import { Presence as n } from "../../utils/presence.js";
6
- import { useStrings as r } from "../LocaleProvider/useStrings.js";
6
+ import { useFocusScope as r } from "../../utils/focus-scope.js";
7
7
  /* empty css */
8
8
  import { jsx as i, jsxs as a } from "react/jsx-runtime";
9
9
  import { useId as o } from "react";
@@ -11,7 +11,7 @@ import { useControl as s } from "react-use-control";
11
11
  //#region src/lib/components/ConfirmDialog/ConfirmDialog.tsx
12
12
  var c = "haze-ConfirmDialog__overlay", l = "haze-ConfirmDialog__dialog", u = "haze-ConfirmDialog__header", d = "haze-ConfirmDialog__body", f = "haze-ConfirmDialog__footer", p = "haze-ConfirmDialog__btn", m = "haze-ConfirmDialog__cancelBtn", h = "haze-ConfirmDialog__confirmBtn", g = "haze-ConfirmDialog__dangerBtn";
13
13
  function _({ open: _, onClose: v, onConfirm: y, onCancel: b, title: x, children: S, confirmText: C, cancelText: w, variant: T = "default", className: E, ...D }) {
14
- let [O, k] = s(_, !1), A = r("confirmDialog"), j = C ?? A.confirm, M = w ?? A.cancel, N = t({
14
+ let [O, k] = s(_, !1), A = t("confirmDialog"), j = C ?? A.confirm, M = w ?? A.cancel, N = r({
15
15
  enabled: O,
16
16
  trapped: !0
17
17
  }), P = `haze-confirm-title-${o()}`, F = () => {
@@ -1,5 +1,4 @@
1
1
 
2
- "use client";
3
2
  import { classnames as e } from "../../utils/classnames.js";
4
3
  /* empty css */
5
4
  import { jsx as t } from "react/jsx-runtime";