@zuzjs/ui 0.7.7 → 0.7.9

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 (340) hide show
  1. package/dist/cjs/comps/Accordion/index.js +2 -1
  2. package/dist/cjs/comps/Actionbar/index.d.ts +1 -1
  3. package/dist/cjs/comps/Actionbar/index.js +3 -2
  4. package/dist/cjs/comps/Alert/index.d.ts +1 -1
  5. package/dist/cjs/comps/Alert/index.js +1 -0
  6. package/dist/cjs/comps/AutoComplete/index.js +1 -0
  7. package/dist/cjs/comps/Avatar/index.js +3 -2
  8. package/dist/cjs/comps/Box/index.d.ts +1 -2
  9. package/dist/cjs/comps/Box/index.js +15 -13
  10. package/dist/cjs/comps/Button/index.d.ts +2 -2
  11. package/dist/cjs/comps/Button/index.js +4 -3
  12. package/dist/cjs/comps/Button/types.d.ts +1 -1
  13. package/dist/cjs/comps/CheckBox/index.d.ts +2 -2
  14. package/dist/cjs/comps/CheckBox/index.js +2 -1
  15. package/dist/cjs/comps/ColorScheme/index.d.ts +3 -2
  16. package/dist/cjs/comps/ColorScheme/index.js +29 -9
  17. package/dist/cjs/comps/ColorScheme/types.d.ts +4 -0
  18. package/dist/cjs/comps/ColorScheme/types.js +1 -0
  19. package/dist/cjs/comps/ContextMenu/index.js +4 -4
  20. package/dist/cjs/comps/CookiesConsent/index.js +3 -2
  21. package/dist/cjs/comps/Cover/index.d.ts +1 -1
  22. package/dist/cjs/comps/Cover/index.js +3 -2
  23. package/dist/cjs/comps/Crumb/index.d.ts +4 -0
  24. package/dist/cjs/comps/Crumb/index.js +13 -0
  25. package/dist/cjs/comps/Crumb/types.d.ts +11 -0
  26. package/dist/cjs/comps/Crumb/types.js +1 -0
  27. package/dist/cjs/comps/Drawer/index.js +17 -15
  28. package/dist/cjs/comps/Editor/Timeline/index.js +4 -3
  29. package/dist/cjs/comps/Editor/index.js +2 -1
  30. package/dist/cjs/comps/Fab/index.d.ts +1 -2
  31. package/dist/cjs/comps/Fab/index.js +2 -1
  32. package/dist/cjs/comps/Filters/index.d.ts +4 -1
  33. package/dist/cjs/comps/Filters/index.js +1 -0
  34. package/dist/cjs/comps/Form/index.d.ts +3 -59
  35. package/dist/cjs/comps/Form/index.js +5 -7
  36. package/dist/cjs/comps/Form/types.d.ts +43 -0
  37. package/dist/cjs/comps/Form/types.js +1 -0
  38. package/dist/cjs/comps/Icon/index.d.ts +1 -1
  39. package/dist/cjs/comps/Icon/index.js +2 -2
  40. package/dist/cjs/comps/Image/index.js +1 -1
  41. package/dist/cjs/comps/Input/index.js +1 -0
  42. package/dist/cjs/comps/KeyboardKeys/index.d.ts +8 -0
  43. package/dist/cjs/comps/KeyboardKeys/index.js +33 -0
  44. package/dist/cjs/comps/KeyboardKeys/types.d.ts +13 -0
  45. package/dist/cjs/comps/KeyboardKeys/types.js +51 -0
  46. package/dist/cjs/comps/Label/index.js +1 -1
  47. package/dist/cjs/comps/List/index.d.ts +4 -1
  48. package/dist/cjs/comps/List/index.js +5 -4
  49. package/dist/cjs/comps/List/item.d.ts +6 -3
  50. package/dist/cjs/comps/List/item.js +6 -1
  51. package/dist/cjs/comps/List/types.d.ts +4 -1
  52. package/dist/cjs/comps/Network/index.js +6 -7
  53. package/dist/cjs/comps/Overlay/index.js +2 -1
  54. package/dist/cjs/comps/Pagination/index.js +3 -2
  55. package/dist/cjs/comps/Password/index.js +2 -1
  56. package/dist/cjs/comps/PinInput/index.js +2 -1
  57. package/dist/cjs/comps/ProgressBar/index.js +1 -0
  58. package/dist/cjs/comps/Radio/index.js +1 -0
  59. package/dist/cjs/comps/ScrollView/index.d.ts +5 -0
  60. package/dist/cjs/comps/ScrollView/index.js +13 -0
  61. package/dist/cjs/comps/ScrollView/types.d.ts +6 -0
  62. package/dist/cjs/comps/ScrollView/types.js +1 -0
  63. package/dist/cjs/comps/Search/index.d.ts +7 -10
  64. package/dist/cjs/comps/Search/index.js +12 -7
  65. package/dist/cjs/comps/Search/types.d.ts +12 -0
  66. package/dist/cjs/comps/Search/types.js +1 -0
  67. package/dist/cjs/comps/Segmented/index.d.ts +3 -2
  68. package/dist/cjs/comps/Segmented/index.js +6 -5
  69. package/dist/cjs/comps/Segmented/item.d.ts +4 -1
  70. package/dist/cjs/comps/Segmented/item.js +16 -14
  71. package/dist/cjs/comps/Segmented/types.d.ts +5 -1
  72. package/dist/cjs/comps/Select/index.d.ts +2 -4
  73. package/dist/cjs/comps/Select/index.js +4 -3
  74. package/dist/cjs/comps/Select/optionItem.d.ts +4 -1
  75. package/dist/cjs/comps/Select/optionItem.js +1 -0
  76. package/dist/cjs/comps/Select/types.d.ts +1 -1
  77. package/dist/cjs/comps/Sheet/index.d.ts +1 -1
  78. package/dist/cjs/comps/Sheet/index.js +12 -8
  79. package/dist/cjs/comps/Sidebar/index.js +1 -0
  80. package/dist/cjs/comps/Slider/index.d.ts +1 -1
  81. package/dist/cjs/comps/Slider/index.js +3 -2
  82. package/dist/cjs/comps/Span/index.js +1 -0
  83. package/dist/cjs/comps/Spinner/index.d.ts +1 -1
  84. package/dist/cjs/comps/Spinner/index.js +4 -7
  85. package/dist/cjs/comps/Switch/index.d.ts +1 -1
  86. package/dist/cjs/comps/Switch/index.js +2 -1
  87. package/dist/cjs/comps/TabView/body.js +1 -0
  88. package/dist/cjs/comps/TabView/index.d.ts +1 -1
  89. package/dist/cjs/comps/TabView/index.js +1 -0
  90. package/dist/cjs/comps/TabView/tab.d.ts +4 -1
  91. package/dist/cjs/comps/TabView/tab.js +1 -0
  92. package/dist/cjs/comps/TabView/types.d.ts +2 -2
  93. package/dist/cjs/comps/Table/col.d.ts +9 -6
  94. package/dist/cjs/comps/Table/col.js +1 -0
  95. package/dist/cjs/comps/Table/index.js +13 -5
  96. package/dist/cjs/comps/Table/row.d.ts +4 -1
  97. package/dist/cjs/comps/Table/row.js +5 -3
  98. package/dist/cjs/comps/Table/types.d.ts +88 -1
  99. package/dist/cjs/comps/Text/index.d.ts +2 -0
  100. package/dist/cjs/comps/Text/index.js +4 -2
  101. package/dist/cjs/comps/TextArea/index.d.ts +2 -0
  102. package/dist/cjs/comps/TextArea/index.js +3 -3
  103. package/dist/cjs/comps/TextWheel/index.js +1 -0
  104. package/dist/cjs/comps/Tooltip/index.d.ts +1 -2
  105. package/dist/cjs/comps/Tooltip/index.js +2 -1
  106. package/dist/cjs/comps/Treeview/index.d.ts +1 -2
  107. package/dist/cjs/comps/Treeview/index.js +3 -1
  108. package/dist/cjs/comps/Treeview/item.d.ts +3 -2
  109. package/dist/cjs/comps/Treeview/item.js +12 -7
  110. package/dist/cjs/comps/Treeview/types.d.ts +6 -2
  111. package/dist/cjs/comps/VideoPlayer/index.d.ts +2 -0
  112. package/dist/cjs/comps/VideoPlayer/index.js +7 -0
  113. package/dist/cjs/comps/index.d.ts +26 -18
  114. package/dist/cjs/comps/index.js +8 -0
  115. package/dist/cjs/funs/css.d.ts +3 -3
  116. package/dist/cjs/funs/css.js +20 -18
  117. package/dist/cjs/funs/index.d.ts +3 -1
  118. package/dist/cjs/funs/index.js +14 -3
  119. package/dist/cjs/funs/stylesheet.js +5 -0
  120. package/dist/cjs/hooks/index.d.ts +15 -9
  121. package/dist/cjs/hooks/index.js +14 -7
  122. package/dist/cjs/hooks/useAnchorPosition.d.ts +1 -2
  123. package/dist/cjs/hooks/useAnchorPosition.js +1 -0
  124. package/dist/cjs/hooks/useBase.js +27 -13
  125. package/dist/cjs/hooks/useCalendar.js +1 -0
  126. package/dist/cjs/hooks/useColorScheme.js +2 -2
  127. package/dist/cjs/hooks/useContextMenu.js +1 -0
  128. package/dist/cjs/hooks/useDB.js +1 -0
  129. package/dist/cjs/hooks/useDebounce.js +2 -1
  130. package/dist/cjs/hooks/useDelayed.d.ts +17 -0
  131. package/dist/cjs/hooks/useDelayed.js +26 -0
  132. package/dist/cjs/hooks/useDevice.js +1 -0
  133. package/dist/cjs/hooks/useDimensions.js +2 -1
  134. package/dist/cjs/hooks/useDom.d.ts +2 -0
  135. package/dist/cjs/hooks/useDom.js +3 -0
  136. package/dist/cjs/hooks/useDomMutation.d.ts +3 -0
  137. package/dist/cjs/hooks/useDomMutation.js +19 -0
  138. package/dist/cjs/hooks/useDrag.js +2 -1
  139. package/dist/cjs/hooks/useFileManager.d.ts +2 -0
  140. package/dist/cjs/hooks/useFileManager.js +3 -0
  141. package/dist/cjs/hooks/useImage.js +1 -0
  142. package/dist/cjs/hooks/useIntersectionObserver.js +2 -1
  143. package/dist/cjs/hooks/useMediaPlayer.d.ts +32 -0
  144. package/dist/cjs/hooks/useMediaPlayer.js +86 -0
  145. package/dist/cjs/hooks/useMergedRefs.d.ts +2 -0
  146. package/dist/cjs/hooks/useMergedRefs.js +14 -0
  147. package/dist/cjs/hooks/useMutationObserver.d.ts +3 -0
  148. package/dist/cjs/hooks/useMutationObserver.js +20 -0
  149. package/dist/cjs/hooks/useNetworkStatus.js +2 -1
  150. package/dist/cjs/hooks/usePlayer.d.ts +32 -0
  151. package/dist/cjs/hooks/usePlayer.js +85 -0
  152. package/dist/cjs/hooks/useResizeObserver.js +2 -1
  153. package/dist/cjs/hooks/useScrollbar.d.ts +16 -0
  154. package/dist/cjs/hooks/useScrollbar.js +160 -0
  155. package/dist/cjs/hooks/useSheet.js +1 -0
  156. package/dist/cjs/hooks/useShortcuts.d.ts +7 -0
  157. package/dist/cjs/hooks/useShortcuts.js +29 -0
  158. package/dist/cjs/hooks/useSlider.d.ts +7 -0
  159. package/dist/cjs/hooks/useSlider.js +23 -0
  160. package/dist/cjs/hooks/useTruncateText.d.ts +2 -0
  161. package/dist/cjs/hooks/useTruncateText.js +17 -0
  162. package/dist/cjs/hooks/useViewTransition.d.ts +2 -0
  163. package/dist/cjs/hooks/useViewTransition.js +13 -0
  164. package/dist/cjs/index.js +1 -0
  165. package/dist/cjs/types/enums.d.ts +1 -0
  166. package/dist/cjs/types/enums.js +1 -0
  167. package/dist/cjs/types/index.d.ts +2 -1
  168. package/dist/cjs/types/interfaces.d.ts +2 -0
  169. package/dist/css/styles.css +1 -1
  170. package/dist/esm/comps/Accordion/index.js +2 -1
  171. package/dist/esm/comps/Actionbar/index.d.ts +1 -1
  172. package/dist/esm/comps/Actionbar/index.js +3 -2
  173. package/dist/esm/comps/Alert/index.d.ts +1 -1
  174. package/dist/esm/comps/Alert/index.js +1 -0
  175. package/dist/esm/comps/AutoComplete/index.js +1 -0
  176. package/dist/esm/comps/Avatar/index.js +3 -2
  177. package/dist/esm/comps/Box/index.d.ts +1 -2
  178. package/dist/esm/comps/Box/index.js +15 -13
  179. package/dist/esm/comps/Button/index.d.ts +2 -2
  180. package/dist/esm/comps/Button/index.js +4 -3
  181. package/dist/esm/comps/Button/types.d.ts +1 -1
  182. package/dist/esm/comps/CheckBox/index.d.ts +2 -2
  183. package/dist/esm/comps/CheckBox/index.js +2 -1
  184. package/dist/esm/comps/ColorScheme/index.d.ts +3 -2
  185. package/dist/esm/comps/ColorScheme/index.js +29 -9
  186. package/dist/esm/comps/ColorScheme/types.d.ts +4 -0
  187. package/dist/esm/comps/ColorScheme/types.js +1 -0
  188. package/dist/esm/comps/ContextMenu/index.js +4 -4
  189. package/dist/esm/comps/CookiesConsent/index.js +3 -2
  190. package/dist/esm/comps/Cover/index.d.ts +1 -1
  191. package/dist/esm/comps/Cover/index.js +3 -2
  192. package/dist/esm/comps/Crumb/index.d.ts +4 -0
  193. package/dist/esm/comps/Crumb/index.js +13 -0
  194. package/dist/esm/comps/Crumb/types.d.ts +11 -0
  195. package/dist/esm/comps/Crumb/types.js +1 -0
  196. package/dist/esm/comps/Drawer/index.js +17 -15
  197. package/dist/esm/comps/Editor/Timeline/index.js +4 -3
  198. package/dist/esm/comps/Editor/index.js +2 -1
  199. package/dist/esm/comps/Fab/index.d.ts +1 -2
  200. package/dist/esm/comps/Fab/index.js +2 -1
  201. package/dist/esm/comps/Filters/index.d.ts +4 -1
  202. package/dist/esm/comps/Filters/index.js +1 -0
  203. package/dist/esm/comps/Form/index.d.ts +3 -59
  204. package/dist/esm/comps/Form/index.js +5 -7
  205. package/dist/esm/comps/Form/types.d.ts +43 -0
  206. package/dist/esm/comps/Form/types.js +1 -0
  207. package/dist/esm/comps/Icon/index.d.ts +1 -1
  208. package/dist/esm/comps/Icon/index.js +2 -2
  209. package/dist/esm/comps/Image/index.js +1 -1
  210. package/dist/esm/comps/Input/index.js +1 -0
  211. package/dist/esm/comps/KeyboardKeys/index.d.ts +8 -0
  212. package/dist/esm/comps/KeyboardKeys/index.js +33 -0
  213. package/dist/esm/comps/KeyboardKeys/types.d.ts +13 -0
  214. package/dist/esm/comps/KeyboardKeys/types.js +51 -0
  215. package/dist/esm/comps/Label/index.js +1 -1
  216. package/dist/esm/comps/List/index.d.ts +4 -1
  217. package/dist/esm/comps/List/index.js +5 -4
  218. package/dist/esm/comps/List/item.d.ts +6 -3
  219. package/dist/esm/comps/List/item.js +6 -1
  220. package/dist/esm/comps/List/types.d.ts +4 -1
  221. package/dist/esm/comps/Network/index.js +6 -7
  222. package/dist/esm/comps/Overlay/index.js +2 -1
  223. package/dist/esm/comps/Pagination/index.js +3 -2
  224. package/dist/esm/comps/Password/index.js +2 -1
  225. package/dist/esm/comps/PinInput/index.js +2 -1
  226. package/dist/esm/comps/ProgressBar/index.js +1 -0
  227. package/dist/esm/comps/Radio/index.js +1 -0
  228. package/dist/esm/comps/ScrollView/index.d.ts +5 -0
  229. package/dist/esm/comps/ScrollView/index.js +13 -0
  230. package/dist/esm/comps/ScrollView/types.d.ts +6 -0
  231. package/dist/esm/comps/ScrollView/types.js +1 -0
  232. package/dist/esm/comps/Search/index.d.ts +7 -10
  233. package/dist/esm/comps/Search/index.js +12 -7
  234. package/dist/esm/comps/Search/types.d.ts +12 -0
  235. package/dist/esm/comps/Search/types.js +1 -0
  236. package/dist/esm/comps/Segmented/index.d.ts +3 -2
  237. package/dist/esm/comps/Segmented/index.js +6 -5
  238. package/dist/esm/comps/Segmented/item.d.ts +4 -1
  239. package/dist/esm/comps/Segmented/item.js +16 -14
  240. package/dist/esm/comps/Segmented/types.d.ts +5 -1
  241. package/dist/esm/comps/Select/index.d.ts +2 -4
  242. package/dist/esm/comps/Select/index.js +4 -3
  243. package/dist/esm/comps/Select/optionItem.d.ts +4 -1
  244. package/dist/esm/comps/Select/optionItem.js +1 -0
  245. package/dist/esm/comps/Select/types.d.ts +1 -1
  246. package/dist/esm/comps/Sheet/index.d.ts +1 -1
  247. package/dist/esm/comps/Sheet/index.js +12 -8
  248. package/dist/esm/comps/Sidebar/index.js +1 -0
  249. package/dist/esm/comps/Slider/index.d.ts +1 -1
  250. package/dist/esm/comps/Slider/index.js +3 -2
  251. package/dist/esm/comps/Span/index.js +1 -0
  252. package/dist/esm/comps/Spinner/index.d.ts +1 -1
  253. package/dist/esm/comps/Spinner/index.js +4 -7
  254. package/dist/esm/comps/Switch/index.d.ts +1 -1
  255. package/dist/esm/comps/Switch/index.js +2 -1
  256. package/dist/esm/comps/TabView/body.js +1 -0
  257. package/dist/esm/comps/TabView/index.d.ts +1 -1
  258. package/dist/esm/comps/TabView/index.js +1 -0
  259. package/dist/esm/comps/TabView/tab.d.ts +4 -1
  260. package/dist/esm/comps/TabView/tab.js +1 -0
  261. package/dist/esm/comps/TabView/types.d.ts +2 -2
  262. package/dist/esm/comps/Table/col.d.ts +9 -6
  263. package/dist/esm/comps/Table/col.js +1 -0
  264. package/dist/esm/comps/Table/index.js +13 -5
  265. package/dist/esm/comps/Table/row.d.ts +4 -1
  266. package/dist/esm/comps/Table/row.js +5 -3
  267. package/dist/esm/comps/Table/types.d.ts +88 -1
  268. package/dist/esm/comps/Text/index.d.ts +2 -0
  269. package/dist/esm/comps/Text/index.js +4 -2
  270. package/dist/esm/comps/TextArea/index.d.ts +2 -0
  271. package/dist/esm/comps/TextArea/index.js +3 -3
  272. package/dist/esm/comps/TextWheel/index.js +1 -0
  273. package/dist/esm/comps/Tooltip/index.d.ts +1 -2
  274. package/dist/esm/comps/Tooltip/index.js +2 -1
  275. package/dist/esm/comps/Treeview/index.d.ts +1 -2
  276. package/dist/esm/comps/Treeview/index.js +3 -1
  277. package/dist/esm/comps/Treeview/item.d.ts +3 -2
  278. package/dist/esm/comps/Treeview/item.js +12 -7
  279. package/dist/esm/comps/Treeview/types.d.ts +6 -2
  280. package/dist/esm/comps/VideoPlayer/index.d.ts +2 -0
  281. package/dist/esm/comps/VideoPlayer/index.js +7 -0
  282. package/dist/esm/comps/index.d.ts +26 -18
  283. package/dist/esm/comps/index.js +8 -0
  284. package/dist/esm/funs/css.d.ts +3 -3
  285. package/dist/esm/funs/css.js +20 -18
  286. package/dist/esm/funs/index.d.ts +3 -1
  287. package/dist/esm/funs/index.js +14 -3
  288. package/dist/esm/funs/stylesheet.js +5 -0
  289. package/dist/esm/hooks/index.d.ts +15 -9
  290. package/dist/esm/hooks/index.js +14 -7
  291. package/dist/esm/hooks/useAnchorPosition.d.ts +1 -2
  292. package/dist/esm/hooks/useAnchorPosition.js +1 -0
  293. package/dist/esm/hooks/useBase.js +27 -13
  294. package/dist/esm/hooks/useCalendar.js +1 -0
  295. package/dist/esm/hooks/useColorScheme.js +2 -2
  296. package/dist/esm/hooks/useContextMenu.js +1 -0
  297. package/dist/esm/hooks/useDB.js +1 -0
  298. package/dist/esm/hooks/useDebounce.js +2 -1
  299. package/dist/esm/hooks/useDelayed.d.ts +17 -0
  300. package/dist/esm/hooks/useDelayed.js +26 -0
  301. package/dist/esm/hooks/useDevice.js +1 -0
  302. package/dist/esm/hooks/useDimensions.js +2 -1
  303. package/dist/esm/hooks/useDom.d.ts +2 -0
  304. package/dist/esm/hooks/useDom.js +3 -0
  305. package/dist/esm/hooks/useDomMutation.d.ts +3 -0
  306. package/dist/esm/hooks/useDomMutation.js +19 -0
  307. package/dist/esm/hooks/useDrag.js +2 -1
  308. package/dist/esm/hooks/useFileManager.d.ts +2 -0
  309. package/dist/esm/hooks/useFileManager.js +3 -0
  310. package/dist/esm/hooks/useImage.js +1 -0
  311. package/dist/esm/hooks/useIntersectionObserver.js +2 -1
  312. package/dist/esm/hooks/useMediaPlayer.d.ts +32 -0
  313. package/dist/esm/hooks/useMediaPlayer.js +86 -0
  314. package/dist/esm/hooks/useMergedRefs.d.ts +2 -0
  315. package/dist/esm/hooks/useMergedRefs.js +14 -0
  316. package/dist/esm/hooks/useMutationObserver.d.ts +3 -0
  317. package/dist/esm/hooks/useMutationObserver.js +20 -0
  318. package/dist/esm/hooks/useNetworkStatus.js +2 -1
  319. package/dist/esm/hooks/usePlayer.d.ts +32 -0
  320. package/dist/esm/hooks/usePlayer.js +85 -0
  321. package/dist/esm/hooks/useResizeObserver.js +2 -1
  322. package/dist/esm/hooks/useScrollbar.d.ts +16 -0
  323. package/dist/esm/hooks/useScrollbar.js +160 -0
  324. package/dist/esm/hooks/useSheet.js +1 -0
  325. package/dist/esm/hooks/useShortcuts.d.ts +7 -0
  326. package/dist/esm/hooks/useShortcuts.js +29 -0
  327. package/dist/esm/hooks/useSlider.d.ts +7 -0
  328. package/dist/esm/hooks/useSlider.js +23 -0
  329. package/dist/esm/hooks/useTruncateText.d.ts +2 -0
  330. package/dist/esm/hooks/useTruncateText.js +17 -0
  331. package/dist/esm/hooks/useViewTransition.d.ts +2 -0
  332. package/dist/esm/hooks/useViewTransition.js +13 -0
  333. package/dist/esm/index.js +1 -0
  334. package/dist/esm/types/enums.d.ts +1 -0
  335. package/dist/esm/types/enums.js +1 -0
  336. package/dist/esm/types/index.d.ts +2 -1
  337. package/dist/esm/types/interfaces.d.ts +2 -0
  338. package/dist/tsconfig.esm.tsbuildinfo +1 -1
  339. package/dist/tsconfig.tsbuildinfo +1 -1
  340. package/package.json +1 -1
@@ -0,0 +1,160 @@
1
+ "use client";
2
+ import { useCallback, useEffect, useRef } from "react";
3
+ import { useMutationObserver } from "..";
4
+ const useScrollbar = (breakpoints = {}) => {
5
+ const rootRef = useRef(null);
6
+ const containerRef = useRef(null);
7
+ const thumbY = useRef(null);
8
+ const thumbX = useRef(null);
9
+ const isDraggingY = useRef(false);
10
+ const isDraggingX = useRef(false);
11
+ const dragStartX = useRef(0);
12
+ const dragStartY = useRef(0);
13
+ const scrollStartY = useRef(0);
14
+ const scrollStartX = useRef(0);
15
+ const thumbHeight = useRef(30); // Default min height
16
+ const thumbWidth = useRef(30); // Default min height
17
+ const updateThumb = useCallback(() => {
18
+ if (!containerRef.current || !thumbY.current || !thumbX.current)
19
+ return;
20
+ const { clientHeight, scrollHeight, scrollTop, clientWidth, scrollWidth, scrollLeft } = containerRef.current;
21
+ //Y thumb
22
+ const thumbSizeY = Math.max((clientHeight / scrollHeight) * clientHeight, 30); // Min thumb size: 30px
23
+ thumbHeight.current = thumbSizeY;
24
+ const thumbPosY = (scrollTop / (scrollHeight - clientHeight)) * (clientHeight - thumbSizeY);
25
+ thumbY.current.style.height = `${thumbSizeY}px`;
26
+ thumbY.current.style.top = `${thumbPosY}px`;
27
+ //X thumb
28
+ const thumbSizeX = Math.max((clientWidth / scrollWidth) * clientWidth, 30); // Min thumb size: 30px
29
+ thumbWidth.current = thumbSizeX;
30
+ const thumbPosX = (scrollLeft / (scrollWidth - clientWidth)) * (clientWidth - thumbSizeX);
31
+ thumbX.current.style.width = `${thumbSizeX}px`;
32
+ thumbX.current.style.left = `${thumbPosX}px`;
33
+ if (thumbY.current.clientHeight == clientHeight && rootRef) {
34
+ rootRef.current?.classList.add(`--no-y`);
35
+ }
36
+ else
37
+ rootRef.current?.classList.remove(`--no-y`);
38
+ if (thumbX.current.clientWidth == clientWidth && rootRef) {
39
+ rootRef.current?.classList.add(`--no-x`);
40
+ }
41
+ else
42
+ rootRef.current?.classList.remove(`--no-x`);
43
+ }, []);
44
+ const postScroll = (scrollPercentY) => {
45
+ updateThumb();
46
+ // Trigger breakpoints
47
+ Object.keys(breakpoints).forEach((key) => {
48
+ const breakpoint = parseFloat(key);
49
+ if (Math.abs(scrollPercentY - breakpoint) < 1) {
50
+ breakpoints[breakpoint]?.();
51
+ }
52
+ });
53
+ };
54
+ const handleScroll = useCallback(() => {
55
+ if (!containerRef.current)
56
+ return;
57
+ const { scrollTop, scrollHeight, clientHeight, scrollLeft, scrollWidth, clientWidth } = containerRef.current;
58
+ const scrollPercentY = (scrollTop / (scrollHeight - clientHeight)) * 100;
59
+ const scrollPercentX = (scrollLeft / (scrollWidth - clientWidth)) * 100;
60
+ postScroll(scrollPercentY);
61
+ postScroll(scrollPercentX);
62
+ }, [breakpoints, updateThumb]);
63
+ // Dragging logic
64
+ const onScrollY = (e) => {
65
+ isDraggingY.current = true;
66
+ dragStartY.current = e.clientY;
67
+ scrollStartY.current = containerRef.current?.scrollTop || 0;
68
+ document.body.style.userSelect = "none";
69
+ if (rootRef.current)
70
+ rootRef.current?.classList.add(`--scrolling`);
71
+ };
72
+ const onScrollX = (e) => {
73
+ isDraggingX.current = true;
74
+ dragStartX.current = e.clientX;
75
+ scrollStartX.current = containerRef.current?.scrollLeft || 0;
76
+ document.body.style.userSelect = "none";
77
+ if (rootRef.current)
78
+ rootRef.current?.classList.add(`--scrolling`);
79
+ };
80
+ const handleDragMove = useCallback((e) => {
81
+ if (!containerRef.current || !thumbY.current || !thumbX.current)
82
+ return;
83
+ const { clientHeight, scrollHeight, clientWidth, scrollWidth } = containerRef.current;
84
+ if (isDraggingY.current) {
85
+ const maxScroll = scrollHeight - clientHeight;
86
+ const maxThumbMove = clientHeight - thumbHeight.current;
87
+ const deltaY = e.clientY - dragStartY.current;
88
+ const newScrollTop = Math.min(Math.max(scrollStartY.current + (deltaY / maxThumbMove) * maxScroll, 0), maxScroll);
89
+ containerRef.current.scrollTop = newScrollTop;
90
+ }
91
+ if (isDraggingX.current) {
92
+ const maxScrollX = scrollWidth - clientWidth;
93
+ const maxThumbMoveX = clientWidth - thumbWidth.current;
94
+ const deltaX = e.clientX - dragStartX.current;
95
+ const newScrollLeft = Math.min(Math.max(scrollStartX.current + (deltaX / maxThumbMoveX) * maxScrollX, 0), maxScrollX);
96
+ containerRef.current.scrollLeft = newScrollLeft;
97
+ }
98
+ }, []);
99
+ const handleDragEnd = () => {
100
+ isDraggingY.current = false;
101
+ isDraggingX.current = false;
102
+ document.body.style.userSelect = "";
103
+ if (rootRef.current)
104
+ rootRef.current?.classList.remove(`--scrolling`);
105
+ };
106
+ const scrollToTop = () => containerRef.current?.scrollTo({ top: 0, behavior: "smooth" });
107
+ const scrollToBottom = () => containerRef.current?.scrollTo({ top: containerRef.current.scrollHeight, behavior: "smooth" });
108
+ const scrollToLeft = () => containerRef.current?.scrollTo({ left: 0, behavior: "smooth" });
109
+ const scrollToRight = () => containerRef.current?.scrollTo({ left: containerRef.current.scrollWidth, behavior: "smooth" });
110
+ useEffect(() => {
111
+ const container = containerRef.current;
112
+ if (!container)
113
+ return;
114
+ const handleWheel = (e) => {
115
+ e.preventDefault();
116
+ e.stopPropagation();
117
+ if (!containerRef.current)
118
+ return;
119
+ // Adjust scrollTop manually based on deltaY
120
+ const { scrollTop, scrollHeight, clientHeight, scrollLeft, scrollWidth, clientWidth } = containerRef.current;
121
+ if (Math.abs(e.deltaY) > Math.abs(e.deltaX)) {
122
+ const maxScrollY = scrollHeight - clientHeight;
123
+ let newScrollTop = scrollTop + e.deltaY;
124
+ newScrollTop = Math.max(0, Math.min(newScrollTop, maxScrollY));
125
+ containerRef.current.scrollTop = newScrollTop;
126
+ }
127
+ if (Math.abs(e.deltaX) > Math.abs(e.deltaY)) {
128
+ const maxScrollX = scrollWidth - clientWidth;
129
+ let newScrollLeft = scrollLeft + e.deltaX;
130
+ newScrollLeft = Math.max(0, Math.min(newScrollLeft, maxScrollX));
131
+ containerRef.current.scrollLeft = newScrollLeft;
132
+ }
133
+ const scrollPercentY = (containerRef.current.scrollTop / (containerRef.current.scrollHeight - clientHeight)) * 100;
134
+ const scrollPercentX = (containerRef.current.scrollLeft / (containerRef.current.scrollWidth - clientWidth)) * 100;
135
+ postScroll(scrollPercentY);
136
+ postScroll(scrollPercentX);
137
+ };
138
+ window.addEventListener("resize", updateThumb);
139
+ container.addEventListener("scroll", handleScroll);
140
+ // Prevent blocking default scrolling (fixes touchpad scrolling)
141
+ container.addEventListener("wheel", handleWheel, { passive: false });
142
+ document.addEventListener("mousemove", handleDragMove);
143
+ document.addEventListener("mouseup", handleDragEnd);
144
+ updateThumb();
145
+ return () => {
146
+ window.removeEventListener("resize", updateThumb);
147
+ window.removeEventListener("wheel", handleWheel);
148
+ container.removeEventListener("scroll", handleScroll);
149
+ document.removeEventListener("mousemove", handleDragMove);
150
+ document.removeEventListener("mouseup", handleDragEnd);
151
+ };
152
+ }, [handleScroll, handleDragMove, updateThumb]);
153
+ useMutationObserver(containerRef.current, updateThumb);
154
+ return {
155
+ rootRef, containerRef, thumbY, thumbX,
156
+ scrollToTop, scrollToBottom, scrollToLeft, scrollToRight,
157
+ onScrollY, onScrollX
158
+ };
159
+ };
160
+ export default useScrollbar;
@@ -1,3 +1,4 @@
1
+ "use client";
1
2
  import { useEffect } from "react";
2
3
  const useSheet = (sheet) => {
3
4
  const show = (e) => {
@@ -0,0 +1,7 @@
1
+ import { KeyCode } from "../types/enums";
2
+ export type Shortcut = {
3
+ keys: KeyCode[];
4
+ callback: (event: KeyboardEvent) => void;
5
+ };
6
+ declare const useShortcuts: (shortcuts: Shortcut[], preventDefault?: boolean) => void;
7
+ export default useShortcuts;
@@ -0,0 +1,29 @@
1
+ "use client";
2
+ import { useEffect } from "react";
3
+ import { KeyCode } from "../types/enums";
4
+ const useShortcuts = (shortcuts, preventDefault) => {
5
+ useEffect(() => {
6
+ const handleKeyDown = (event) => {
7
+ const pressedKeys = [];
8
+ if (event.ctrlKey)
9
+ pressedKeys.push(KeyCode.Ctrl);
10
+ if (event.shiftKey)
11
+ pressedKeys.push(KeyCode.Shift);
12
+ if (event.altKey)
13
+ pressedKeys.push(KeyCode.Alt);
14
+ if (event.metaKey)
15
+ pressedKeys.push(KeyCode.PauseBreak); // Meta key (Cmd on Mac)
16
+ pressedKeys.push(event.keyCode); // Convert event key to KeyCode enum
17
+ shortcuts.forEach(({ keys, callback }) => {
18
+ if (keys.every(key => pressedKeys.includes(key))) {
19
+ if (preventDefault ?? true)
20
+ event.preventDefault();
21
+ callback(event);
22
+ }
23
+ });
24
+ };
25
+ window.addEventListener("keydown", handleKeyDown);
26
+ return () => window.removeEventListener("keydown", handleKeyDown);
27
+ }, [shortcuts, preventDefault]);
28
+ };
29
+ export default useShortcuts;
@@ -0,0 +1,7 @@
1
+ declare const useSlider: () => {
2
+ push: (key: string) => void;
3
+ goBack: () => void;
4
+ prevKey: string | null;
5
+ direction: "right" | "left";
6
+ };
7
+ export default useSlider;
@@ -0,0 +1,23 @@
1
+ "use client";
2
+ import { useState } from "react";
3
+ import { useViewTransition } from "..";
4
+ const useSlider = () => {
5
+ const [history, setHistory] = useState(["root"]);
6
+ const [prevKey, setPrevKey] = useState(null);
7
+ const [direction, setDirection] = useState("left");
8
+ const startTransition = useViewTransition();
9
+ const push = (key) => {
10
+ setDirection("left");
11
+ setPrevKey(history[history.length - 1]);
12
+ startTransition(() => setHistory((prev) => [...prev, key]));
13
+ };
14
+ const goBack = () => {
15
+ if (history.length <= 1)
16
+ return;
17
+ setDirection("right");
18
+ setPrevKey(history[history.length - 1]);
19
+ startTransition(() => setHistory((prev) => prev.slice(0, -1)));
20
+ };
21
+ return { push, goBack, prevKey, direction };
22
+ };
23
+ export default useSlider;
@@ -0,0 +1,2 @@
1
+ declare const useTruncateText: (lines: number) => import("react").RefObject<HTMLDivElement | null>;
2
+ export default useTruncateText;
@@ -0,0 +1,17 @@
1
+ "use client";
2
+ import { useEffect, useRef } from "react";
3
+ const useTruncateText = (lines) => {
4
+ const ref = useRef(null);
5
+ useEffect(() => {
6
+ if (!ref.current)
7
+ return;
8
+ const el = ref.current;
9
+ const lineHeight = parseFloat(getComputedStyle(el).lineHeight);
10
+ const maxHeight = lineHeight * lines;
11
+ while (el.scrollHeight > maxHeight) {
12
+ el.textContent = el.textContent?.trim().slice(0, -1) + "…";
13
+ }
14
+ }, [lines]);
15
+ return ref;
16
+ };
17
+ export default useTruncateText;
@@ -0,0 +1,2 @@
1
+ declare const useViewTransition: () => (callback: () => void) => void;
2
+ export default useViewTransition;
@@ -0,0 +1,13 @@
1
+ import { useCallback } from "react";
2
+ const useViewTransition = () => {
3
+ const startTransition = useCallback((callback) => {
4
+ if (document.startViewTransition) {
5
+ document.startViewTransition(callback);
6
+ }
7
+ else {
8
+ callback(); // Fallback for browsers without View Transitions
9
+ }
10
+ }, []);
11
+ return startTransition;
12
+ };
13
+ export default useViewTransition;
package/dist/cjs/index.js CHANGED
@@ -1,3 +1,4 @@
1
+ String.prototype.trim = function () { return this.replace(/^\s+|\s+$/g, '').replace(/\s+/g, ' '); };
1
2
  export * from "./comps";
2
3
  export { withCSS as css } from "./funs";
3
4
  export * from "./funs";
@@ -104,6 +104,7 @@ export declare enum KeyCode {
104
104
  Ctrl = 17,
105
105
  Alt = 18,
106
106
  PauseBreak = 19,
107
+ Command = 19,
107
108
  CapsLock = 20,
108
109
  Escape = 27,
109
110
  Space = 32,
@@ -138,6 +138,7 @@ export var KeyCode;
138
138
  KeyCode[KeyCode["Ctrl"] = 17] = "Ctrl";
139
139
  KeyCode[KeyCode["Alt"] = 18] = "Alt";
140
140
  KeyCode[KeyCode["PauseBreak"] = 19] = "PauseBreak";
141
+ KeyCode[KeyCode["Command"] = 19] = "Command";
141
142
  KeyCode[KeyCode["CapsLock"] = 20] = "CapsLock";
142
143
  KeyCode[KeyCode["Escape"] = 27] = "Escape";
143
144
  KeyCode[KeyCode["Space"] = 32] = "Space";
@@ -1,6 +1,6 @@
1
1
  import { ComponentPropsWithoutRef, ElementType } from "react";
2
2
  import { DragOptions } from "../hooks";
3
- import { SHIMMER, SORT } from "./enums";
3
+ import { SHIMMER, SORT, TRANSITIONS } from "./enums";
4
4
  import { animationProps, Skeleton } from "./interfaces";
5
5
  export type Deprecated<T, M extends string> = T & {
6
6
  __deprecatedMessage?: M;
@@ -45,6 +45,7 @@ export interface ZuzProps {
45
45
  animate?: animationProps;
46
46
  /** Animation configuration using {@link animationProps} */
47
47
  fx?: animationProps;
48
+ transition?: TRANSITIONS;
48
49
  /** Skeleton placeholder configuration using {@link Skeleton} */
49
50
  skeleton?: Skeleton;
50
51
  /** Additional class names for styling the component */
@@ -10,6 +10,8 @@ export interface animationProps {
10
10
  * {@link TRANSITIONS}
11
11
  */
12
12
  transition?: TRANSITIONS;
13
+ /** This will be removed / added to default calculations for x, y */
14
+ offset?: number;
13
15
  /** Starting style properties for the animation */
14
16
  from?: dynamicObject;
15
17
  /** Target style properties after the animation completes */