@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,66 @@
1
+ /**
2
+ * @description switch api type
3
+ * @author 阿怪
4
+ * @date 2022/8/16 23:13
5
+ * @version v1.0.0
6
+ *
7
+ * @name m-switch
8
+ * @docDescription Switch component with shuimo-ui style.
9
+ * 水墨组件的开关组件。
10
+ * slot优先级高于text
11
+ * @docUrl https://shuimo.design/switch
12
+ *
13
+ * 江湖的业务千篇一律,复杂的代码好几百行。
14
+ */
15
+
16
+ export declare type SwitchProps = {
17
+ /**
18
+ * @description switch value. 开关绑定值
19
+ * @type any
20
+ */
21
+ modelValue: any,
22
+ /**
23
+ * @description switch disabled
24
+ * 是否禁用
25
+ * @default false
26
+ */
27
+ disabled?: boolean,
28
+ /**
29
+ * @description switch disabled
30
+ * 是否加载中
31
+ * @default false
32
+ */
33
+ loading?: boolean,
34
+ /**
35
+ * @description 打开文本
36
+ * @type string
37
+ */
38
+ activeInfo?: string,
39
+ /**
40
+ * @description 关闭文本
41
+ * @type string
42
+ */
43
+ inactiveInfo?: string,
44
+ /**
45
+ * @description 打开参数
46
+ * @type string
47
+ */
48
+ activeValue?: any,
49
+ /**
50
+ * @description 关闭参数
51
+ * @type string
52
+ */
53
+ inactiveValue?: any,
54
+ /**
55
+ * @description 是否控制
56
+ * @type string
57
+ * @default false
58
+ */
59
+ onControl?: boolean
60
+ };
61
+
62
+
63
+ export declare type SwitchEvents = {
64
+ onClick?: (e: MouseEvent) => void
65
+ };
66
+
@@ -0,0 +1,80 @@
1
+ /**
2
+ * @description switch hook
3
+ * @author 阿怪
4
+ * @date 2023/4/23 21:34
5
+ * @version v1.0.0
6
+ *
7
+ * 江湖的业务千篇一律,复杂的代码好几百行。
8
+ */
9
+ import { SwitchProps } from './props';
10
+ import { computed, ref } from 'vue';
11
+ import { isEmpty } from '../../../tools';
12
+ import { type HookContext } from '../../types/hook';
13
+
14
+ export const switchIsBoolean = (value: SwitchProps['modelValue']) => {
15
+ return typeof value === 'boolean';
16
+ };
17
+
18
+ export const getIsActive = (value: SwitchProps['modelValue'], activeValue: SwitchProps['activeValue']) => {
19
+ return value === activeValue;
20
+ };
21
+
22
+
23
+ export function useSwitch<
24
+ Props extends Record<string, any>,
25
+ >(props: Props, ctx: HookContext) {
26
+ const activeValue = ref(props.activeValue);
27
+ const inactiveValue = ref(props.inactiveValue);
28
+ const { slots, emit } = ctx;
29
+
30
+ const isBoolean = computed(() => switchIsBoolean(props.modelValue));
31
+ // 如果modelValue是布尔值
32
+ if (isBoolean.value) {
33
+ // 如果activeValue和inactiveValue都为空
34
+ if (isEmpty(props.activeValue) && isEmpty(props.inactiveValue)) {
35
+ activeValue.value = true;
36
+ inactiveValue.value = false;
37
+ }
38
+ }
39
+
40
+ const isActive = computed(() => getIsActive(props.modelValue, activeValue.value));
41
+
42
+
43
+ const changeSwitch = () => {
44
+ if (props.disabled || props.loading) {
45
+ return;
46
+ }
47
+ // 如果不是自定义控制的
48
+ if (!props.onControl) {
49
+ // 如果是简单的布尔值
50
+ if (isBoolean.value) {
51
+ emit('update:modelValue', !props.modelValue);
52
+ }
53
+ }
54
+ emit('change', !isActive.value ? props.activeValue ?? true : inactiveValue ?? false);
55
+ };
56
+
57
+ const getInfo = (key: keyof Pick<SwitchProps, 'activeInfo' | 'inactiveInfo'>) => {
58
+ if (slots[key]) {
59
+ return slots[key]!();
60
+ }
61
+ const info = props[key];
62
+ if (!info) {
63
+ return;
64
+ }
65
+ return <span class="m-switch-span">{info}</span>;
66
+ };
67
+ const switchClass = computed(()=>[
68
+ 'm-switch',
69
+ isActive.value ? 'm-switch-active' : 'm-switch-inactive',
70
+ { 'm-switch-loading': props.loading },
71
+ { 'm-switch-disabled': props.disabled },
72
+ ])
73
+
74
+
75
+ return {
76
+ getInfo,
77
+ changeSwitch,
78
+ switchClass
79
+ };
80
+ }
@@ -0,0 +1,23 @@
1
+ /**
2
+ * @description tabs api
3
+ * @author 阿怪
4
+ * @date 2026/2/26
5
+ * @version v1.0.0
6
+ *
7
+ * 江湖的业务千篇一律,复杂的代码好几百行。
8
+ */
9
+ import { MCOPO, MPropType } from '../../types/props';
10
+ import { TabsProps, TabPaneProps } from './props';
11
+
12
+ export const props: MCOPO<TabsProps> = {
13
+ modelValue: { type: [String, Number], required: true },
14
+ items: { type: Array, default: () => [] },
15
+ type: { type: String as MPropType<'line' | 'card'>, default: 'line' },
16
+ };
17
+
18
+ export const tabPaneProps: MCOPO<TabPaneProps> = {
19
+ label: { type: String, required: true },
20
+ name: { type: [String, Number], required: true },
21
+ disabled: { type: Boolean, default: false },
22
+ lazy: { type: Boolean, default: false },
23
+ };
@@ -0,0 +1,18 @@
1
+ /**
2
+ * @description tabs barrel export
3
+ * @author 阿怪
4
+ * @date 2026/2/26
5
+ * @version v1.0.0
6
+ *
7
+ * 江湖的业务千篇一律,复杂的代码好几百行。
8
+ */
9
+ import { props, tabPaneProps } from './api';
10
+ import { useTabs } from './useTabs';
11
+
12
+ export const TabsCore = {
13
+ props,
14
+ tabPaneProps,
15
+ useTabs,
16
+ };
17
+
18
+ export type { TabsProps, TabPaneProps, TabItem } from './props';
@@ -0,0 +1,41 @@
1
+ /**
2
+ * @description tabs api type
3
+ * @author 阿怪
4
+ * @date 2026/2/26
5
+ * @version v1.0.0
6
+ *
7
+ * 江湖的业务千篇一律,复杂的代码好几百行。
8
+ */
9
+
10
+ export declare type TabItem = {
11
+ /** 标签页显示文本 */
12
+ label: string;
13
+ /** 标签页唯一标识 */
14
+ name: string | number;
15
+ /** 是否禁用 */
16
+ disabled?: boolean;
17
+ };
18
+
19
+ export declare type TabsProps = {
20
+ /** 当前激活的标签页 name */
21
+ modelValue: string | number;
22
+ /** 标签页数据(与插槽 API 二选一) */
23
+ items?: TabItem[];
24
+ /** 标签页样式类型 */
25
+ type?: 'line' | 'card';
26
+ };
27
+
28
+ export declare type TabsEvents = {
29
+ onChange?: (name: string | number) => void;
30
+ };
31
+
32
+ export declare type TabPaneProps = {
33
+ /** 标签页显示文本 */
34
+ label: string;
35
+ /** 标签页唯一标识,需与父组件 modelValue 对应 */
36
+ name: string | number;
37
+ /** 是否禁用 */
38
+ disabled?: boolean;
39
+ /** 是否懒加载(首次激活才渲染内容) */
40
+ lazy?: boolean;
41
+ };
@@ -0,0 +1,67 @@
1
+ /**
2
+ * @description tabs hook
3
+ * @author 阿怪
4
+ * @date 2026/2/26
5
+ * @version v1.0.0
6
+ *
7
+ * 江湖的业务千篇一律,复杂的代码好几百行。
8
+ */
9
+ import { computed } from 'vue';
10
+ import { TabsProps } from './props';
11
+ import { type HookContext } from '../../types/hook';
12
+
13
+ export function useTabs<
14
+ Props extends Record<string, unknown>,
15
+ >(props: Props, ctx: HookContext) {
16
+ const { emit } = ctx;
17
+
18
+ /** 当前激活的标签名 */
19
+ const activeTab = computed(() => (props as unknown as TabsProps).modelValue);
20
+
21
+ /** 判断某个标签是否为激活状态 */
22
+ const isActive = (name: string | number) => activeTab.value === name;
23
+
24
+ /** 切换标签页,禁用状态下不响应 */
25
+ const switchTab = (name: string | number, disabled?: boolean) => {
26
+ if (disabled) {
27
+ return;
28
+ }
29
+ if (name === activeTab.value) {
30
+ return;
31
+ }
32
+ emit('update:modelValue', name);
33
+ emit('change', name);
34
+ };
35
+
36
+ /** 容器根节点 class */
37
+ const tabsClass = computed(() => {
38
+ const type = (props as unknown as TabsProps).type ?? 'line';
39
+ return [
40
+ 'm-tabs',
41
+ `m-tabs-${type}`,
42
+ ];
43
+ });
44
+
45
+ /** 导航栏 class */
46
+ const navClass = 'm-tabs-nav';
47
+
48
+ /** 获取单个导航项的 class */
49
+ const getNavItemClass = (name: string | number, disabled?: boolean) => [
50
+ 'm-tabs-nav-item',
51
+ isActive(name) ? 'm-tabs-nav-item-active' : '',
52
+ disabled ? 'm-tabs-nav-item-disabled' : '',
53
+ ].filter(Boolean);
54
+
55
+ /** 内容区域 class */
56
+ const contentClass = 'm-tabs-content';
57
+
58
+ return {
59
+ activeTab,
60
+ isActive,
61
+ switchTab,
62
+ tabsClass,
63
+ navClass,
64
+ getNavItemClass,
65
+ contentClass,
66
+ };
67
+ }
@@ -0,0 +1,17 @@
1
+ /**
2
+ * @description tag api
3
+ * @author 阿怪
4
+ * @date 2026/2/27 00:00
5
+ * @version v1.1.0
6
+ *
7
+ * 江湖的业务千篇一律,复杂的代码好几百行。
8
+ */
9
+ import { MCOPO, MPropType } from '../../types/props';
10
+ import { TagProps } from './props';
11
+
12
+ export const props: MCOPO<TagProps> = {
13
+ type: { type: String as MPropType<'default' | 'primary' | 'success' | 'warning' | 'danger' | 'info'>, default: 'default' },
14
+ size: { type: String as MPropType<'large' | 'medium' | 'small'>, default: undefined },
15
+ closable: { type: Boolean, default: false },
16
+ disabled: { type: Boolean, default: false },
17
+ };
@@ -0,0 +1,15 @@
1
+ /**
2
+ * @description tag core
3
+ * @author 阿怪
4
+ * @date 2025/02/25 00:00
5
+ * @version v1.0.0
6
+ *
7
+ * 江湖的业务千篇一律,复杂的代码好几百行。
8
+ */
9
+ import { props } from './api';
10
+
11
+ export const TagCore = {
12
+ props,
13
+ };
14
+
15
+ export type { TagProps } from './props';
@@ -0,0 +1,51 @@
1
+ /**
2
+ * @description tag props type
3
+ * @author 阿怪
4
+ * @date 2026/2/27 00:00
5
+ * @version v1.1.0
6
+ *
7
+ * @name m-tag
8
+ * @docDescription Tag component.
9
+ * 标签组件。
10
+ * @docUrl https://shuimo.design/tag
11
+ *
12
+ * 江湖的业务千篇一律,复杂的代码好几百行。
13
+ */
14
+
15
+ import { KineSize } from '../../types/props';
16
+
17
+ export declare type TagProps = {
18
+ /**
19
+ * @description tag type
20
+ * 标签类型
21
+ * @type string
22
+ * @default default
23
+ * @enum default|primary|success|warning|danger|info
24
+ */
25
+ type?: 'default' | 'primary' | 'success' | 'warning' | 'danger' | 'info';
26
+ /**
27
+ * @description tag size
28
+ * 标签尺寸
29
+ * @type string
30
+ * @default medium
31
+ * @enum large|medium|small
32
+ */
33
+ size?: KineSize;
34
+ /**
35
+ * @description 是否显示关闭按钮
36
+ * @type boolean
37
+ * @default false
38
+ */
39
+ closable?: boolean;
40
+ /**
41
+ * @description 是否禁用
42
+ * @type boolean
43
+ * @default false
44
+ */
45
+ disabled?: boolean;
46
+ };
47
+
48
+ export declare type TagEmits = {
49
+ onClose?: (e: MouseEvent) => void;
50
+ onClick?: (e: MouseEvent) => void;
51
+ };
@@ -0,0 +1,124 @@
1
+ /**
2
+ * @description useTimePicker 测试
3
+ * @author 阿怪
4
+ * @date 2026/3/23
5
+ * @version v1.0.0
6
+ *
7
+ * 江湖的业务千篇一律,复杂的代码好几百行。
8
+ */
9
+ import { describe, expect, it } from 'vitest';
10
+ import { useTimePicker, generateColumn } from '../useTimePicker';
11
+
12
+ describe('generateColumn', () => {
13
+ it('生成 24 小时列', () => {
14
+ expect(generateColumn(24, 1)).toHaveLength(24);
15
+ });
16
+
17
+ it('生成 60 分钟列,步进 5', () => {
18
+ expect(generateColumn(60, 5)).toEqual([0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55]);
19
+ });
20
+
21
+ // step=0 会导致 for 循环条件 i += 0 永远不推进,造成死循环。
22
+ // 源码无守卫,此处跳过并记录风险,避免测试挂起。
23
+ it.skip('step=0 会导致死循环(源码未做守卫)', () => {
24
+ // generateColumn(24, 0) — 无限循环,不可执行
25
+ });
26
+ });
27
+
28
+ describe('useTimePicker', () => {
29
+ const defaultProps = {
30
+ modelValue: undefined as string | undefined,
31
+ showSeconds: true,
32
+ format: '',
33
+ placeholder: '请选择时间...',
34
+ hourStep: 1,
35
+ minuteStep: 1,
36
+ secondStep: 1,
37
+ };
38
+
39
+ it('初始化空值显示 placeholder', () => {
40
+ const tp = useTimePicker({ ...defaultProps });
41
+ expect(tp.displayValue.value).toBe('请选择时间...');
42
+ expect(tp.spanClass.value).toContain('m-time-picker-placeholder');
43
+ });
44
+
45
+ it('初始化有效时间正确解析', () => {
46
+ const tp = useTimePicker({ ...defaultProps, modelValue: '14:30:00' });
47
+ expect(tp.timeRef.value.hours).toBe(14);
48
+ expect(tp.timeRef.value.minutes).toBe(30);
49
+ expect(tp.timeRef.value.seconds).toBe(0);
50
+ expect(tp.displayValue.value).toBe('14:30:00');
51
+ });
52
+
53
+ it('解析 HH:mm 格式', () => {
54
+ const tp = useTimePicker({ ...defaultProps, modelValue: '08:15' });
55
+ expect(tp.timeRef.value.hours).toBe(8);
56
+ expect(tp.timeRef.value.minutes).toBe(15);
57
+ });
58
+
59
+ it('updateTimeRef 更新状态', () => {
60
+ const tp = useTimePicker({ ...defaultProps });
61
+ tp.updateTimeRef('22:45:30');
62
+
63
+ expect(tp.timeRef.value.hours).toBe(22);
64
+ expect(tp.timeRef.value.minutes).toBe(45);
65
+ expect(tp.timeRef.value.seconds).toBe(30);
66
+ });
67
+
68
+ it('updateTimeRef 空值恢复 placeholder', () => {
69
+ const tp = useTimePicker({ ...defaultProps, modelValue: '10:00:00' });
70
+ tp.updateTimeRef('');
71
+ expect(tp.displayValue.value).toBe('请选择时间...');
72
+ });
73
+
74
+ it('selectHour 更新小时并刷新显示', () => {
75
+ const tp = useTimePicker({ ...defaultProps, modelValue: '10:00:00' });
76
+ tp.selectHour(15);
77
+
78
+ expect(tp.timeRef.value.hours).toBe(15);
79
+ expect(tp.displayValue.value).toContain('15');
80
+ expect(tp.spanClass.value).not.toContain('m-time-picker-placeholder');
81
+ });
82
+
83
+ it('selectMinute 更新分钟', () => {
84
+ const tp = useTimePicker({ ...defaultProps, modelValue: '10:00:00' });
85
+ tp.selectMinute(30);
86
+ expect(tp.timeRef.value.minutes).toBe(30);
87
+ });
88
+
89
+ it('selectSecond 更新秒', () => {
90
+ const tp = useTimePicker({ ...defaultProps, modelValue: '10:00:00' });
91
+ tp.selectSecond(45);
92
+ expect(tp.timeRef.value.seconds).toBe(45);
93
+ });
94
+
95
+ it('getValue 返回格式化时间', () => {
96
+ const tp = useTimePicker({ ...defaultProps, modelValue: '10:30:45' });
97
+ expect(tp.getValue()).toBe('10:30:45');
98
+ });
99
+
100
+ it('showSeconds=false 时格式为 HH:mm', () => {
101
+ const tp = useTimePicker({ ...defaultProps, showSeconds: false, modelValue: '10:30:45' });
102
+ expect(tp.getValue()).toBe('10:30');
103
+ });
104
+
105
+ it('自定义 format', () => {
106
+ const tp = useTimePicker({ ...defaultProps, format: 'HH-mm-ss', modelValue: '10:30:45' });
107
+ expect(tp.displayValue.value).toBe('10-30-45');
108
+ });
109
+
110
+ it('hoursColumn 按 hourStep 生成', () => {
111
+ const tp = useTimePicker({ ...defaultProps, hourStep: 2 });
112
+ expect(tp.hoursColumn.value).toEqual([0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22]);
113
+ });
114
+
115
+ it('minutesColumn 按 minuteStep 生成', () => {
116
+ const tp = useTimePicker({ ...defaultProps, minuteStep: 15 });
117
+ expect(tp.minutesColumn.value).toEqual([0, 15, 30, 45]);
118
+ });
119
+
120
+ it('secondsColumn 按 secondStep 生成', () => {
121
+ const tp = useTimePicker({ ...defaultProps, secondStep: 30 });
122
+ expect(tp.secondsColumn.value).toEqual([0, 30]);
123
+ });
124
+ });
@@ -0,0 +1,24 @@
1
+ /**
2
+ * @description timePicker api
3
+ * @author 阿怪
4
+ * @date 2026/2/27
5
+ * @version v1.0.0
6
+ *
7
+ * 江湖的业务千篇一律,复杂的代码好几百行。
8
+ */
9
+ import { MCOPO, MPropType } from '../../types/props';
10
+ import { TimePickerProps } from './props';
11
+
12
+ export const props: MCOPO<TimePickerProps> = {
13
+ modelValue: { type: String, default: '' },
14
+ placeholder: { type: String, default: '请选择时间...' },
15
+ format: { type: String, default: undefined },
16
+ disabled: { type: Boolean, default: false },
17
+ showSeconds: { type: Boolean, default: true },
18
+ hourStep: { type: Number, default: 1 },
19
+ minuteStep: { type: Number, default: 1 },
20
+ secondStep: { type: Number, default: 1 },
21
+ readonly: { type: Boolean, default: false },
22
+ clearable: { type: Boolean, default: false },
23
+ size: { type: String as unknown as MPropType<NonNullable<TimePickerProps['size']>>, default: undefined },
24
+ };
@@ -0,0 +1,18 @@
1
+ /**
2
+ * @description timePicker core 导出
3
+ * @author 阿怪
4
+ * @date 2026/2/27
5
+ * @version v1.0.0
6
+ *
7
+ * 江湖的业务千篇一律,复杂的代码好几百行。
8
+ */
9
+ import { props } from './api';
10
+ import { useTimePicker } from './useTimePicker';
11
+
12
+ export const TimePickerCore = {
13
+ props,
14
+ useTimePicker,
15
+ };
16
+
17
+ export type { TimePickerProps, TimeRefType } from './props';
18
+ export { useTimePicker, generateColumn } from './useTimePicker';
@@ -0,0 +1,86 @@
1
+ /**
2
+ * @description timePicker props 类型定义
3
+ * @author 阿怪
4
+ * @date 2026/2/27
5
+ * @version v1.0.0
6
+ *
7
+ * 江湖的业务千篇一律,复杂的代码好几百行。
8
+ */
9
+
10
+ import { KineSize } from '../../types/props';
11
+
12
+ export declare type TimePickerProps = {
13
+ /**
14
+ * @description 时间值(字符串,如 "14:30:00")
15
+ * @type string
16
+ * @default ''
17
+ */
18
+ modelValue?: string;
19
+ /**
20
+ * @description 提示文字
21
+ * @type string
22
+ * @default '请选择时间...'
23
+ */
24
+ placeholder?: string;
25
+ /**
26
+ * @description 时间格式
27
+ * @type string
28
+ * @default 'HH:mm:ss'
29
+ */
30
+ format?: string;
31
+ /**
32
+ * @description 是否禁用
33
+ * @type boolean
34
+ * @default false
35
+ */
36
+ disabled?: boolean;
37
+ /**
38
+ * @description 是否显示秒列
39
+ * @type boolean
40
+ * @default true
41
+ */
42
+ showSeconds?: boolean;
43
+ /**
44
+ * @description 小时步长
45
+ * @type number
46
+ * @default 1
47
+ */
48
+ hourStep?: number;
49
+ /**
50
+ * @description 分钟步长
51
+ * @type number
52
+ * @default 1
53
+ */
54
+ minuteStep?: number;
55
+ /**
56
+ * @description 秒步长
57
+ * @type number
58
+ * @default 1
59
+ */
60
+ secondStep?: number;
61
+ /**
62
+ * @description 是否只读
63
+ * @type boolean
64
+ * @default false
65
+ */
66
+ readonly?: boolean;
67
+ /**
68
+ * @description whether to show clear button. 是否可清空
69
+ * @type boolean
70
+ * @default false
71
+ */
72
+ clearable?: boolean;
73
+ /**
74
+ * @description 尺寸
75
+ * @type KineSize
76
+ * @default undefined
77
+ */
78
+ size?: KineSize;
79
+ };
80
+
81
+ /** 时间内部引用 */
82
+ export type TimeRefType = {
83
+ hours: number;
84
+ minutes: number;
85
+ seconds: number;
86
+ };