haze-ui 1.25.0 → 1.26.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 (375) hide show
  1. package/README.md +98 -0
  2. package/dist/components/Accordion/Accordion.js +1 -0
  3. package/dist/components/Accordion/AccordionItem.js +1 -0
  4. package/dist/components/Accordion/index.js +1 -0
  5. package/dist/components/Affix/Affix.js +1 -0
  6. package/dist/components/Affix/index.js +1 -0
  7. package/dist/components/Alert/Alert.js +1 -0
  8. package/dist/components/Alert/index.js +1 -0
  9. package/dist/components/ApprovalCard/ApprovalCard.js +1 -0
  10. package/dist/components/ApprovalCard/index.js +1 -0
  11. package/dist/components/AspectRatio/AspectRatio.js +1 -0
  12. package/dist/components/AspectRatio/index.js +1 -0
  13. package/dist/components/AsyncSection/AsyncSection.js +1 -0
  14. package/dist/components/AsyncSection/index.js +1 -0
  15. package/dist/components/Avatar/Avatar.js +1 -0
  16. package/dist/components/Avatar/index.js +1 -0
  17. package/dist/components/AvatarGroup/AvatarGroup.js +1 -0
  18. package/dist/components/AvatarGroup/index.js +1 -0
  19. package/dist/components/BackToTop/BackToTop.js +1 -0
  20. package/dist/components/BackToTop/index.js +1 -0
  21. package/dist/components/Badge/Badge.js +1 -0
  22. package/dist/components/Badge/index.js +1 -0
  23. package/dist/components/Banner/Banner.js +1 -0
  24. package/dist/components/Banner/index.js +1 -0
  25. package/dist/components/BottomSheet/BottomSheet.js +1 -0
  26. package/dist/components/BottomSheet/index.js +1 -0
  27. package/dist/components/Breadcrumb/Breadcrumb.js +1 -0
  28. package/dist/components/Breadcrumb/BreadcrumbItem.js +1 -0
  29. package/dist/components/Breadcrumb/index.js +1 -0
  30. package/dist/components/Button/Button.js +1 -0
  31. package/dist/components/Button/ButtonLink.js +1 -0
  32. package/dist/components/Button/index.js +1 -0
  33. package/dist/components/Button/styles.js +1 -0
  34. package/dist/components/Calendar/Calendar.js +65 -93
  35. package/dist/components/Calendar/date.js +54 -0
  36. package/dist/components/Calendar/index.js +1 -0
  37. package/dist/components/Card/Card.js +1 -0
  38. package/dist/components/Card/index.js +1 -0
  39. package/dist/components/Carousel/Carousel.js +1 -0
  40. package/dist/components/Carousel/CarouselSlide.js +1 -0
  41. package/dist/components/Carousel/index.js +1 -0
  42. package/dist/components/Cascader/Cascader.js +1 -0
  43. package/dist/components/Cascader/index.js +1 -0
  44. package/dist/components/ChatContainer/ChatContainer.js +1 -0
  45. package/dist/components/ChatContainer/index.js +1 -0
  46. package/dist/components/ChatInput/ChatInput.js +1 -0
  47. package/dist/components/ChatInput/index.js +1 -0
  48. package/dist/components/ChatMessage/ChatMessage.js +1 -0
  49. package/dist/components/ChatMessage/index.js +1 -0
  50. package/dist/components/Checkbox/Checkbox.js +1 -0
  51. package/dist/components/Checkbox/CheckboxCore.js +1 -0
  52. package/dist/components/Checkbox/index.js +1 -0
  53. package/dist/components/Chip/Chip.js +1 -0
  54. package/dist/components/Chip/index.js +1 -0
  55. package/dist/components/CodeBlock/CodeBlock.js +1 -0
  56. package/dist/components/CodeBlock/index.js +1 -0
  57. package/dist/components/Collapsible/Collapsible.js +1 -0
  58. package/dist/components/Collapsible/index.js +1 -0
  59. package/dist/components/ColorPicker/ColorPicker.js +1 -0
  60. package/dist/components/ColorPicker/ColorPickerCore.js +1 -0
  61. package/dist/components/ColorPicker/index.js +1 -0
  62. package/dist/components/Combobox/Combobox.js +15 -7
  63. package/dist/components/Combobox/ComboboxOption.js +9 -5
  64. package/dist/components/Combobox/index.js +1 -0
  65. package/dist/components/Command/Command.js +1 -0
  66. package/dist/components/Command/index.js +1 -0
  67. package/dist/components/ConfirmDialog/ConfirmDialog.js +1 -0
  68. package/dist/components/ConfirmDialog/index.js +1 -0
  69. package/dist/components/Container/Container.js +1 -0
  70. package/dist/components/Container/index.js +1 -0
  71. package/dist/components/ContextMenu/ContextMenu.js +1 -0
  72. package/dist/components/ContextMenu/ContextMenuContent.js +1 -0
  73. package/dist/components/ContextMenu/ContextMenuContext.js +1 -0
  74. package/dist/components/ContextMenu/ContextMenuItem.js +1 -0
  75. package/dist/components/ContextMenu/ContextMenuSeparator.js +1 -0
  76. package/dist/components/ContextMenu/ContextMenuTrigger.js +1 -0
  77. package/dist/components/ContextMenu/index.js +1 -0
  78. package/dist/components/ConversationList/ConversationItem.js +1 -0
  79. package/dist/components/ConversationList/ConversationList.js +1 -0
  80. package/dist/components/ConversationList/index.js +1 -0
  81. package/dist/components/DataTable/DataTable.js +155 -113
  82. package/dist/components/DataTable/index.js +1 -0
  83. package/dist/components/DateRangePicker/DateRangePicker.js +1 -0
  84. package/dist/components/DateRangePicker/DateRangePickerCore.js +1 -0
  85. package/dist/components/DateRangePicker/index.js +1 -0
  86. package/dist/components/Datepicker/Datepicker.js +1 -0
  87. package/dist/components/Datepicker/DatepickerCore.js +1 -0
  88. package/dist/components/Datepicker/index.js +1 -0
  89. package/dist/components/Dialog/Dialog.js +1 -0
  90. package/dist/components/Dialog/index.js +1 -0
  91. package/dist/components/DiffViewer/DiffViewer.js +1 -0
  92. package/dist/components/DiffViewer/index.js +1 -0
  93. package/dist/components/Disclosure/Disclosure.js +1 -0
  94. package/dist/components/Disclosure/index.js +1 -0
  95. package/dist/components/Divider/Divider.js +1 -0
  96. package/dist/components/Divider/index.js +1 -0
  97. package/dist/components/Drawer/Drawer.js +1 -0
  98. package/dist/components/Drawer/index.js +1 -0
  99. package/dist/components/DropdownMenu/DropdownMenu.js +1 -0
  100. package/dist/components/DropdownMenu/DropdownMenuContent.js +1 -0
  101. package/dist/components/DropdownMenu/DropdownMenuContext.js +1 -0
  102. package/dist/components/DropdownMenu/DropdownMenuItem.js +1 -0
  103. package/dist/components/DropdownMenu/DropdownMenuSeparator.js +1 -0
  104. package/dist/components/DropdownMenu/DropdownMenuTrigger.js +1 -0
  105. package/dist/components/DropdownMenu/index.js +1 -0
  106. package/dist/components/Empty/Empty.js +1 -0
  107. package/dist/components/Empty/index.js +1 -0
  108. package/dist/components/FileInput/FileInput.js +1 -0
  109. package/dist/components/FileInput/index.js +1 -0
  110. package/dist/components/Flex/Flex.js +1 -0
  111. package/dist/components/Flex/index.js +1 -0
  112. package/dist/components/Grid/Grid.js +1 -0
  113. package/dist/components/Grid/GridItem.js +1 -0
  114. package/dist/components/Grid/index.js +1 -0
  115. package/dist/components/HoverCard/HoverCard.js +1 -0
  116. package/dist/components/HoverCard/index.js +1 -0
  117. package/dist/components/Icon/Icon.js +1 -0
  118. package/dist/components/Icon/index.js +1 -0
  119. package/dist/components/Image/Image.js +1 -0
  120. package/dist/components/Image/index.js +1 -0
  121. package/dist/components/InlineEdit/InlineEdit.js +1 -0
  122. package/dist/components/InlineEdit/index.js +1 -0
  123. package/dist/components/Input/Input.js +1 -0
  124. package/dist/components/Input/InputCore.js +1 -0
  125. package/dist/components/Input/index.js +1 -0
  126. package/dist/components/Kbd/Kbd.js +1 -0
  127. package/dist/components/Kbd/index.js +1 -0
  128. package/dist/components/List/List.js +1 -0
  129. package/dist/components/List/ListItem.js +1 -0
  130. package/dist/components/List/index.js +1 -0
  131. package/dist/components/LocaleProvider/LocaleContext.js +1 -0
  132. package/dist/components/LocaleProvider/LocaleProvider.js +1 -0
  133. package/dist/components/LocaleProvider/index.js +5 -3
  134. package/dist/components/LocaleProvider/locale.js +7 -1
  135. package/dist/components/LocaleProvider/useStrings.js +18 -8
  136. package/dist/components/LocaleProvider/zh-cn.js +128 -0
  137. package/dist/components/LogViewer/LogViewer.js +1 -0
  138. package/dist/components/LogViewer/index.js +1 -0
  139. package/dist/components/MarkdownRenderer/MarkdownRenderer.js +1 -0
  140. package/dist/components/MarkdownRenderer/index.js +1 -0
  141. package/dist/components/MarkdownRenderer/markdown-blocks.js +1 -0
  142. package/dist/components/Mentions/Mentions.js +17 -0
  143. package/dist/components/Mentions/MentionsCore.js +116 -0
  144. package/dist/components/Mentions/index.js +4 -0
  145. package/dist/components/Menu/Menu.js +1 -0
  146. package/dist/components/Menu/MenuDivider.js +1 -0
  147. package/dist/components/Menu/MenuItem.js +1 -0
  148. package/dist/components/Menu/index.js +1 -0
  149. package/dist/components/ModelPicker/ModelPicker.js +1 -0
  150. package/dist/components/ModelPicker/index.js +1 -0
  151. package/dist/components/NavigationBar/NavLink.js +1 -0
  152. package/dist/components/NavigationBar/NavigationBar.js +1 -0
  153. package/dist/components/NavigationBar/index.js +1 -0
  154. package/dist/components/NumberInput/NumberInput.js +1 -0
  155. package/dist/components/NumberInput/NumberInputCore.js +1 -0
  156. package/dist/components/NumberInput/index.js +1 -0
  157. package/dist/components/OTPInput/OTPInput.js +1 -0
  158. package/dist/components/OTPInput/OTPInputCore.js +1 -0
  159. package/dist/components/OTPInput/index.js +1 -0
  160. package/dist/components/Pagination/Pagination.js +1 -0
  161. package/dist/components/Pagination/index.js +1 -0
  162. package/dist/components/PasswordInput/PasswordInput.js +1 -0
  163. package/dist/components/PasswordInput/PasswordInputCore.js +1 -0
  164. package/dist/components/PasswordInput/index.js +1 -0
  165. package/dist/components/Popover/Popover.js +1 -0
  166. package/dist/components/Popover/index.js +1 -0
  167. package/dist/components/Progress/Progress.js +1 -0
  168. package/dist/components/Progress/index.js +1 -0
  169. package/dist/components/Radio/Radio.js +1 -0
  170. package/dist/components/Radio/RadioContext.js +1 -0
  171. package/dist/components/Radio/RadioGroup.js +1 -0
  172. package/dist/components/Radio/RadioGroupCore.js +1 -0
  173. package/dist/components/Radio/index.js +1 -0
  174. package/dist/components/Rating/Rating.js +1 -0
  175. package/dist/components/Rating/RatingCore.js +1 -0
  176. package/dist/components/Rating/index.js +1 -0
  177. package/dist/components/Resizable/Resizable.js +1 -0
  178. package/dist/components/Resizable/index.js +1 -0
  179. package/dist/components/ScrollArea/ScrollArea.js +1 -0
  180. package/dist/components/ScrollArea/index.js +1 -0
  181. package/dist/components/Segmented/Segmented.js +1 -0
  182. package/dist/components/Segmented/SegmentedCore.js +1 -0
  183. package/dist/components/Segmented/index.js +1 -0
  184. package/dist/components/Select/Option.js +1 -0
  185. package/dist/components/Select/Select.js +1 -0
  186. package/dist/components/Select/SelectCore.js +1 -0
  187. package/dist/components/Select/index.js +1 -0
  188. package/dist/components/Sidebar/Sidebar.js +1 -0
  189. package/dist/components/Sidebar/index.js +1 -0
  190. package/dist/components/Skeleton/Skeleton.js +1 -0
  191. package/dist/components/Skeleton/index.js +1 -0
  192. package/dist/components/Slider/Slider.js +1 -0
  193. package/dist/components/Slider/SliderCore.js +1 -0
  194. package/dist/components/Slider/index.js +1 -0
  195. package/dist/components/Spinner/Spinner.js +1 -0
  196. package/dist/components/Spinner/index.js +1 -0
  197. package/dist/components/Stat/Stat.js +1 -0
  198. package/dist/components/Stat/index.js +1 -0
  199. package/dist/components/StepTimeline/StepTimeline.js +1 -0
  200. package/dist/components/StepTimeline/index.js +1 -0
  201. package/dist/components/Stepper/Step.js +1 -0
  202. package/dist/components/Stepper/Stepper.js +1 -0
  203. package/dist/components/Stepper/StepperContext.js +1 -0
  204. package/dist/components/Stepper/index.js +1 -0
  205. package/dist/components/StreamingText/StreamingText.js +1 -0
  206. package/dist/components/StreamingText/index.js +1 -0
  207. package/dist/components/SwipeAction/SwipeAction.js +1 -0
  208. package/dist/components/SwipeAction/index.js +1 -0
  209. package/dist/components/Switch/Switch.js +1 -0
  210. package/dist/components/Switch/SwitchCore.js +1 -0
  211. package/dist/components/Switch/index.js +1 -0
  212. package/dist/components/Table/Table.js +1 -0
  213. package/dist/components/Table/TableBody.js +1 -0
  214. package/dist/components/Table/TableCell.js +1 -0
  215. package/dist/components/Table/TableHead.js +1 -0
  216. package/dist/components/Table/TableRow.js +1 -0
  217. package/dist/components/Table/index.js +1 -0
  218. package/dist/components/Tabs/Tab.js +1 -0
  219. package/dist/components/Tabs/TabList.js +1 -0
  220. package/dist/components/Tabs/TabPanel.js +1 -0
  221. package/dist/components/Tabs/Tabs.js +1 -0
  222. package/dist/components/Tabs/TabsContext.js +1 -0
  223. package/dist/components/Tabs/index.js +1 -0
  224. package/dist/components/Tag/Tag.js +1 -0
  225. package/dist/components/Tag/index.js +1 -0
  226. package/dist/components/TagGroup/TagGroup.js +1 -0
  227. package/dist/components/TagGroup/TagGroupItem.js +1 -0
  228. package/dist/components/TagGroup/index.js +1 -0
  229. package/dist/components/TagInput/TagInput.js +1 -0
  230. package/dist/components/TagInput/TagInputCore.js +1 -0
  231. package/dist/components/TagInput/index.js +1 -0
  232. package/dist/components/Textarea/Textarea.js +1 -0
  233. package/dist/components/Textarea/TextareaCore.js +1 -0
  234. package/dist/components/Textarea/index.js +1 -0
  235. package/dist/components/ThinkingIndicator/ThinkingIndicator.js +1 -0
  236. package/dist/components/ThinkingIndicator/index.js +1 -0
  237. package/dist/components/TimePicker/TimePicker.js +1 -0
  238. package/dist/components/TimePicker/TimePickerCore.js +1 -0
  239. package/dist/components/TimePicker/index.js +1 -0
  240. package/dist/components/Timeline/Timeline.js +1 -0
  241. package/dist/components/Timeline/index.js +1 -0
  242. package/dist/components/Toast/Toast.js +36 -30
  243. package/dist/components/Toast/ToastContainer.js +1 -0
  244. package/dist/components/Toast/ToastContext.js +1 -0
  245. package/dist/components/Toast/index.js +1 -0
  246. package/dist/components/Toast/toast2.js +1 -0
  247. package/dist/components/Toast/useToast.js +1 -0
  248. package/dist/components/TokenCounter/TokenCounter.js +1 -0
  249. package/dist/components/TokenCounter/index.js +1 -0
  250. package/dist/components/ToolCallCard/ToolCallCard.js +1 -0
  251. package/dist/components/ToolCallCard/index.js +1 -0
  252. package/dist/components/Toolbar/Toolbar.js +1 -0
  253. package/dist/components/Toolbar/ToolbarButton.js +1 -0
  254. package/dist/components/Toolbar/ToolbarContext.js +1 -0
  255. package/dist/components/Toolbar/ToolbarSeparator.js +1 -0
  256. package/dist/components/Toolbar/index.js +1 -0
  257. package/dist/components/Tooltip/Tooltip.js +1 -0
  258. package/dist/components/Tooltip/index.js +1 -0
  259. package/dist/components/Tour/Tour.js +1 -0
  260. package/dist/components/Tour/index.js +1 -0
  261. package/dist/components/Transfer/Transfer.js +1 -0
  262. package/dist/components/Transfer/TransferCore.js +1 -0
  263. package/dist/components/Transfer/index.js +1 -0
  264. package/dist/components/Tree/Tree.js +1 -0
  265. package/dist/components/Tree/TreeItem.js +1 -0
  266. package/dist/components/Tree/index.js +1 -0
  267. package/dist/components/Tree/utils.js +1 -0
  268. package/dist/components/Typography/Typography.js +1 -0
  269. package/dist/components/Typography/index.js +1 -0
  270. package/dist/components/Upload/Upload.js +1 -0
  271. package/dist/components/Upload/UploadCore.js +1 -0
  272. package/dist/components/Upload/index.js +1 -0
  273. package/dist/components/VirtualList/VirtualList.js +1 -0
  274. package/dist/components/VirtualList/index.js +1 -0
  275. package/dist/css/accordion.css +1 -1
  276. package/dist/css/alert.css +1 -1
  277. package/dist/css/approval-card.css +1 -1
  278. package/dist/css/async-section.css +1 -1
  279. package/dist/css/back-to-top.css +1 -1
  280. package/dist/css/breadcrumb.css +1 -1
  281. package/dist/css/button.css +1 -1
  282. package/dist/css/carousel.css +1 -1
  283. package/dist/css/cascader.css +1 -1
  284. package/dist/css/chat-input.css +1 -1
  285. package/dist/css/checkbox.css +1 -1
  286. package/dist/css/chip.css +1 -1
  287. package/dist/css/color-picker.css +1 -1
  288. package/dist/css/combobox.css +1 -1
  289. package/dist/css/command.css +1 -1
  290. package/dist/css/context-menu.css +1 -1
  291. package/dist/css/conversation-list.css +1 -1
  292. package/dist/css/data-table.css +1 -1
  293. package/dist/css/date-range-picker.css +1 -1
  294. package/dist/css/datepicker.css +1 -1
  295. package/dist/css/disclosure.css +1 -1
  296. package/dist/css/dropdown-menu.css +1 -1
  297. package/dist/css/file-input.css +1 -1
  298. package/dist/css/inline-edit.css +1 -1
  299. package/dist/css/input.css +1 -1
  300. package/dist/css/log-viewer.css +1 -1
  301. package/dist/css/mentions.css +2 -0
  302. package/dist/css/menu.css +1 -1
  303. package/dist/css/model-picker.css +1 -1
  304. package/dist/css/navigation-bar.css +1 -1
  305. package/dist/css/number-input.css +1 -1
  306. package/dist/css/otp-input.css +1 -1
  307. package/dist/css/pagination.css +1 -1
  308. package/dist/css/password-input.css +1 -1
  309. package/dist/css/progress.css +1 -1
  310. package/dist/css/radio.css +1 -1
  311. package/dist/css/rating.css +1 -1
  312. package/dist/css/resizable.css +1 -1
  313. package/dist/css/segmented.css +1 -1
  314. package/dist/css/select.css +1 -1
  315. package/dist/css/slider.css +1 -1
  316. package/dist/css/stepper.css +1 -1
  317. package/dist/css/swipe-action.css +1 -1
  318. package/dist/css/switch.css +1 -1
  319. package/dist/css/tabs.css +1 -1
  320. package/dist/css/tag-input.css +1 -1
  321. package/dist/css/tag.css +1 -1
  322. package/dist/css/textarea.css +1 -1
  323. package/dist/css/time-picker.css +1 -1
  324. package/dist/css/token-counter.css +1 -1
  325. package/dist/css/tokens.css +1 -1
  326. package/dist/css/tree.css +1 -1
  327. package/dist/css/upload.css +1 -1
  328. package/dist/css-manifest.json +10 -1
  329. package/dist/form/FormItem.js +1 -0
  330. package/dist/form/index.js +1 -0
  331. package/dist/haze-ui.css +53 -52
  332. package/dist/hooks/useClipboard.js +30 -0
  333. package/dist/hooks/useDebouncedCallback.js +17 -0
  334. package/dist/hooks/useDebouncedValue.js +12 -0
  335. package/dist/hooks/useMediaQuery.js +13 -0
  336. package/dist/hooks/usePrefersReducedMotion.js +9 -0
  337. package/dist/hooks/useTitle.js +1 -0
  338. package/dist/index.js +138 -129
  339. package/dist/registry.json +15 -15
  340. package/dist/tokens/colors.js +1 -0
  341. package/dist/tokens/index.js +1 -0
  342. package/dist/tokens/motion.js +1 -0
  343. package/dist/tokens/oklch.js +1 -0
  344. package/dist/tokens/palette.js +1 -0
  345. package/dist/tokens/registry.js +1 -0
  346. package/dist/tokens/spacing.js +1 -0
  347. package/dist/tokens/typography.js +1 -0
  348. package/dist/types/components/Calendar/date.d.ts +79 -0
  349. package/dist/types/components/Combobox/ComboboxOption.d.ts +13 -1
  350. package/dist/types/components/DataTable/DataTable.d.ts +43 -2
  351. package/dist/types/components/DataTable/index.d.ts +1 -1
  352. package/dist/types/components/LocaleProvider/LocaleContext.d.ts +1 -1
  353. package/dist/types/components/LocaleProvider/LocaleProvider.d.ts +5 -2
  354. package/dist/types/components/LocaleProvider/index.d.ts +2 -1
  355. package/dist/types/components/LocaleProvider/locale.d.ts +7 -1
  356. package/dist/types/components/LocaleProvider/useStrings.d.ts +5 -4
  357. package/dist/types/components/LocaleProvider/zh-cn.d.ts +13 -0
  358. package/dist/types/components/Mentions/Mentions.d.ts +17 -0
  359. package/dist/types/components/Mentions/MentionsCore.d.ts +21 -0
  360. package/dist/types/components/Mentions/index.d.ts +4 -0
  361. package/dist/types/hooks/index.d.ts +6 -0
  362. package/dist/types/hooks/useClipboard.d.ts +31 -0
  363. package/dist/types/hooks/useDebouncedCallback.d.ts +21 -0
  364. package/dist/types/hooks/useDebouncedValue.d.ts +20 -0
  365. package/dist/types/hooks/useMediaQuery.d.ts +17 -0
  366. package/dist/types/hooks/usePrefersReducedMotion.d.ts +14 -0
  367. package/dist/types/index.d.ts +6 -3
  368. package/dist/utils/classnames.js +1 -0
  369. package/dist/utils/collision.js +1 -0
  370. package/dist/utils/floating.js +1 -0
  371. package/dist/utils/focus-scope.js +1 -0
  372. package/dist/utils/focus.js +1 -0
  373. package/dist/utils/menuKeyboard.js +1 -0
  374. package/dist/utils/presence.js +1 -0
  375. package/package.json +15 -13
@@ -0,0 +1,21 @@
1
+ /**
2
+ * 返回 `fn` 的防抖版本(尾触发):窗口内连续调用只在最后一次调用
3
+ * 的窗口到期后执行一次,参数取最后一次调用。
4
+ *
5
+ * ```tsx
6
+ * const save = useDebouncedCallback((draft) => persist(draft), 500);
7
+ * <Textarea onChange={(e) => save(e.target.value)} />;
8
+ * ```
9
+ *
10
+ * - `fn` 与 `delayMs` 都经 ref 透传:调用时始终执行「最新一次渲染」
11
+ * 的闭包(事件回调里读到最新 state,无需把 fn 写进依赖)。
12
+ * - 返回的函数引用跨渲染稳定(空依赖 `useCallback` + ref 计时),
13
+ * 可安全放进子组件的 props 比较 / effect 依赖。
14
+ * - `delayMs` 变更即时生效:下一次调度起用新窗口。
15
+ * - 卸载时取消挂起的计时器且不 flush——尾调用不会在组件消失后触发。
16
+ *
17
+ * @param fn 需要防抖的函数(引用可任意变化)。
18
+ * @param delayMs 防抖窗口(毫秒)。
19
+ * @returns 引用稳定的防抖函数。
20
+ */
21
+ export declare function useDebouncedCallback<A extends unknown[]>(fn: (...args: A) => void, delayMs: number): (...args: A) => void;
@@ -0,0 +1,20 @@
1
+ /**
2
+ * 返回 `value` 的防抖镜像:值停止变化 `delayMs` 后才同步到最新值。
3
+ *
4
+ * ```tsx
5
+ * const debouncedQuery = useDebouncedValue(query, 300);
6
+ * useEffect(() => { search(debouncedQuery); }, [debouncedQuery]);
7
+ * ```
8
+ *
9
+ * - 内部派生状态(镜像没有「父组件控制」的语义,不走 useControl)。
10
+ * - 挂载首帧直接返回当时的 `value`(不防抖);窗口内快速变化的
11
+ * 中间值永远不会暴露。
12
+ * - `delayMs` 变更即时生效:计时器依赖 `[value, delayMs]`,任一变化
13
+ * 都重启窗口。
14
+ * - 卸载清理计时器,不会对已卸载组件 setState。
15
+ *
16
+ * @param value 需要防抖的值。
17
+ * @param delayMs 防抖窗口(毫秒)。
18
+ * @returns 防抖后的值。
19
+ */
20
+ export declare function useDebouncedValue<T>(value: T, delayMs: number): T;
@@ -0,0 +1,17 @@
1
+ /**
2
+ * 订阅一条 CSS 媒体查询,返回当前是否匹配。
3
+ *
4
+ * ```tsx
5
+ * const isWide = useMediaQuery('(min-width: 768px)');
6
+ * ```
7
+ *
8
+ * - 底层 `window.matchMedia` + `useSyncExternalStore`;query 变化时
9
+ * 自动换订阅。
10
+ * - SSR:服务端渲染与 hydration 首帧恒返回 `false`(不访问
11
+ * `window`、不建立订阅);水合后与真实结果不一致时以一次额外
12
+ * 渲染收敛,无 hydration mismatch。
13
+ *
14
+ * @param query CSS 媒体查询字符串,如 `'(min-width: 768px)'`。
15
+ * @returns 当前是否匹配(SSR 阶段恒为 `false`)。
16
+ */
17
+ export declare function useMediaQuery(query: string): boolean;
@@ -0,0 +1,14 @@
1
+ /**
2
+ * 用户是否开启了系统级「减少动态效果」偏好(`prefers-reduced-motion`)。
3
+ *
4
+ * 与 tokens 的 `@media (prefers-reduced-motion: reduce)` 全局 CSS 降级
5
+ * (duration → 0ms)呼应:CSS 侧管组件自身的过渡/动画,本 hook 供
6
+ * JS 侧编排决策——跳过视差、自动轮播、滚动驱动动画等 CSS 覆盖不到
7
+ * 的动效。
8
+ *
9
+ * - SSR:继承 useMediaQuery 语义——服务端渲染与 hydration 首帧恒
10
+ * `false`,水合后以一次额外渲染收敛,无 hydration mismatch。
11
+ *
12
+ * @returns 用户偏好减少动态效果时为 `true`。
13
+ */
14
+ export declare function usePrefersReducedMotion(): boolean;
@@ -123,6 +123,8 @@ export { PasswordInput, PasswordInputCore } from './components/PasswordInput';
123
123
  export type { PasswordInputProps, PasswordInputCoreProps } from './components/PasswordInput';
124
124
  export { TagInput, TagInputCore } from './components/TagInput';
125
125
  export type { TagInputProps, TagInputCoreProps } from './components/TagInput';
126
+ export { Mentions, MentionsCore } from './components/Mentions';
127
+ export type { MentionsProps, MentionsCoreProps, MentionsOption } from './components/Mentions';
126
128
  export { InlineEdit } from './components/InlineEdit';
127
129
  export type { InlineEditProps } from './components/InlineEdit';
128
130
  export { DropdownMenu, DropdownMenuTrigger, DropdownMenuContent, DropdownMenuItem, DropdownMenuSeparator } from './components/DropdownMenu';
@@ -154,10 +156,10 @@ export type { BottomSheetProps } from './components/BottomSheet';
154
156
  export { SwipeAction } from './components/SwipeAction';
155
157
  export type { SwipeActionProps } from './components/SwipeAction';
156
158
  export { default as LocaleProvider, useStrings } from './components/LocaleProvider';
157
- export { defaultStrings } from './components/LocaleProvider';
159
+ export { defaultStrings, enUS, zhCN } from './components/LocaleProvider';
158
160
  export type { LocaleProviderProps, HazeStrings } from './components/LocaleProvider';
159
161
  export { DataTable } from './components/DataTable';
160
- export type { DataTableProps, DataTableColumnDef, DataTableColumnMeta } from './components/DataTable';
162
+ export type { DataTableProps, DataTableColumnDef, DataTableColumnMeta, DataTableVirtualized, } from './components/DataTable';
161
163
  export { Kbd } from './components/Kbd';
162
164
  export type { KbdProps } from './components/Kbd';
163
165
  export { AvatarGroup } from './components/AvatarGroup';
@@ -204,7 +206,8 @@ export { LogViewer } from './components/LogViewer';
204
206
  export type { LogViewerProps, LogEntry, LogLevel } from './components/LogViewer';
205
207
  export { AsyncSection } from './components/AsyncSection';
206
208
  export type { AsyncSectionProps } from './components/AsyncSection';
207
- export { useTitle } from './hooks';
209
+ export { useTitle, useMediaQuery, usePrefersReducedMotion, useDebouncedValue, useDebouncedCallback, useClipboard, } from './hooks';
210
+ export type { UseClipboardResult } from './hooks';
208
211
  export { FormItem } from './form';
209
212
  export type { FieldValidator, FormItemAsProps, FormItemBinding, FormItemOwnProps, FormItemProps, FormItemRawElement, FormItemRawElementBinding, FormInstance, PathValueOf, } from './form';
210
213
  export { useControl } from 'react-use-control';
@@ -1,3 +1,4 @@
1
+ "use client";
1
2
  //#region src/lib/utils/classnames.ts
2
3
  function e(...e) {
3
4
  let t = [], n = (e) => {
@@ -1,3 +1,4 @@
1
+ "use client";
1
2
  //#region src/lib/utils/collision.ts
2
3
  function e(e) {
3
4
  return typeof e == "number" ? {
@@ -1,4 +1,5 @@
1
1
 
2
+ "use client";
2
3
  import { classnames as e } from "./classnames.js";
3
4
  import { whenExitSettles as t } from "./presence.js";
4
5
  import { computeFloatingPosition as n, resolvePadding as r } from "./collision.js";
@@ -1,3 +1,4 @@
1
+ "use client";
1
2
  import { focusFirst as e, getTabbables as t } from "./focus.js";
2
3
  import { useCallback as n, useEffect as r, useLayoutEffect as i, useRef as a } from "react";
3
4
  //#region src/lib/utils/focus-scope.ts
@@ -1,3 +1,4 @@
1
+ "use client";
1
2
  //#region src/lib/utils/focus.ts
2
3
  var e = [
3
4
  "a[href]:not([disabled])",
@@ -1,3 +1,4 @@
1
+ "use client";
1
2
  import { useCallback as e, useEffect as t, useRef as n } from "react";
2
3
  //#region src/lib/utils/menuKeyboard.ts
3
4
  var r = 500, i = "[role=\"menuitem\"]:not([disabled])";
@@ -1,3 +1,4 @@
1
+ "use client";
1
2
  import { cloneElement as e, useEffect as t, useRef as n, useState as r } from "react";
2
3
  //#region src/lib/utils/presence.tsx
3
4
  var i = /* @__PURE__ */ new WeakMap();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "haze-ui",
3
- "version": "1.25.0",
3
+ "version": "1.26.0",
4
4
  "type": "module",
5
5
  "description": "A React UI component library powered by react-use-control and Linaria",
6
6
  "main": "./dist/index.js",
@@ -41,7 +41,7 @@
41
41
  "scripts": {
42
42
  "start": "vite",
43
43
  "build": "BUILD_LIB=true vite build && node scripts/split-css.mjs && node scripts/generate-registry.mjs && tsc -p tsconfig.lib.json && tsc-alias -p tsconfig.lib.json",
44
- "build:demo": "BABEL_ENV=development BUILD_DEMO=true vite build && cp dist/index.html dist/404.html",
44
+ "build:demo": "BABEL_ENV=development BUILD_DEMO=true vite build && cp dist/index.html dist/404.html && cp llms.txt dist/",
45
45
  "commit": "lint-staged && git-cz -n",
46
46
  "coverage": "vitest run --coverage",
47
47
  "lint": "eslint --fix src *.mjs",
@@ -78,11 +78,19 @@
78
78
  "author": "wmzy",
79
79
  "license": "MIT",
80
80
  "peerDependencies": {
81
- "react": "^19.0.0"
81
+ "@tanstack/react-table": "^9.2.4",
82
+ "react": "^19.0.0",
83
+ "react-f0rm": "^1.1.1"
84
+ },
85
+ "peerDependenciesMeta": {
86
+ "@tanstack/react-table": {
87
+ "optional": true
88
+ },
89
+ "react-f0rm": {
90
+ "optional": true
91
+ }
82
92
  },
83
93
  "dependencies": {
84
- "@tanstack/react-table": "^9.2.4",
85
- "react-f0rm": "^1.1.1",
86
94
  "react-use-control": "^1.6.0"
87
95
  },
88
96
  "devDependencies": {
@@ -90,7 +98,6 @@
90
98
  "@babel/core": "^8.0.1",
91
99
  "@babel/preset-env": "^8.0.2",
92
100
  "@babel/preset-typescript": "^8.0.1",
93
- "@faker-js/faker": "^10.6.0",
94
101
  "@for-fun/event-emitter": "^1.1.0",
95
102
  "@linaria/core": "^8.2.0",
96
103
  "@native-router/core": "^1.16.1",
@@ -98,13 +105,13 @@
98
105
  "@playwright/test": "^1.62.1",
99
106
  "@size-limit/esbuild": "^13.0.3",
100
107
  "@size-limit/file": "^13.0.3",
108
+ "@tanstack/react-table": "^9.2.4",
101
109
  "@testing-library/jest-dom": "^7.0.1",
102
110
  "@testing-library/react": "^16.3.3",
103
111
  "@testing-library/user-event": "^14.6.7",
104
112
  "@types/culori": "^4.0.1",
105
113
  "@types/jest-axe": "^3.5.9",
106
114
  "@types/node": "^26.4.1",
107
- "@types/ramda": "^0.32.0",
108
115
  "@types/react": "^19.2.18",
109
116
  "@types/react-dom": "^19.2.7",
110
117
  "@vitejs/plugin-react": "^6.1.1",
@@ -116,24 +123,19 @@
116
123
  "commitizen": "^4.3.2",
117
124
  "core-js": "^3.50.0",
118
125
  "culori": "^4.0.2",
119
- "date-fns": "^4.4.0",
120
126
  "eslint": "^10.9.1",
121
127
  "eslint-plugin-compat": "^7.0.2",
122
128
  "gh-pages": "^6.3.0",
123
129
  "husky": "^9.1.7",
124
130
  "jest-axe": "^11.0.0",
125
131
  "jsdom": "^30.0.1",
126
- "json-schema-faker": "^0.6.3",
127
132
  "lint-staged": "^17.4.1",
128
133
  "lucide-react": "^1.41.0",
129
134
  "prettier": "^3.9.6",
130
- "qss": "^3.0.0",
131
- "ramda": "^0.32.0",
132
135
  "react": "^19.2.8",
133
136
  "react-dom": "^19.2.8",
137
+ "react-f0rm": "^1.1.1",
134
138
  "react-icons": "^5.7.0",
135
- "react-toolroom": "^1.1.0",
136
- "rollup-plugin-type-as-json-schema": "^0.2.6",
137
139
  "semantic-release": "^25.0.9",
138
140
  "size-limit": "^13.0.3",
139
141
  "terser": "^5.51.2",