@kine-design/core 0.0.1-beta.1 → 0.0.1-beta.10

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 (426) hide show
  1. package/.vlaude/last-session-id +1 -0
  2. package/.vlaude/session-switch.signal +1 -0
  3. package/assets/style/global.css +1 -0
  4. package/assets/style/var/Wuxing.css +71 -0
  5. package/assets/style/var.css +23 -0
  6. package/components/base/affix/api.ts +16 -0
  7. package/components/base/affix/index.ts +17 -0
  8. package/components/base/affix/props.d.ts +34 -0
  9. package/components/base/affix/useAffix.ts +124 -0
  10. package/components/base/alert/api.ts +18 -0
  11. package/components/base/alert/index.ts +15 -0
  12. package/components/base/alert/props.d.ts +50 -0
  13. package/components/base/anchor/api.ts +20 -0
  14. package/components/base/anchor/index.ts +18 -0
  15. package/components/base/anchor/props.d.ts +46 -0
  16. package/components/base/anchor/useAnchor.ts +84 -0
  17. package/components/base/autoComplete/api.ts +24 -0
  18. package/components/base/autoComplete/index.ts +17 -0
  19. package/components/base/autoComplete/props.d.ts +75 -0
  20. package/components/base/autoComplete/useAutoComplete.ts +157 -0
  21. package/components/base/avatar/api.ts +17 -0
  22. package/components/base/avatar/avatar.css +61 -0
  23. package/components/base/avatar/index.ts +15 -0
  24. package/components/base/avatar/props.d.ts +37 -0
  25. package/components/base/backTop/api.ts +17 -0
  26. package/components/base/backTop/index.ts +17 -0
  27. package/components/base/backTop/props.d.ts +38 -0
  28. package/components/base/backTop/useBackTop.ts +62 -0
  29. package/components/base/badge/api.ts +22 -0
  30. package/components/base/badge/index.ts +15 -0
  31. package/components/base/badge/props.d.ts +50 -0
  32. package/components/base/button/api.ts +28 -0
  33. package/components/base/button/button.css +34 -0
  34. package/components/base/button/index.ts +17 -0
  35. package/components/base/button/props.d.ts +66 -0
  36. package/components/base/button/useButton.ts +37 -0
  37. package/components/base/card/api.ts +17 -0
  38. package/components/base/card/index.ts +15 -0
  39. package/components/base/card/props.d.ts +37 -0
  40. package/components/base/carousel/api.ts +28 -0
  41. package/components/base/carousel/index.ts +17 -0
  42. package/components/base/carousel/props.d.ts +72 -0
  43. package/components/base/carousel/useCarousel.ts +150 -0
  44. package/components/base/cascader/api.ts +23 -0
  45. package/components/base/cascader/index.ts +18 -0
  46. package/components/base/cascader/props.d.ts +103 -0
  47. package/components/base/cascader/useCascader.ts +335 -0
  48. package/components/base/checkbox/api.ts +24 -0
  49. package/components/base/checkbox/checkbox.css +0 -0
  50. package/components/base/checkbox/index.ts +17 -0
  51. package/components/base/checkbox/props.d.ts +77 -0
  52. package/components/base/checkbox/useCheckbox.ts +43 -0
  53. package/components/base/collapse/api.ts +21 -0
  54. package/components/base/collapse/index.ts +18 -0
  55. package/components/base/collapse/props.d.ts +45 -0
  56. package/components/base/collapse/useCollapse.ts +81 -0
  57. package/components/base/datePicker/__tests__/useDatePicker.test.ts +244 -0
  58. package/components/base/datePicker/api.ts +22 -0
  59. package/components/base/datePicker/index.ts +19 -0
  60. package/components/base/datePicker/props.d.ts +86 -0
  61. package/components/base/datePicker/useDatePicker.ts +392 -0
  62. package/components/base/divider/api.ts +15 -0
  63. package/components/base/divider/divider.css +11 -0
  64. package/components/base/divider/index.ts +15 -0
  65. package/components/base/divider/props.d.ts +30 -0
  66. package/components/base/dropdown/api.ts +33 -0
  67. package/components/base/dropdown/index.ts +18 -0
  68. package/components/base/dropdown/props.d.ts +60 -0
  69. package/components/base/dropdown/useDropdown.ts +124 -0
  70. package/components/base/empty/api.ts +15 -0
  71. package/components/base/empty/index.ts +15 -0
  72. package/components/base/empty/props.d.ts +26 -0
  73. package/components/base/image/__tests__/useImage.test.ts +176 -0
  74. package/components/base/image/api.ts +25 -0
  75. package/components/base/image/index.ts +18 -0
  76. package/components/base/image/props.d.ts +67 -0
  77. package/components/base/image/useImage.ts +119 -0
  78. package/components/base/input/api.ts +23 -0
  79. package/components/base/input/index.ts +17 -0
  80. package/components/base/input/input.css +19 -0
  81. package/components/base/input/props.d.ts +85 -0
  82. package/components/base/input/useInput.ts +63 -0
  83. package/components/base/inputNumber/__tests__/useInputNumber.test.ts +189 -0
  84. package/components/base/inputNumber/api.ts +23 -0
  85. package/components/base/inputNumber/index.ts +17 -0
  86. package/components/base/inputNumber/props.d.ts +78 -0
  87. package/components/base/inputNumber/useInputNumber.ts +182 -0
  88. package/components/base/li/api.ts +15 -0
  89. package/components/base/li/index.ts +15 -0
  90. package/components/base/li/props.d.ts +30 -0
  91. package/components/base/list/api.ts +16 -0
  92. package/components/base/list/index.ts +17 -0
  93. package/components/base/list/props.d.ts +33 -0
  94. package/components/base/list/useList.ts +36 -0
  95. package/components/base/loading/api.ts +17 -0
  96. package/components/base/loading/index.ts +15 -0
  97. package/components/base/loading/props.d.ts +40 -0
  98. package/components/base/popover/api.ts +28 -0
  99. package/components/base/popover/index.ts +17 -0
  100. package/components/base/popover/props.d.ts +73 -0
  101. package/components/base/popover/usePopover.ts +193 -0
  102. package/components/base/progress/api.ts +20 -0
  103. package/components/base/progress/index.ts +17 -0
  104. package/components/base/progress/props.d.ts +68 -0
  105. package/components/base/progress/useProgress.ts +28 -0
  106. package/components/base/radio/api.ts +19 -0
  107. package/components/base/radio/index.ts +19 -0
  108. package/components/base/radio/props.d.ts +59 -0
  109. package/components/base/radio/useRadio.ts +11 -0
  110. package/components/base/rate/api.ts +18 -0
  111. package/components/base/rate/index.ts +17 -0
  112. package/components/base/rate/props.d.ts +49 -0
  113. package/components/base/rate/useRate.ts +76 -0
  114. package/components/base/result/api.ts +20 -0
  115. package/components/base/result/index.ts +15 -0
  116. package/components/base/result/props.d.ts +36 -0
  117. package/components/base/select/api.ts +34 -0
  118. package/components/base/select/index.ts +18 -0
  119. package/components/base/select/props.d.ts +152 -0
  120. package/components/base/select/select.css +7 -0
  121. package/components/base/select/useSelect.ts +281 -0
  122. package/components/base/select/useSelectTools.ts +60 -0
  123. package/components/base/skeleton/api.ts +18 -0
  124. package/components/base/skeleton/index.ts +15 -0
  125. package/components/base/skeleton/props.d.ts +41 -0
  126. package/components/base/slider/api.ts +22 -0
  127. package/components/base/slider/index.ts +17 -0
  128. package/components/base/slider/props.d.ts +79 -0
  129. package/components/base/slider/useSlider.ts +87 -0
  130. package/components/base/space/api.ts +17 -0
  131. package/components/base/space/index.ts +15 -0
  132. package/components/base/space/props.d.ts +39 -0
  133. package/components/base/steps/__tests__/useSteps.test.ts +46 -0
  134. package/components/base/steps/api.ts +30 -0
  135. package/components/base/steps/index.ts +22 -0
  136. package/components/base/steps/props.d.ts +88 -0
  137. package/components/base/steps/useSteps.ts +101 -0
  138. package/components/base/switch/api.ts +22 -0
  139. package/components/base/switch/index.ts +19 -0
  140. package/components/base/switch/props.d.ts +66 -0
  141. package/components/base/switch/useSwitch.tsx +80 -0
  142. package/components/base/tabs/api.ts +23 -0
  143. package/components/base/tabs/index.ts +18 -0
  144. package/components/base/tabs/props.d.ts +41 -0
  145. package/components/base/tabs/useTabs.ts +67 -0
  146. package/components/base/tag/api.ts +17 -0
  147. package/components/base/tag/index.ts +15 -0
  148. package/components/base/tag/props.d.ts +51 -0
  149. package/components/base/timePicker/__tests__/useTimePicker.test.ts +124 -0
  150. package/components/base/timePicker/api.ts +24 -0
  151. package/components/base/timePicker/index.ts +18 -0
  152. package/components/base/timePicker/props.d.ts +86 -0
  153. package/components/base/timePicker/useTimePicker.ts +161 -0
  154. package/components/base/timeline/api.ts +24 -0
  155. package/components/base/timeline/index.ts +16 -0
  156. package/components/base/timeline/props.d.ts +60 -0
  157. package/components/base/tooltip/api.ts +21 -0
  158. package/components/base/tooltip/index.ts +18 -0
  159. package/components/base/tooltip/props.d.ts +46 -0
  160. package/components/base/tooltip/useTooltip.ts +208 -0
  161. package/components/base/transfer/api.ts +18 -0
  162. package/components/base/transfer/index.ts +17 -0
  163. package/components/base/transfer/props.d.ts +63 -0
  164. package/components/base/transfer/useTransfer.ts +208 -0
  165. package/components/base/tree/__tests__/tree.test.ts +223 -0
  166. package/components/base/tree/api.ts +47 -0
  167. package/components/base/tree/index.ts +29 -0
  168. package/components/base/tree/props.d.ts +108 -0
  169. package/components/base/tree/tree.ts +263 -0
  170. package/components/base/tree/useTree.ts +114 -0
  171. package/components/message/confirm/api.ts +21 -0
  172. package/components/message/confirm/index.ts +15 -0
  173. package/components/message/confirm/props.d.ts +69 -0
  174. package/components/message/dialog/api.ts +20 -0
  175. package/components/message/dialog/index.ts +15 -0
  176. package/components/message/dialog/props.d.ts +62 -0
  177. package/components/message/drawer/api.ts +33 -0
  178. package/components/message/drawer/index.ts +15 -0
  179. package/components/message/drawer/props.d.ts +80 -0
  180. package/components/message/message/api.ts +27 -0
  181. package/components/message/message/index.ts +20 -0
  182. package/components/message/message/props.d.ts +54 -0
  183. package/components/message/message/useMessage.ts +61 -0
  184. package/components/message/notification/__tests__/useNotification.test.ts +129 -0
  185. package/components/message/notification/api.ts +23 -0
  186. package/components/message/notification/index.ts +19 -0
  187. package/components/message/notification/props.d.ts +64 -0
  188. package/components/message/notification/useNotification.ts +79 -0
  189. package/components/message/popover/MPopover.tsx +94 -0
  190. package/components/message/popover/api.ts +54 -0
  191. package/components/message/popover/index.ts +17 -0
  192. package/components/message/popover/popover.css +21 -0
  193. package/components/message/popover/props.d.ts +76 -0
  194. package/components/message/popover/usePopover.ts +234 -0
  195. package/components/other/darkMode/api.ts +17 -0
  196. package/components/other/darkMode/index.ts +17 -0
  197. package/components/other/darkMode/props.d.ts +37 -0
  198. package/components/other/darkMode/useDarkMode.ts +129 -0
  199. package/components/template/border/api.ts +18 -0
  200. package/components/template/border/index.ts +15 -0
  201. package/components/template/border/props.d.ts +41 -0
  202. package/components/template/breadcrumb/api.ts +15 -0
  203. package/components/template/breadcrumb/index.ts +15 -0
  204. package/components/template/breadcrumb/props.d.ts +45 -0
  205. package/components/template/descriptions/api.ts +23 -0
  206. package/components/template/descriptions/index.ts +16 -0
  207. package/components/template/descriptions/props.d.ts +54 -0
  208. package/components/template/form/api.ts +23 -0
  209. package/components/template/form/index.ts +20 -0
  210. package/components/template/form/props.d.ts +60 -0
  211. package/components/template/grid/api.ts +20 -0
  212. package/components/template/grid/index.ts +15 -0
  213. package/components/template/grid/props.d.ts +48 -0
  214. package/components/template/menu/__tests__/useMenu.test.ts +157 -0
  215. package/components/template/menu/api.ts +26 -0
  216. package/components/template/menu/index.ts +18 -0
  217. package/components/template/menu/props.d.ts +93 -0
  218. package/components/template/menu/useMenu.ts +155 -0
  219. package/components/template/pagination/__tests__/usePagination.test.ts +138 -0
  220. package/components/template/pagination/api.ts +22 -0
  221. package/components/template/pagination/index.ts +19 -0
  222. package/components/template/pagination/props.d.ts +65 -0
  223. package/components/template/pagination/usePagination.ts +186 -0
  224. package/components/template/table/__tests__/useTable.test.ts +138 -0
  225. package/components/template/table/api.ts +18 -0
  226. package/components/template/table/index.ts +18 -0
  227. package/components/template/table/props.d.ts +36 -0
  228. package/components/template/table/useTable.ts +136 -0
  229. package/components/template/tableColumn/api.ts +17 -0
  230. package/components/template/tableColumn/index.ts +15 -0
  231. package/components/template/tableColumn/props.d.ts +32 -0
  232. package/components/template/virtualList/api.ts +16 -0
  233. package/components/template/virtualList/index.ts +17 -0
  234. package/components/template/virtualList/props.d.ts +25 -0
  235. package/components/template/virtualList/useVirtualList.ts +237 -0
  236. package/components/types/hook.d.ts +24 -0
  237. package/components/types/props.d.ts +57 -0
  238. package/components/types/template.d.ts +59 -0
  239. package/compositions/commandPalette/index.ts +11 -0
  240. package/compositions/commandPalette/types.ts +29 -0
  241. package/compositions/commandPalette/useCommandPalette.ts +135 -0
  242. package/compositions/common/__tests__/useDebounceFn.test.ts +62 -0
  243. package/compositions/common/__tests__/useEventListener.test.ts +98 -0
  244. package/compositions/common/__tests__/usePopover.test.ts +43 -0
  245. package/compositions/common/__tests__/useTeleport.test.ts +32 -0
  246. package/compositions/common/defineCore.ts +55 -0
  247. package/compositions/common/testAnchor.ts +211 -0
  248. package/compositions/common/useComponentSize.ts +17 -0
  249. package/compositions/common/useDebounceFn.ts +27 -0
  250. package/compositions/common/useDrag.ts +65 -0
  251. package/compositions/common/useElementSize.ts +37 -0
  252. package/compositions/common/useEventListener.ts +48 -0
  253. package/compositions/common/usePopover.ts +45 -0
  254. package/compositions/common/useResizeObserver.ts +47 -0
  255. package/compositions/common/useTeleport.ts +24 -0
  256. package/compositions/contextMenu/index.ts +10 -0
  257. package/compositions/contextMenu/types.ts +21 -0
  258. package/compositions/contextMenu/useContextMenu.ts +101 -0
  259. package/compositions/editor/index.ts +18 -0
  260. package/compositions/editor/types.ts +147 -0
  261. package/compositions/editor/useEditor.ts +224 -0
  262. package/compositions/index.ts +15 -0
  263. package/compositions/input/__tests__/useBooleanInput.test.ts +73 -0
  264. package/compositions/input/useBooleanInput.ts +52 -0
  265. package/compositions/modal/__tests__/useModal.test.ts +110 -0
  266. package/compositions/modal/useModal.ts +72 -0
  267. package/compositions/overlay/index.ts +14 -0
  268. package/compositions/overlay/useOverlayStack.ts +146 -0
  269. package/compositions/peekView/index.ts +10 -0
  270. package/compositions/peekView/usePeekView.ts +99 -0
  271. package/compositions/popper/useClickAway.ts +41 -0
  272. package/compositions/popper/usePopper.ts +63 -0
  273. package/compositions/theme/index.ts +17 -0
  274. package/compositions/theme/presets/compact.ts +117 -0
  275. package/compositions/theme/presets/dark.ts +113 -0
  276. package/compositions/theme/presets/index.ts +11 -0
  277. package/compositions/theme/presets/light.ts +113 -0
  278. package/compositions/theme/types.ts +46 -0
  279. package/compositions/theme/useTheme.ts +269 -0
  280. package/compositions/toast/index.ts +10 -0
  281. package/compositions/toast/useToast.ts +176 -0
  282. package/compositions/tooltip/index.ts +9 -0
  283. package/compositions/tooltip/useTooltip.ts +10 -0
  284. package/compositions/utils/__tests__/filters.test.ts +136 -0
  285. package/compositions/utils/filters.ts +135 -0
  286. package/compositions/virtualList/__tests__/useHeightCache.test.ts +97 -0
  287. package/compositions/virtualList/enums.ts +52 -0
  288. package/compositions/virtualList/useContainerObserver.ts +89 -0
  289. package/compositions/virtualList/useEntries.ts +248 -0
  290. package/compositions/virtualList/useHeightCache.ts +83 -0
  291. package/compositions/virtualList/useSentinelObserver.ts +81 -0
  292. package/dist/components/base/affix/index.d.ts +2 -1
  293. package/dist/components/base/affix/useAffix.d.ts +7 -5
  294. package/dist/components/base/anchor/index.d.ts +2 -1
  295. package/dist/components/base/anchor/useAnchor.d.ts +3 -2
  296. package/dist/components/base/autoComplete/useAutoComplete.d.ts +14 -5
  297. package/dist/components/base/avatar/index.d.ts +1 -0
  298. package/dist/components/base/backTop/index.d.ts +2 -1
  299. package/dist/components/base/backTop/useBackTop.d.ts +2 -2
  300. package/dist/components/base/button/index.d.ts +3 -21
  301. package/dist/components/base/button/useButton.d.ts +5 -2
  302. package/dist/components/base/carousel/useCarousel.d.ts +7 -3
  303. package/dist/components/base/cascader/useCascader.d.ts +25 -12
  304. package/dist/components/base/checkbox/index.d.ts +2 -1
  305. package/dist/components/base/checkbox/useCheckbox.d.ts +5 -3
  306. package/dist/components/base/collapse/index.d.ts +2 -1
  307. package/dist/components/base/collapse/useCollapse.d.ts +4 -3
  308. package/dist/components/base/datePicker/__tests__/useDatePicker.test.d.ts +1 -0
  309. package/dist/components/base/datePicker/useDatePicker.d.ts +140 -8
  310. package/dist/components/base/dropdown/index.d.ts +2 -1
  311. package/dist/components/base/dropdown/useDropdown.d.ts +13 -6
  312. package/dist/components/base/image/__tests__/useImage.test.d.ts +1 -0
  313. package/dist/components/base/image/useImage.d.ts +5 -5
  314. package/dist/components/base/input/index.d.ts +2 -1
  315. package/dist/components/base/input/useInput.d.ts +4 -2
  316. package/dist/components/base/inputNumber/__tests__/useInputNumber.test.d.ts +1 -0
  317. package/dist/components/base/inputNumber/index.d.ts +2 -1
  318. package/dist/components/base/inputNumber/useInputNumber.d.ts +4 -3
  319. package/dist/components/base/li/index.d.ts +1 -0
  320. package/dist/components/base/list/index.d.ts +2 -1
  321. package/dist/components/base/list/useList.d.ts +1 -1
  322. package/dist/components/base/popover/index.d.ts +2 -1
  323. package/dist/components/base/popover/usePopover.d.ts +10 -9
  324. package/dist/components/base/progress/index.d.ts +2 -1
  325. package/dist/components/base/progress/useProgress.d.ts +2 -2
  326. package/dist/components/base/rate/index.d.ts +2 -1
  327. package/dist/components/base/rate/useRate.d.ts +3 -2
  328. package/dist/components/base/select/useSelect.d.ts +10 -9
  329. package/dist/components/base/slider/index.d.ts +2 -1
  330. package/dist/components/base/slider/useSlider.d.ts +5 -4
  331. package/dist/components/base/steps/__tests__/useSteps.test.d.ts +1 -0
  332. package/dist/components/base/steps/index.d.ts +1 -1
  333. package/dist/components/base/steps/useSteps.d.ts +5 -5
  334. package/dist/components/base/switch/index.d.ts +2 -1
  335. package/dist/components/base/switch/useSwitch.d.ts +9 -3
  336. package/dist/components/base/tabs/index.d.ts +1 -1
  337. package/dist/components/base/tabs/useTabs.d.ts +4 -3
  338. package/dist/components/base/tag/index.d.ts +1 -0
  339. package/dist/components/base/timePicker/__tests__/useTimePicker.test.d.ts +1 -0
  340. package/dist/components/base/timePicker/useTimePicker.d.ts +14 -6
  341. package/dist/components/base/tooltip/index.d.ts +2 -1
  342. package/dist/components/base/tooltip/useTooltip.d.ts +24 -11
  343. package/dist/components/base/transfer/useTransfer.d.ts +17 -16
  344. package/dist/components/base/tree/__tests__/tree.test.d.ts +1 -0
  345. package/dist/components/base/tree/index.d.ts +1 -1
  346. package/dist/components/base/tree/useTree.d.ts +2 -1
  347. package/dist/components/message/drawer/index.d.ts +2 -2
  348. package/dist/components/message/message/useMessage.d.ts +11 -1
  349. package/dist/components/message/notification/__tests__/useNotification.test.d.ts +1 -0
  350. package/dist/components/message/notification/useNotification.d.ts +17 -1
  351. package/dist/components/message/popover/MPopover.d.ts +6 -1
  352. package/dist/components/message/popover/index.d.ts +1 -1
  353. package/dist/components/message/popover/usePopover.d.ts +7 -7
  354. package/dist/components/other/darkMode/useDarkMode.d.ts +3 -4
  355. package/dist/components/template/menu/__tests__/useMenu.test.d.ts +1 -0
  356. package/dist/components/template/menu/index.d.ts +0 -1
  357. package/dist/components/template/menu/useMenu.d.ts +2 -1
  358. package/dist/components/template/pagination/__tests__/usePagination.test.d.ts +1 -0
  359. package/dist/components/template/pagination/index.d.ts +2 -1
  360. package/dist/components/template/table/__tests__/useTable.test.d.ts +1 -0
  361. package/dist/components/template/virtualList/index.d.ts +0 -1
  362. package/dist/components/template/virtualList/useVirtualList.d.ts +10 -7
  363. package/dist/compositions/commandPalette/index.d.ts +11 -0
  364. package/dist/compositions/commandPalette/types.d.ts +20 -0
  365. package/dist/compositions/commandPalette/useCommandPalette.d.ts +32 -0
  366. package/dist/compositions/common/__tests__/useDebounceFn.test.d.ts +1 -0
  367. package/dist/compositions/common/__tests__/useEventListener.test.d.ts +1 -0
  368. package/dist/compositions/common/__tests__/usePopover.test.d.ts +1 -0
  369. package/dist/compositions/common/__tests__/useTeleport.test.d.ts +1 -0
  370. package/dist/compositions/common/testAnchor.d.ts +40 -0
  371. package/dist/compositions/common/useComponentSize.d.ts +6 -0
  372. package/dist/compositions/common/useDrag.d.ts +1 -1
  373. package/dist/compositions/common/useElementSize.d.ts +2 -2
  374. package/dist/compositions/common/useEventListener.d.ts +2 -2
  375. package/dist/compositions/common/useTeleport.d.ts +4 -2
  376. package/dist/compositions/contextMenu/index.d.ts +10 -0
  377. package/dist/compositions/contextMenu/types.d.ts +12 -0
  378. package/dist/compositions/contextMenu/useContextMenu.d.ts +52 -0
  379. package/dist/compositions/editor/index.d.ts +10 -0
  380. package/dist/compositions/editor/types.d.ts +132 -0
  381. package/dist/compositions/editor/useEditor.d.ts +13 -0
  382. package/dist/compositions/index.d.ts +15 -0
  383. package/dist/compositions/input/__tests__/useBooleanInput.test.d.ts +1 -0
  384. package/dist/compositions/modal/__tests__/useModal.test.d.ts +1 -0
  385. package/dist/compositions/modal/useModal.d.ts +3 -2
  386. package/dist/compositions/overlay/index.d.ts +10 -0
  387. package/dist/compositions/overlay/useOverlayStack.d.ts +188 -0
  388. package/dist/compositions/peekView/index.d.ts +10 -0
  389. package/dist/compositions/peekView/usePeekView.d.ts +16 -0
  390. package/dist/compositions/popper/useClickAway.d.ts +3 -3
  391. package/dist/compositions/theme/index.d.ts +11 -0
  392. package/dist/compositions/theme/presets/compact.d.ts +6 -0
  393. package/dist/compositions/theme/presets/dark.d.ts +2 -0
  394. package/dist/compositions/theme/presets/index.d.ts +11 -0
  395. package/dist/compositions/theme/presets/light.d.ts +2 -0
  396. package/dist/compositions/theme/types.d.ts +41 -0
  397. package/dist/compositions/theme/useTheme.d.ts +167 -0
  398. package/dist/compositions/toast/index.d.ts +10 -0
  399. package/dist/compositions/toast/useToast.d.ts +71 -0
  400. package/dist/compositions/tooltip/index.d.ts +9 -0
  401. package/dist/compositions/tooltip/useTooltip.d.ts +10 -0
  402. package/dist/compositions/utils/__tests__/filters.test.d.ts +1 -0
  403. package/dist/compositions/virtualList/__tests__/useHeightCache.test.d.ts +1 -0
  404. package/dist/core.js +7050 -4188
  405. package/dist/index.d.ts +1 -0
  406. package/dist/runtime/defineHook.d.ts +1 -1
  407. package/dist/tools/__tests__/empty.test.d.ts +1 -0
  408. package/dist/tools/empty.d.ts +2 -2
  409. package/dist/tools/types.d.ts +1 -1
  410. package/dist/vitest.config.d.ts +10 -0
  411. package/index.css +1 -0
  412. package/index.ts +73 -0
  413. package/package.json +41 -22
  414. package/runtime/defineHook.ts +21 -0
  415. package/tools/__tests__/empty.test.ts +91 -0
  416. package/tools/empty.ts +81 -0
  417. package/tools/index.ts +15 -0
  418. package/tools/types.ts +11 -0
  419. package/tsconfig.json +8 -0
  420. package/types/common/common.d.ts +25 -0
  421. package/types/common/model.d.ts +25 -0
  422. package/types/index.d.ts +11 -0
  423. package/types/props.d.ts +13 -0
  424. package/vite.config.build.ts +41 -0
  425. package/vitest.config.ts +17 -0
  426. package/dist/vite.config.build.d.ts +0 -2
@@ -0,0 +1,237 @@
1
+ /**
2
+ * @description 虚拟列表核心 hook(sentinel 方案)
3
+ * @author 阿怪
4
+ * @date 2026/2/25 14:00
5
+ * @version v3.0.0
6
+ *
7
+ * 江湖的业务千篇一律,复杂的代码好几百行。
8
+ *
9
+ * 基于 sentinel 哨兵元素 + scrollTop 绝对定位
10
+ * 不依赖状态机连续性,快速滚动也能正确定位
11
+ */
12
+ import { computed, nextTick, onMounted, ref, watch, toRef, onBeforeUnmount } from 'vue';
13
+ import { VirtualListProps } from './props';
14
+ import { createHeightCache } from '../../../compositions/virtualList/useHeightCache';
15
+ import { useSentinelObserver } from '../../../compositions/virtualList/useSentinelObserver';
16
+
17
+ export interface UseVirtualListOptions<T> {
18
+ props: VirtualListProps<T>;
19
+ /** 触底事件 */
20
+ onReachBottom?: () => void;
21
+ }
22
+
23
+ export function useVirtualList<T>(options: UseVirtualListOptions<T>) {
24
+ const { props, onReachBottom } = options;
25
+
26
+ const containerRef = ref<HTMLElement | null>(null);
27
+ const wrapperRef = ref<HTMLElement | null>(null);
28
+ const topSentinelRef = ref<HTMLElement | null>(null);
29
+ const bottomSentinelRef = ref<HTMLElement | null>(null);
30
+
31
+ const listRef = toRef(() => props.list ?? []);
32
+ const estimatedHeight = props.estimatedHeight ?? 40;
33
+ const overScan = props.overScan ?? 1;
34
+
35
+ // 高度缓存
36
+ const heightCache = createHeightCache(listRef.value.length, estimatedHeight);
37
+
38
+ // 当前渲染范围
39
+ const renderFrom = ref(0);
40
+ const renderEnd = ref(0);
41
+
42
+ // spacer 总高度
43
+ const totalHeight = ref(0);
44
+ // wrapper 偏移
45
+ const offsetY = ref(0);
46
+
47
+ /** 根据 scrollTop 计算渲染范围 */
48
+ const calcRange = () => {
49
+ const container = containerRef.value;
50
+ if (!container) return;
51
+
52
+ const list = listRef.value;
53
+ const total = list.length;
54
+ if (total === 0) {
55
+ renderFrom.value = 0;
56
+ renderEnd.value = 0;
57
+ totalHeight.value = 0;
58
+ offsetY.value = 0;
59
+ return;
60
+ }
61
+
62
+ const scrollTop = container.scrollTop;
63
+ const containerHeight = container.clientHeight;
64
+
65
+ // 用 scrollTop 直接定位起始索引
66
+ const startIndex = heightCache.findIndex(scrollTop);
67
+ // 计算可见数量
68
+ let visibleEnd = startIndex;
69
+ let accHeight = 0;
70
+ while (visibleEnd < total && accHeight < containerHeight) {
71
+ accHeight += heightCache.getHeight(visibleEnd);
72
+ visibleEnd++;
73
+ }
74
+
75
+ const visibleCount = visibleEnd - startIndex;
76
+ const overScanCount = Math.max(1, Math.floor(visibleCount * overScan));
77
+
78
+ // 加上 overScan 缓冲区
79
+ const from = Math.max(0, startIndex - overScanCount);
80
+ const end = Math.min(total, visibleEnd + overScanCount);
81
+
82
+ renderFrom.value = from;
83
+ renderEnd.value = end;
84
+ totalHeight.value = heightCache.getTotalHeight();
85
+ offsetY.value = heightCache.getOffset(from);
86
+ };
87
+
88
+ /** 当前要渲染的数据切片 */
89
+ const displayList = computed(() => {
90
+ const list = listRef.value;
91
+ return list.slice(renderFrom.value, renderEnd.value)
92
+ .map((d, i) => ({ data: d as T, index: i + renderFrom.value }));
93
+ });
94
+
95
+ /**
96
+ * 测量已渲染项的实际高度并更新缓存
97
+ * 同时进行 scrollTop 补偿:当上方元素的真实高度和预估不同时,
98
+ * 修正 scrollTop 使视觉位置不跳动
99
+ */
100
+ const measureItems = () => {
101
+ const wrapper = wrapperRef.value;
102
+ const container = containerRef.value;
103
+ if (!wrapper || !container) return;
104
+
105
+ const scrollTop = container.scrollTop;
106
+ // 记录当前视口第一个可见项的旧偏移
107
+ const firstVisibleIndex = heightCache.findIndex(scrollTop);
108
+ const oldOffset = heightCache.getOffset(firstVisibleIndex);
109
+
110
+ const children = wrapper.children;
111
+ let hasChange = false;
112
+ // 跳过 top sentinel(第一个子元素)
113
+ for (let i = 1; i < children.length - 1; i++) {
114
+ const child = children[i];
115
+ const index = renderFrom.value + (i - 1); // -1 因为跳过 top sentinel
116
+ const height = child.getBoundingClientRect().height;
117
+ if (height > 0) {
118
+ const oldHeight = heightCache.getHeight(index);
119
+ if (Math.abs(oldHeight - height) > 0.5) {
120
+ heightCache.update(index, height);
121
+ hasChange = true;
122
+ }
123
+ }
124
+ }
125
+
126
+ if (hasChange) {
127
+ // 计算补偿量:上方高度变化导致的偏移差
128
+ const newOffset = heightCache.getOffset(firstVisibleIndex);
129
+ const delta = newOffset - oldOffset;
130
+ if (Math.abs(delta) > 0.5) {
131
+ container.scrollTop = scrollTop + delta;
132
+ }
133
+ }
134
+
135
+ // 更新总高度
136
+ totalHeight.value = heightCache.getTotalHeight();
137
+ };
138
+
139
+ const update = () => {
140
+ measureItems();
141
+ calcRange();
142
+ // 范围变化后,下一帧再测量一次(新渲染的元素)
143
+ nextTick(() => {
144
+ measureItems();
145
+ });
146
+ };
147
+
148
+ // sentinel observer
149
+ const { reobserve } = useSentinelObserver({
150
+ containerRef,
151
+ topSentinelRef,
152
+ bottomSentinelRef,
153
+ onUpdate: update,
154
+ onReachBottom,
155
+ });
156
+
157
+ // scroll 事件驱动:用 rAF 节流,保证滚动过程中持续更新渲染范围
158
+ let rafId: number | null = null;
159
+ let scrollHandler: (() => void) | undefined;
160
+ let scrollendHandler: (() => void) | undefined;
161
+
162
+ const setupScrollListener = () => {
163
+ const container = containerRef.value;
164
+ if (!container) return;
165
+
166
+ // 连续滚动时用 rAF 节流更新
167
+ scrollHandler = () => {
168
+ if (rafId !== null) return;
169
+ rafId = requestAnimationFrame(() => {
170
+ rafId = null;
171
+ calcRange();
172
+ });
173
+ };
174
+ container.addEventListener('scroll', scrollHandler, { passive: true });
175
+
176
+ // scrollend 做最终修正(测量 + 补偿)
177
+ scrollendHandler = () => {
178
+ measureItems();
179
+ calcRange();
180
+ };
181
+ container.addEventListener('scrollend', scrollendHandler);
182
+ };
183
+
184
+ const cleanupScrollListener = () => {
185
+ const container = containerRef.value;
186
+ if (container) {
187
+ if (scrollHandler) container.removeEventListener('scroll', scrollHandler);
188
+ if (scrollendHandler) container.removeEventListener('scrollend', scrollendHandler);
189
+ }
190
+ if (rafId !== null) {
191
+ cancelAnimationFrame(rafId);
192
+ rafId = null;
193
+ }
194
+ };
195
+
196
+ // 初始化
197
+ onMounted(() => {
198
+ const list = listRef.value;
199
+ heightCache.reset(list.length);
200
+
201
+ // 初始渲染
202
+ calcRange();
203
+
204
+ nextTick(() => {
205
+ measureItems();
206
+ calcRange();
207
+ reobserve();
208
+ setupScrollListener();
209
+ });
210
+ });
211
+
212
+ // 响应 list 变化
213
+ watch(listRef, (newList) => {
214
+ heightCache.reset(newList.length);
215
+ if (containerRef.value) {
216
+ containerRef.value.scrollTop = 0;
217
+ }
218
+ calcRange();
219
+ nextTick(() => {
220
+ measureItems();
221
+ calcRange();
222
+ reobserve();
223
+ });
224
+ });
225
+
226
+ onBeforeUnmount(cleanupScrollListener);
227
+
228
+ return {
229
+ displayList,
230
+ containerRef,
231
+ wrapperRef,
232
+ topSentinelRef,
233
+ bottomSentinelRef,
234
+ totalHeight,
235
+ offsetY,
236
+ };
237
+ }
@@ -0,0 +1,24 @@
1
+ /**
2
+ * @description
3
+ * @author 阿怪
4
+ * @date 2024/12/16 10:15
5
+ * @version v1.0.0
6
+ *
7
+ * 江湖的业务千篇一律,复杂的代码好几百行。
8
+ */
9
+ import { SlotsType } from '@vue/runtime-core';
10
+
11
+ export type UseHookResult<Props, S extends SlotsType, Return> = Return;
12
+
13
+ /**
14
+ * Core hook 所需的最小 context 类型。
15
+ * 使用 `(...args: any[]) => void` 而非 `(event: string, ...) => void`,
16
+ * 以兼容 Vue defineComponent typed emits 产生的窄化 emit 签名。
17
+ */
18
+ export type HookContext = {
19
+ emit: (...args: any[]) => void;
20
+ slots: Readonly<Record<string, ((...args: any[]) => any) | undefined>>;
21
+ expose?: (exposed?: Record<string, any>) => void;
22
+ };
23
+
24
+
@@ -0,0 +1,57 @@
1
+ /* eslint-disable */
2
+ /**
3
+ * @description M Component Object Props Options
4
+ * @author 阿怪
5
+ * @date 2022/12/13 00:01
6
+ * @version v1.0.0
7
+ *
8
+ * 江湖的业务千篇一律,复杂的代码好几百行。
9
+ * M means Shuimo
10
+ */
11
+ export declare type MPropOptions<T = any, D = T> = {
12
+ type?: MPropType<T> | true | null,
13
+ required: true,
14
+ default?: D | DefaultFactory<D> | null | undefined | object,
15
+ enum?: T[],
16
+ }
17
+
18
+ export declare type MPropOptionsWithDefault<T = any, D = T> = {
19
+ type?: MPropType<T> | true | null,
20
+ required?: false,
21
+ default: D | DefaultFactory<D> | null | undefined | object,
22
+ enum?: T[],
23
+ }
24
+
25
+ /**
26
+ * @description MComponentObjectPropsOptions
27
+ */
28
+ export type MCOPO<P, OK = Required<Pick<P, OptionalKeys<P>>>> = {
29
+ [K in keyof OK]: MPropOptionsWithDefault<OK[K]>
30
+ } & {
31
+ [K in keyof Pick<P, RequiredKeys<P>>]-?: MPropOptions<P[K]>
32
+ }
33
+
34
+
35
+ type DefaultFactory<T> = (props: Data) => T;
36
+
37
+ type RequiredKeys<T> = { [K in keyof T]-?: {} extends Pick<T, K> ? never : K }[keyof T];
38
+
39
+ type OptionalKeys<T> = Exclude<keyof T, RequiredKeys<T>>;
40
+
41
+ type MPropConstructor<T = any> =
42
+ | { new(...args: any[]): T & {} }
43
+ | { (): T }
44
+ | MPropMethod<T>
45
+
46
+ type MPropMethod<T, TConstructor = any> = [T] extends [
47
+ ((...args: any) => any) | undefined
48
+ ] // if is function with args, allowing non-required functions
49
+ ? { new(): TConstructor; (): T; readonly prototype: TConstructor } // Create Function like constructor
50
+ : never
51
+
52
+ export type MPropType<T> = MPropConstructor<T> | MPropConstructor<T>[];
53
+
54
+ /**
55
+ * @description unified component size variants
56
+ */
57
+ export type KineSize = 'large' | 'medium' | 'small';
@@ -0,0 +1,59 @@
1
+ /**
2
+ * @description
3
+ * @author 阿怪
4
+ * @date 2022/12/12 14:52
5
+ * @version v1.0.0
6
+ *
7
+ * 江湖的业务千篇一律,复杂的代码好几百行。
8
+ */
9
+ import { RenderFunction, SetupContext } from 'vue';
10
+ import { MCOPO } from './props';
11
+
12
+ type WithArray<T> = T | T[]; // todo fix this
13
+
14
+ export type HTMLElementEvent<T extends HTMLElement> = Event & {
15
+ target: T;
16
+ };
17
+
18
+ type MVNodeRenderParams = {
19
+ if?: boolean,
20
+ show?: boolean,
21
+ };
22
+
23
+ interface ElementEventListener {
24
+ (event: HTMLElementEvent<any>): void;
25
+ }
26
+
27
+ export type MNodeProps = Record<string, WithArray<string | number | boolean> | ElementEventListener | Record<string, any>>;
28
+
29
+ export declare type MNodeSlot = MVNodeRenderParams & {
30
+ props?: MNodeProps,
31
+ };
32
+
33
+ export declare type MNodeTemplate = {
34
+ type: string,
35
+ props?: MNodeProps,
36
+ children?: Record<string, MNodeTemplate>,
37
+ slots?: Map<string, MNodeSlot>,
38
+ innerText?: string[],
39
+ initProps?: (templateProps: MCOPO<any>, props: MNodeProps, filter?: string[]) => void,
40
+ } & MVNodeRenderParams;
41
+
42
+
43
+ export declare type MVNode = {
44
+ name: string,
45
+ template?: MNodeTemplate,
46
+ dom?: HTMLElement,
47
+ props?: MNodeTemplate['props'],
48
+ children?: Record<string, MVNode>,
49
+ slots?: MNodeTemplate['slots']
50
+ };
51
+
52
+ export declare type CustomElementParams = {
53
+ name: string,
54
+ style?: string,
55
+ template?: MNodeTemplate,
56
+ props?: MCOPO<any>
57
+ };
58
+
59
+ export declare type WCSetup<T = any> = (slot?: HTMLSlotElement) => (props: Readonly<T>, ctx: SetupContext) => RenderFunction;
@@ -0,0 +1,11 @@
1
+ /**
2
+ * @description commandPalette composition barrel export
3
+ * @author kine-design
4
+ * @date 2026/5/22
5
+ * @version v1.0.0
6
+ *
7
+ * 江湖的业务千篇一律,复杂的代码好几百行。
8
+ */
9
+ export { useCommandPalette } from './useCommandPalette';
10
+ export type { UseCommandPaletteReturn } from './useCommandPalette';
11
+ export type { Command } from './types';
@@ -0,0 +1,29 @@
1
+ /**
2
+ * @description CommandPalette command type definitions
3
+ * @author kine-design
4
+ * @date 2026/5/22
5
+ * @version v1.0.0
6
+ *
7
+ * 江湖的业务千篇一律,复杂的代码好几百行。
8
+ */
9
+ import type { VNode } from 'vue';
10
+
11
+ /**
12
+ * A single command registered in the palette.
13
+ */
14
+ export interface Command {
15
+ /** Unique identifier */
16
+ id: string;
17
+ /** Display label (also used for search) */
18
+ label: string;
19
+ /** Optional icon render function */
20
+ icon?: () => VNode;
21
+ /** Additional search terms beyond the label */
22
+ keywords?: string[];
23
+ /** Grouping category (e.g. "Navigation", "Actions") */
24
+ group?: string;
25
+ /** Shortcut hint text displayed on the right side of the item */
26
+ shortcut?: string;
27
+ /** Callback executed when the command is selected */
28
+ action: () => void;
29
+ }
@@ -0,0 +1,135 @@
1
+ /**
2
+ * @description CommandPalette composable — global search + command execution
3
+ * @author kine-design
4
+ * @date 2026/5/22
5
+ * @version v1.0.0
6
+ *
7
+ * 江湖的业务千篇一律,复杂的代码好几百行。
8
+ *
9
+ * Manages open/close state, command registration, query filtering, and execution.
10
+ * Does NOT participate in overlayStack — fixed z-index 9500.
11
+ */
12
+ import { ref, computed, type Ref, type ComputedRef } from 'vue';
13
+ import type { Command } from './types';
14
+
15
+ export interface UseCommandPaletteReturn {
16
+ /** Whether the palette is open */
17
+ isOpen: Ref<boolean>;
18
+ /** Current search query */
19
+ query: Ref<string>;
20
+ /** Index of the currently highlighted item */
21
+ activeIndex: Ref<number>;
22
+ /** All registered commands */
23
+ commands: Ref<Command[]>;
24
+ /** Filtered commands based on query */
25
+ filtered: ComputedRef<Command[]>;
26
+ /** Open the palette */
27
+ open: () => void;
28
+ /** Close the palette */
29
+ close: () => void;
30
+ /** Toggle open/close */
31
+ toggle: () => void;
32
+ /** Register a command */
33
+ registerCommand: (cmd: Command) => void;
34
+ /** Unregister a command by id */
35
+ unregisterCommand: (id: string) => void;
36
+ /** Execute the command at a given index in the filtered list, then close */
37
+ execute: (index: number) => void;
38
+ }
39
+
40
+ /**
41
+ * CommandPalette composable
42
+ *
43
+ * Provides reactive state for opening, searching, and executing commands.
44
+ */
45
+ export function useCommandPalette(): UseCommandPaletteReturn {
46
+ const isOpen = ref(false);
47
+ const query = ref('');
48
+ const activeIndex = ref(0);
49
+ const commands = ref<Command[]>([]);
50
+
51
+ /** element that had focus before the palette opened */
52
+ let previousActiveElement: Element | null = null;
53
+
54
+ const open = () => {
55
+ previousActiveElement = document.activeElement;
56
+ isOpen.value = true;
57
+ query.value = '';
58
+ activeIndex.value = 0;
59
+ };
60
+
61
+ const close = () => {
62
+ isOpen.value = false;
63
+ query.value = '';
64
+ activeIndex.value = 0;
65
+ // restore focus to the previously focused element
66
+ if (previousActiveElement && previousActiveElement instanceof HTMLElement) {
67
+ previousActiveElement.focus();
68
+ }
69
+ previousActiveElement = null;
70
+ };
71
+
72
+ const toggle = () => {
73
+ if (isOpen.value) {
74
+ close();
75
+ } else {
76
+ open();
77
+ }
78
+ };
79
+
80
+ const registerCommand = (cmd: Command) => {
81
+ // prevent duplicates
82
+ const exists = commands.value.some(c => c.id === cmd.id);
83
+ if (!exists) {
84
+ commands.value.push(cmd);
85
+ }
86
+ };
87
+
88
+ const unregisterCommand = (id: string) => {
89
+ const idx = commands.value.findIndex(c => c.id === id);
90
+ if (idx !== -1) {
91
+ commands.value.splice(idx, 1);
92
+ }
93
+ };
94
+
95
+ /**
96
+ * Simple case-insensitive substring match on label + keywords.
97
+ */
98
+ const filtered = computed<Command[]>(() => {
99
+ const q = query.value.trim().toLowerCase();
100
+ if (!q) {
101
+ return commands.value;
102
+ }
103
+ return commands.value.filter(cmd => {
104
+ if (cmd.label.toLowerCase().includes(q)) {
105
+ return true;
106
+ }
107
+ if (cmd.keywords) {
108
+ return cmd.keywords.some(kw => kw.toLowerCase().includes(q));
109
+ }
110
+ return false;
111
+ });
112
+ });
113
+
114
+ const execute = (index: number) => {
115
+ const cmd = filtered.value[index];
116
+ if (cmd) {
117
+ close();
118
+ cmd.action();
119
+ }
120
+ };
121
+
122
+ return {
123
+ isOpen,
124
+ query,
125
+ activeIndex,
126
+ commands,
127
+ filtered,
128
+ open,
129
+ close,
130
+ toggle,
131
+ registerCommand,
132
+ unregisterCommand,
133
+ execute,
134
+ };
135
+ }
@@ -0,0 +1,62 @@
1
+ /**
2
+ * @description useDebounceFn 测试
3
+ * @author 阿怪
4
+ * @date 2026/3/23
5
+ * @version v1.0.0
6
+ *
7
+ * 江湖的业务千篇一律,复杂的代码好几百行。
8
+ */
9
+ import { describe, expect, it, vi, beforeEach, afterEach } from 'vitest';
10
+ import useDebounceFn from '../useDebounceFn';
11
+
12
+ beforeEach(() => { vi.useFakeTimers(); });
13
+ afterEach(() => { vi.useRealTimers(); });
14
+
15
+ describe('useDebounceFn', () => {
16
+ it('返回防抖后的函数', () => {
17
+ const fn = vi.fn();
18
+ const debounced = useDebounceFn(fn, 100);
19
+
20
+ debounced();
21
+ expect(fn).not.toHaveBeenCalled();
22
+
23
+ vi.advanceTimersByTime(100);
24
+ expect(fn).toHaveBeenCalledOnce();
25
+ });
26
+
27
+ it('默认延迟 200ms', () => {
28
+ const fn = vi.fn();
29
+ const debounced = useDebounceFn(fn);
30
+
31
+ debounced();
32
+ vi.advanceTimersByTime(199);
33
+ expect(fn).not.toHaveBeenCalled();
34
+
35
+ vi.advanceTimersByTime(1);
36
+ expect(fn).toHaveBeenCalledOnce();
37
+ });
38
+
39
+ it('支持 maxWait 选项', () => {
40
+ const fn = vi.fn();
41
+ const debounced = useDebounceFn(fn, 100, { maxWait: 150 });
42
+
43
+ debounced();
44
+ vi.advanceTimersByTime(80);
45
+ debounced();
46
+ vi.advanceTimersByTime(80);
47
+ expect(fn).toHaveBeenCalledOnce();
48
+ });
49
+
50
+ it('多次调用只执行最后一次', () => {
51
+ const fn = vi.fn();
52
+ const debounced = useDebounceFn(fn, 50);
53
+
54
+ debounced('a');
55
+ debounced('b');
56
+ debounced('c');
57
+
58
+ vi.advanceTimersByTime(50);
59
+ expect(fn).toHaveBeenCalledOnce();
60
+ expect(fn).toHaveBeenCalledWith('c');
61
+ });
62
+ });