@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
@@ -20,6 +20,8 @@ export * from './ContextMenu/types';
20
20
  export { default as CookiesConsent } from './CookiesConsent';
21
21
  export * from './CookiesConsent/types';
22
22
  export { default as Cover } from './Cover';
23
+ export { default as Crumb } from './Crumb';
24
+ export * from './Crumb/types';
23
25
  export { default as Drawer } from './Drawer';
24
26
  export * from './Drawer/types';
25
27
  /**Editor */
@@ -31,9 +33,12 @@ export { default as Fab } from './Fab';
31
33
  export * from './Fab/types';
32
34
  export { default as Filters } from './Filters';
33
35
  export { default as Form } from './Form';
36
+ export * from './Form/types';
34
37
  export { default as Icon } from './Icon';
35
38
  export { default as Image } from './Image';
36
39
  export { default as Input } from './Input';
40
+ export { default as KeyboardKeys } from './KeyboardKeys';
41
+ export * from './KeyboardKeys/types';
37
42
  export { default as Label } from './Label';
38
43
  export { default as List } from './List';
39
44
  export * from './List/types';
@@ -48,7 +53,10 @@ export { default as ProgressBar } from './ProgressBar';
48
53
  export * from './ProgressBar/types';
49
54
  export { default as Radio } from './Radio';
50
55
  export * from './Radio/types';
56
+ export { default as ScrollView } from './ScrollView';
57
+ export * from './ScrollView/types';
51
58
  export { default as Search } from './Search';
59
+ export * from './Search/types';
52
60
  export { default as SelectTabs } from './Segmented';
53
61
  export * from './Segmented/types';
54
62
  export { default as Select } from './Select';
@@ -1,7 +1,7 @@
1
- import { dynamicObject } from "../types";
1
+ import { OptionValues } from "commander";
2
2
  import Hashids from "hashids";
3
+ import { dynamicObject } from "../types";
3
4
  import { TRANSITION_CURVES, TRANSITIONS } from "../types/enums.js";
4
- import { OptionValues } from "commander";
5
5
  declare class CSS {
6
6
  cache: dynamicObject;
7
7
  PROPS: dynamicObject;
@@ -52,7 +52,7 @@ declare class CSS {
52
52
  export default CSS;
53
53
  export declare const buildWithStyles: (source: dynamicObject) => dynamicObject;
54
54
  export declare const getAnimationCurve: (curve?: string | TRANSITION_CURVES) => string;
55
- export declare const animationTransition: (transition: TRANSITIONS) => {
55
+ export declare const animationTransition: (transition: TRANSITIONS, offset?: number, dialog?: boolean) => {
56
56
  from: {};
57
57
  to: {};
58
58
  };
@@ -1,9 +1,9 @@
1
- import { __SALT, FIELNAME_KEY, isColor, isHexColor, isNumber, LINE_KEY, setDeep } from "./index.js";
2
- import { cssAnimationCurves, cssDirect, cssFilterKeys, cssProps, cssPropsWithColor, cssTransformKeys, cssWithKeys } from "./stylesheet.js";
3
1
  import Hashids from "hashids";
4
- import { TRANSITION_CURVES, TRANSITIONS } from "../types/enums.js";
5
2
  import md5 from "md5";
6
3
  import pc from "picocolors";
4
+ import { TRANSITION_CURVES, TRANSITIONS } from "../types/enums.js";
5
+ import { __SALT, FIELNAME_KEY, isColor, isHexColor, isNumber, LINE_KEY, setDeep } from "./index.js";
6
+ import { cssAnimationCurves, cssDirect, cssFilterKeys, cssProps, cssPropsWithColor, cssTransformKeys, cssWithKeys } from "./stylesheet.js";
7
7
  class CSS {
8
8
  cache;
9
9
  PROPS;
@@ -935,39 +935,41 @@ export const getAnimationCurve = (curve) => {
935
935
  switch (curve.toUpperCase()) {
936
936
  case TRANSITION_CURVES.Bounce:
937
937
  return `var(--bounce)`;
938
- // return `linear( 0, 0.0039, 0.0157, 0.0352, 0.0625 9.09%,
939
- // 0.1407, 0.25, 0.3908, 0.5625, 0.7654,
940
- // 1, 0.8907, 0.8125 45.45%, 0.7852, 0.7657,
941
- // 0.7539, 0.75, 0.7539, 0.7657, 0.7852,
942
- // 0.8125 63.64%, 0.8905, 1 72.73%, 0.9727, 0.9532,
943
- // 0.9414, 0.9375, 0.9414, 0.9531, 0.9726,
944
- // 1, 0.9883, 0.9844, 0.9883, 1 )`
945
- break;
946
938
  case TRANSITION_CURVES.Spring:
947
939
  // return `cubic-bezier(0.2, -0.36, 0, 1.46)`
948
940
  return `var(--spring)`;
949
- break;
950
941
  case TRANSITION_CURVES.EaseInOut:
951
942
  // return `cubic-bezier(0.42, 0, 0.58, 1)`
952
943
  return `ease-in-out`;
953
- break;
954
944
  default:
955
945
  return `linear`;
956
946
  }
957
947
  };
958
- export const animationTransition = (transition) => {
948
+ export const animationTransition = (transition, offset = 0, dialog = false) => {
959
949
  let _from = {};
960
950
  let _to = {};
961
951
  switch (transition) {
962
952
  case TRANSITIONS.SlideInLeft:
963
953
  case TRANSITIONS.SlideInRight:
964
- _from = { x: transition == TRANSITIONS.SlideInLeft ? -20 : 20, opacity: 0 };
965
- _to = { x: 0, opacity: 1 };
954
+ _from = { x: transition == TRANSITIONS.SlideInLeft ?
955
+ dialog ? `-${50 + (offset || 10)}%` : -20 :
956
+ dialog ? `-${50 - (offset || 10)}%` : 20,
957
+ y: dialog ? `-50%` : 0,
958
+ opacity: 0 };
959
+ _to = { x: dialog ? `-50%` : 0, y: dialog ? `-50%` : 0, opacity: 1 };
966
960
  break;
967
961
  case TRANSITIONS.SlideInTop:
968
962
  case TRANSITIONS.SlideInBottom:
969
- _from = { y: transition == TRANSITIONS.SlideInTop ? -20 : 20, opacity: 0 };
970
- _to = { y: 0, opacity: 1 };
963
+ _from = {
964
+ y: transition == TRANSITIONS.SlideInTop ?
965
+ //Top
966
+ dialog ? `-${50 + (offset || 10)}%` : -20
967
+ //Bottom
968
+ : dialog ? `-${50 - (offset || 10)}%` : 20,
969
+ x: dialog ? `-50%` : 0,
970
+ opacity: 0
971
+ };
972
+ _to = { y: dialog ? `-50%` : 0, x: dialog ? `-50%` : 0, opacity: 1 };
971
973
  break;
972
974
  case TRANSITIONS.ScaleIn:
973
975
  _from = { scale: 0, opacity: 0 };
@@ -63,7 +63,8 @@ export declare const formatSize: (bytes: number | string) => string;
63
63
  export declare const copyToClipboard: (text: string) => Promise<unknown>;
64
64
  export declare const natsort: (options?: sortOptions) => (a: string | number, b: string | number) => number;
65
65
  export declare const bindKey: (key: KeyCode, fun: () => void, element?: HTMLElement) => void;
66
- export declare const camelCase: (str: string) => string;
66
+ export declare const camelCase: (str: string, ucf?: boolean) => string;
67
+ export declare const camelCaseToDash: (str: string) => string;
67
68
  export declare const pluralize: (word: string, count: number) => string;
68
69
  export declare const addPropsToChildren: (children: ReactNode, conditions: (child: ReactElement<any>) => boolean, newProps: object) => ReactNode;
69
70
  export declare const getPositionAroundElement: (x: number, y: number, distance: number, childCount: number) => {
@@ -73,3 +74,4 @@ export declare const getPositionAroundElement: (x: number, y: number, distance:
73
74
  export declare const clamp: (value: number, min: number, max: number) => number;
74
75
  export declare function mergeRefs<T>(...refs: (Ref<T> | undefined)[]): Ref<T>;
75
76
  export declare const slugify: (text: string, separator?: string) => string;
77
+ export declare const truncate: (selector: string, lines?: number) => void;
@@ -468,15 +468,16 @@ export const bindKey = (key, fun, element) => {
468
468
  };
469
469
  (element || document.documentElement).addEventListener('keydown', handleKeydown);
470
470
  };
471
- export const camelCase = (str) => {
471
+ export const camelCase = (str, ucf = false) => {
472
472
  return str
473
473
  .toLowerCase()
474
474
  .split(/[^a-zA-Z0-9]+/) // Split by any non-alphanumeric character
475
475
  .map((word, index) => index === 0
476
- ? word
477
- : word.charAt(0).toUpperCase() + word.slice(1))
476
+ ? ucf ? ucfirst(word) : word
477
+ : ucfirst(word))
478
478
  .join('');
479
479
  };
480
+ export const camelCaseToDash = (str) => str.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase();
480
481
  export const pluralize = (word, count) => `${word}${count !== 1 ? 's' : ''}`;
481
482
  export const addPropsToChildren = (children, conditions, newProps) => {
482
483
  return Children.map(children, (child) => {
@@ -535,3 +536,13 @@ export const slugify = (text, separator = "-") => {
535
536
  .replace(new RegExp(`\\${separator}{2,}`, "g"), separator) // Remove duplicate separators
536
537
  .replace(new RegExp(`^\\${separator}|\\${separator}$`, "g"), ""); // Trim separators from ends
537
538
  };
539
+ export const truncate = (selector, lines = 2) => {
540
+ const elements = document.querySelectorAll(selector);
541
+ elements.forEach((el) => {
542
+ const lineHeight = parseFloat(window.getComputedStyle(el).lineHeight);
543
+ const maxHeight = lineHeight * lines;
544
+ while (el.scrollHeight > maxHeight) {
545
+ el.textContent = el.textContent?.trim().slice(0, -1) + '…';
546
+ }
547
+ });
548
+ };
@@ -325,14 +325,19 @@ export const cssDirect = {
325
325
  "brightness": "filter: brightness(__VALUE__);",
326
326
  "ratio": "aspect-ratio: __VALUE__;",
327
327
  "center-h": "left: 50%;transform: translateX(-50%);",
328
+ "center-x": "left: 50%;transform: translateX(-50%);",
328
329
  "center-v": "top: 50%;transform: translateY(-50%);",
330
+ "center-y": "top: 50%;transform: translateY(-50%);",
329
331
  "no-overflow": "overflow: hidden;",
332
+ "no-overflow-x": "overflow-x: hidden;",
333
+ "no-overflow-y": "overflow-y: hidden;",
330
334
  "overflow-x": "overflow-x: auto;",
331
335
  "overflow-y": "overflow-x: auto;",
332
336
  "space-pre": "white-space: pre;",
333
337
  "white-space-pre": "white-space: pre;",
334
338
  "text-wrap": "width: 98%;white-space: nowrap;overflow: hidden;text-overflow: ellipsis;",
335
339
  "text-clip": "color: transparent;background-clip: text;-webkit-background-clip: text;",
340
+ "word-break": "wordc-break: break-word;",
336
341
  };
337
342
  export const cssPropsWithColor = [
338
343
  // Regular CSS keys
@@ -3,19 +3,25 @@ export { default as useBase } from './useBase';
3
3
  export { default as useCalendar } from './useCalendar';
4
4
  export { useColorScheme } from './useColorScheme';
5
5
  export { default as useContextMenu } from './useContextMenu';
6
- export { type IDBOptions, type IDBSchema, default as useDB } from './useDB';
6
+ export { default as useDB, type IDBOptions, type IDBSchema } from './useDB';
7
7
  export { default as useDebounce } from './useDebounce';
8
+ /**
9
+ * @deprecated use useDelayed hook instead
10
+ */
11
+ export { default as useDelayed, default as useMounted } from './useDelayed';
8
12
  export { default as useDevice } from './useDevice';
9
13
  export { default as useDimensions } from './useDimensions';
10
- export { default as useDrag } from './useDrag';
11
- export { type DragOptions } from './useDrag';
14
+ export { default as useMediaPlayer, type MediaPlayerProps, type MediaType } from './useMediaPlayer';
15
+ export { default as useMergedRefs } from './useMergedRefs';
16
+ export { default as useMutationObserver, type MutationCallback } from './useMutationObserver';
17
+ export { default as useDrag, type DragOptions } from './useDrag';
18
+ export { default as useFileManager } from './useFileManager';
12
19
  export { default as useImage } from './useImage';
13
20
  export { default as useIntersectionObserver } from './useIntersectionObserver';
14
- export { default as useKeyBind } from './useKeyBind';
15
- /**
16
- * @deprecated use useDelayed hook instead
17
- */
18
- export { default as useMounted } from './useMounted';
19
- export { default as useDelayed } from './useMounted';
21
+ export { default as useScrollbar } from './useScrollbar';
22
+ export { default as useShortcuts } from './useShortcuts';
20
23
  export { default as useNetworkStatus } from './useNetworkStatus';
21
24
  export { default as useResizeObserver } from './useResizeObserver';
25
+ export { default as useSlider } from './useSlider';
26
+ export { default as useTruncateText } from './useTruncateText';
27
+ export { default as useViewTransition } from './useViewTransition';
@@ -5,17 +5,24 @@ export { useColorScheme } from './useColorScheme';
5
5
  export { default as useContextMenu } from './useContextMenu';
6
6
  export { default as useDB } from './useDB';
7
7
  export { default as useDebounce } from './useDebounce';
8
+ /**
9
+ * @deprecated use useDelayed hook instead
10
+ */
11
+ export { default as useDelayed, default as useMounted } from './useDelayed';
8
12
  export { default as useDevice } from './useDevice';
9
13
  export { default as useDimensions } from './useDimensions';
14
+ export { default as useMediaPlayer } from './useMediaPlayer';
15
+ export { default as useMergedRefs } from './useMergedRefs';
16
+ export { default as useMutationObserver } from './useMutationObserver';
10
17
  export { default as useDrag } from './useDrag';
18
+ export { default as useFileManager } from './useFileManager';
19
+ //useFilter
11
20
  export { default as useImage } from './useImage';
12
21
  export { default as useIntersectionObserver } from './useIntersectionObserver';
13
- export { default as useKeyBind } from './useKeyBind';
14
- /**
15
- * @deprecated use useDelayed hook instead
16
- */
17
- export { default as useMounted } from './useMounted';
18
- export { default as useDelayed } from './useMounted';
22
+ export { default as useScrollbar } from './useScrollbar';
23
+ export { default as useShortcuts } from './useShortcuts';
19
24
  export { default as useNetworkStatus } from './useNetworkStatus';
20
25
  export { default as useResizeObserver } from './useResizeObserver';
21
- // export { default as useDomSelector } from './useDomSelector';
26
+ export { default as useSlider } from './useSlider';
27
+ export { default as useTruncateText } from './useTruncateText';
28
+ export { default as useViewTransition } from './useViewTransition';
@@ -1,4 +1,3 @@
1
- import { RefObject } from "react";
2
1
  export type AnchorOptions = {
3
2
  offsetX?: number;
4
3
  offsetY?: number;
@@ -9,6 +8,6 @@ declare const useAnchorPosition: (parent?: HTMLElement, event?: MouseEvent, opti
9
8
  top: number;
10
9
  left: number;
11
10
  };
12
- targetRef: RefObject<HTMLDivElement | null>;
11
+ targetRef: import("react").RefObject<HTMLDivElement | null>;
13
12
  };
14
13
  export default useAnchorPosition;
@@ -1,3 +1,4 @@
1
+ "use client";
1
2
  import { useCallback, useEffect, useRef, useState } from "react";
2
3
  const useAnchorPosition = (parent, event, options = {}) => {
3
4
  const [position, setPosition] = useState({ top: 0, left: 0 });
@@ -1,7 +1,7 @@
1
1
  import { cleanProps, css } from "../funs";
2
2
  import { buildWithStyles, getAnimationCurve, getAnimationTransition } from "../funs/css";
3
3
  import { cssFilterKeys, cssTransformKeys, cssWithKeys } from "../funs/stylesheet";
4
- import useDrag from "./useDrag";
4
+ let useDrag = null;
5
5
  const buildSkeletonStyle = (s) => {
6
6
  const makeValue = (v, unit = `px`) => {
7
7
  return v ?
@@ -29,12 +29,15 @@ const buildSkeletonStyle = (s) => {
29
29
  return style;
30
30
  };
31
31
  const useBase = (props) => {
32
- const { as, fx, animate, skeleton, className, shimmer, propsToRemove, draggable, dragOptions, ...rest } = props || {};
32
+ const { as, fx, animate, transition: autoTransition, skeleton, className, shimmer, propsToRemove, draggable, dragOptions, ...rest } = props || {};
33
33
  let cx = [];
34
34
  if (as) {
35
35
  cx = css().Build(`string` == typeof as ? as : as.join(` `)).cx;
36
36
  }
37
- const { transition, from, to, when, duration, delay, curve } = fx || animate || {};
37
+ const { transition, from, to, when, duration, delay, curve } = autoTransition ? {
38
+ transition: autoTransition,
39
+ duration: 0.3
40
+ } : fx || animate || {};
38
41
  let _style = {};
39
42
  if (undefined === when) {
40
43
  _style = transition ? getAnimationTransition(transition, true) : { ...from, ...to };
@@ -67,19 +70,30 @@ const useBase = (props) => {
67
70
  });
68
71
  _transition.transition = _transitionList.join(`, `);
69
72
  }
70
- // console.log(_style, _transition)
71
- const drag = useDrag(dragOptions);
73
+ // // console.log(_style, _transition)
74
+ const is = typeof window !== "undefined";
72
75
  let dragProps = {};
73
76
  let dragStyle = {};
74
- if (draggable) {
75
- dragProps = {
76
- onMouseDown: drag.onMouseDown,
77
- };
78
- dragStyle = {
79
- transform: `translate(${drag.position.x}px, ${drag.position.y}px)`,
80
- };
77
+ if (draggable && is) {
78
+ if (!useDrag) {
79
+ import("./useDrag")
80
+ .then(module => {
81
+ useDrag = module.default;
82
+ })
83
+ .catch(err => {
84
+ console.error("Error loading useDrag:", err);
85
+ });
86
+ }
87
+ if (useDrag) {
88
+ const drag = useDrag(dragOptions);
89
+ dragProps = {
90
+ onMouseDown: drag.onMouseDown,
91
+ };
92
+ dragStyle = {
93
+ transform: `translate(${drag.position.x}px, ${drag.position.y}px)`,
94
+ };
95
+ }
81
96
  }
82
- // console.log(`x`, buildWithStyles(_style),)
83
97
  return {
84
98
  style: {
85
99
  ...buildWithStyles(_style),
@@ -1,3 +1,4 @@
1
+ "use client";
1
2
  import { useState } from "react";
2
3
  const isLeapYear = (year) => {
3
4
  return (year % 4 === 0 && year % 100 !== 0) || (year % 400 === 0);
@@ -71,8 +71,8 @@ const Theme = ({ children, storageKey, forceTheme }) => {
71
71
  useEffect(() => {
72
72
  applyColorScheme((forceTheme || colorScheme || `system`));
73
73
  }, [colorScheme]);
74
- return (_jsxs(ThemeContext, { value: { colorScheme: colorScheme, resolvedScheme: resolvedTheme, setColorScheme: switchColorScheme }, children: [_jsx("script", { suppressHydrationWarning: true, dangerouslySetInnerHTML: {
75
- __html: forceTheme ? `` : `const el = document.documentElement
74
+ return (_jsxs(ThemeContext, { value: { colorScheme: colorScheme, resolvedScheme: resolvedTheme, setColorScheme: switchColorScheme }, children: [forceTheme ? null : _jsx("script", { suppressHydrationWarning: true, dangerouslySetInnerHTML: {
75
+ __html: `const el = document.documentElement
76
76
  const themes = ['light', 'dark']
77
77
  let theme = localStorage.getItem(\`${storageKey}\`) || "system";
78
78
  if (theme === "system") {
@@ -1,3 +1,4 @@
1
+ "use client";
1
2
  import { useEffect } from "react";
2
3
  const useContextMenu = (menu) => {
3
4
  const show = (e, items) => {
@@ -1,3 +1,4 @@
1
+ "use client";
1
2
  import { useEffect, useRef, useState } from "react";
2
3
  var DBMode;
3
4
  (function (DBMode) {
@@ -1,4 +1,5 @@
1
- import { useRef, useCallback } from "react";
1
+ "use client";
2
+ import { useCallback, useRef } from "react";
2
3
  const useDebounce = (func, delay) => {
3
4
  const timeoutRef = useRef(null);
4
5
  const debouncedFunction = useCallback((...args) => {
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Custom hook that sets a mounted state to true after a specified delay.
3
+ *
4
+ * @param {number} [delay=100] - The delay in milliseconds before setting the mounted state to true.
5
+ * @returns {boolean} - The mounted state.
6
+ *
7
+ * @example
8
+ * const isMounted = useMounted(200);
9
+ *
10
+ * useEffect(() => {
11
+ * if (isMounted) {
12
+ * // Component is mounted after 200ms
13
+ * }
14
+ * }, [isMounted]);
15
+ */
16
+ declare const useMounted: (delay?: number) => boolean;
17
+ export default useMounted;
@@ -0,0 +1,26 @@
1
+ "use client";
2
+ import { useEffect, useState } from 'react';
3
+ /**
4
+ * Custom hook that sets a mounted state to true after a specified delay.
5
+ *
6
+ * @param {number} [delay=100] - The delay in milliseconds before setting the mounted state to true.
7
+ * @returns {boolean} - The mounted state.
8
+ *
9
+ * @example
10
+ * const isMounted = useMounted(200);
11
+ *
12
+ * useEffect(() => {
13
+ * if (isMounted) {
14
+ * // Component is mounted after 200ms
15
+ * }
16
+ * }, [isMounted]);
17
+ */
18
+ const useMounted = (delay = 100) => {
19
+ const [mounted, setMounted] = useState(false);
20
+ useEffect(() => {
21
+ const timer = setTimeout(() => setMounted(true), delay);
22
+ return () => clearTimeout(timer); // Cleanup the timer on unmount
23
+ }, [delay]);
24
+ return mounted;
25
+ };
26
+ export default useMounted;
@@ -1,3 +1,4 @@
1
+ "use client";
1
2
  import { useEffect } from 'react';
2
3
  import useDimensions from './useDimensions';
3
4
  const useDevice = () => {
@@ -1,4 +1,5 @@
1
- import { useState, useEffect } from 'react';
1
+ "use client";
2
+ import { useEffect, useState } from 'react';
2
3
  const useDimensions = (el) => {
3
4
  const [dims, setDims] = useState({
4
5
  width: 0,
@@ -0,0 +1,2 @@
1
+ declare const useDom: () => void;
2
+ export default useDom;
@@ -0,0 +1,3 @@
1
+ const useDom = () => {
2
+ };
3
+ export default useDom;
@@ -0,0 +1,3 @@
1
+ export type MutationCallback = (mutations: MutationRecord[], observer: MutationObserver) => void;
2
+ declare const useMutationObserver: (target: HTMLElement | null, callback: MutationCallback, options?: MutationObserverInit) => void;
3
+ export default useMutationObserver;
@@ -0,0 +1,19 @@
1
+ import { useEffect, useRef } from "react";
2
+ const useMutationObserver = (target, callback, options = { childList: true, subtree: true }) => {
3
+ const observerRef = useRef(null);
4
+ useEffect(() => {
5
+ if (!target)
6
+ return;
7
+ // Create a new MutationObserver and pass the callback
8
+ observerRef.current = new MutationObserver(callback);
9
+ // Start observing the target element
10
+ observerRef.current.observe(target, options);
11
+ // Cleanup function to disconnect the observer
12
+ return () => {
13
+ if (observerRef.current) {
14
+ observerRef.current.disconnect();
15
+ }
16
+ };
17
+ }, [target, callback, options]);
18
+ };
19
+ export default useMutationObserver;
@@ -1,4 +1,5 @@
1
- import { useRef, useState, useEffect } from 'react';
1
+ "use client";
2
+ import { useEffect, useRef, useState } from 'react';
2
3
  import { DRAG_DIRECTION } from '../types/enums';
3
4
  const useDrag = (dragOptions) => {
4
5
  const { direction, snap, limits } = dragOptions || {
@@ -0,0 +1,2 @@
1
+ declare const useFileManager: () => void;
2
+ export default useFileManager;
@@ -0,0 +1,3 @@
1
+ const useFileManager = () => {
2
+ };
3
+ export default useFileManager;
@@ -1,3 +1,4 @@
1
+ "use client";
1
2
  import { useEffect, useRef, useState } from "react";
2
3
  const useImage = (url, crossOrigin, referrerPolicy) => {
3
4
  const img = useRef(null);
@@ -1,4 +1,5 @@
1
- import { useState, useEffect } from 'react';
1
+ "use client";
2
+ import { useEffect, useState } from 'react';
2
3
  const useIntersectionObserver = (refs, options = {}) => {
3
4
  const [intersectionRatio, setIntersectionRatio] = useState(refs && refs.length > 0 ? new Array(refs.length).fill(0) : []);
4
5
  useEffect(() => {
@@ -0,0 +1,32 @@
1
+ export type MediaType = "video" | "audio";
2
+ export type MediaPlayerProps = {
3
+ src: string;
4
+ type?: MediaType;
5
+ autoPlay?: boolean;
6
+ loop?: boolean;
7
+ controls?: boolean;
8
+ };
9
+ declare const useMediaPlayer: ({ src, type, autoPlay, loop, controls }: MediaPlayerProps) => {
10
+ mediaRef: import("react").RefObject<(HTMLVideoElement & HTMLAudioElement) | null>;
11
+ isPlaying: boolean;
12
+ togglePlay: () => void;
13
+ seek: (time: number) => void;
14
+ volume: number;
15
+ changeVolume: (newVolume: number) => void;
16
+ isFullscreen: boolean;
17
+ toggleFullscreen: () => void;
18
+ currentTime: number;
19
+ duration: number;
20
+ handleTimeUpdate: () => void;
21
+ handleLoadedMetadata: () => void;
22
+ mediaProps: {
23
+ ref: import("react").RefObject<(HTMLVideoElement & HTMLAudioElement) | null>;
24
+ src: string;
25
+ autoPlay: boolean;
26
+ loop: boolean;
27
+ controls: boolean;
28
+ onTimeUpdate: () => void;
29
+ onLoadedMetadata: () => void;
30
+ };
31
+ };
32
+ export default useMediaPlayer;
@@ -0,0 +1,86 @@
1
+ "use client";
2
+ import { useCallback, useRef, useState } from "react";
3
+ const useMediaPlayer = ({ src, type = "video", autoPlay = false, loop = false, controls = false }) => {
4
+ const mediaRef = useRef(null);
5
+ const [isPlaying, setIsPlaying] = useState(autoPlay);
6
+ const [volume, setVolume] = useState(1);
7
+ const [isFullscreen, setIsFullscreen] = useState(false);
8
+ const [currentTime, setCurrentTime] = useState(0);
9
+ const [duration, setDuration] = useState(0);
10
+ // Play / Pause toggle
11
+ const togglePlay = useCallback(() => {
12
+ if (mediaRef.current) {
13
+ if (mediaRef.current.paused) {
14
+ mediaRef.current.play();
15
+ setIsPlaying(true);
16
+ }
17
+ else {
18
+ mediaRef.current.pause();
19
+ setIsPlaying(false);
20
+ }
21
+ }
22
+ }, []);
23
+ // Seek media
24
+ const seek = useCallback((time) => {
25
+ if (mediaRef.current) {
26
+ mediaRef.current.currentTime = time;
27
+ setCurrentTime(time);
28
+ }
29
+ }, []);
30
+ // Change volume
31
+ const changeVolume = useCallback((newVolume) => {
32
+ if (mediaRef.current) {
33
+ mediaRef.current.volume = newVolume;
34
+ setVolume(newVolume);
35
+ }
36
+ }, []);
37
+ // Toggle fullscreen (only for video)
38
+ const toggleFullscreen = useCallback(() => {
39
+ if (type === "video" && mediaRef.current) {
40
+ if (!document.fullscreenElement) {
41
+ mediaRef.current.requestFullscreen?.();
42
+ setIsFullscreen(true);
43
+ }
44
+ else {
45
+ document.exitFullscreen?.();
46
+ setIsFullscreen(false);
47
+ }
48
+ }
49
+ }, [type]);
50
+ // Update time
51
+ const handleTimeUpdate = useCallback(() => {
52
+ if (mediaRef.current) {
53
+ setCurrentTime(mediaRef.current.currentTime);
54
+ }
55
+ }, []);
56
+ // Set duration
57
+ const handleLoadedMetadata = useCallback(() => {
58
+ if (mediaRef.current) {
59
+ setDuration(mediaRef.current.duration);
60
+ }
61
+ }, []);
62
+ return {
63
+ mediaRef,
64
+ isPlaying,
65
+ togglePlay,
66
+ seek,
67
+ volume,
68
+ changeVolume,
69
+ isFullscreen,
70
+ toggleFullscreen,
71
+ currentTime,
72
+ duration,
73
+ handleTimeUpdate,
74
+ handleLoadedMetadata,
75
+ mediaProps: {
76
+ ref: mediaRef,
77
+ src,
78
+ autoPlay,
79
+ loop,
80
+ controls,
81
+ onTimeUpdate: handleTimeUpdate,
82
+ onLoadedMetadata: handleLoadedMetadata,
83
+ },
84
+ };
85
+ };
86
+ export default useMediaPlayer;
@@ -0,0 +1,2 @@
1
+ declare const useMergedRefs: <T>(...refs: (React.Ref<T> | undefined)[]) => (node: T) => void;
2
+ export default useMergedRefs;