@zuzjs/ui 0.7.8 → 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 (234) hide show
  1. package/dist/cjs/comps/Box/index.d.ts +1 -2
  2. package/dist/cjs/comps/Box/index.js +14 -12
  3. package/dist/cjs/comps/Button/index.d.ts +1 -1
  4. package/dist/cjs/comps/Button/types.d.ts +1 -1
  5. package/dist/cjs/comps/ColorScheme/index.d.ts +3 -2
  6. package/dist/cjs/comps/ColorScheme/index.js +24 -9
  7. package/dist/cjs/comps/ColorScheme/types.d.ts +4 -0
  8. package/dist/cjs/comps/ColorScheme/types.js +1 -0
  9. package/dist/cjs/comps/ContextMenu/index.js +1 -2
  10. package/dist/cjs/comps/Crumb/index.d.ts +4 -0
  11. package/dist/cjs/comps/Crumb/index.js +13 -0
  12. package/dist/cjs/comps/Crumb/types.d.ts +11 -0
  13. package/dist/cjs/comps/Crumb/types.js +1 -0
  14. package/dist/cjs/comps/Drawer/index.js +16 -15
  15. package/dist/cjs/comps/Form/index.d.ts +3 -59
  16. package/dist/cjs/comps/Form/types.d.ts +43 -0
  17. package/dist/cjs/comps/Form/types.js +1 -0
  18. package/dist/cjs/comps/Icon/index.js +0 -1
  19. package/dist/cjs/comps/Image/index.js +0 -1
  20. package/dist/cjs/comps/KeyboardKeys/index.d.ts +8 -0
  21. package/dist/cjs/comps/KeyboardKeys/index.js +33 -0
  22. package/dist/cjs/comps/KeyboardKeys/types.d.ts +13 -0
  23. package/dist/cjs/comps/KeyboardKeys/types.js +51 -0
  24. package/dist/cjs/comps/Label/index.js +0 -1
  25. package/dist/cjs/comps/List/index.d.ts +3 -0
  26. package/dist/cjs/comps/List/index.js +4 -4
  27. package/dist/cjs/comps/List/item.js +5 -1
  28. package/dist/cjs/comps/List/types.d.ts +4 -1
  29. package/dist/cjs/comps/Network/index.js +3 -5
  30. package/dist/cjs/comps/Pagination/index.js +2 -2
  31. package/dist/cjs/comps/ScrollView/index.d.ts +5 -0
  32. package/dist/cjs/comps/ScrollView/index.js +13 -0
  33. package/dist/cjs/comps/ScrollView/types.d.ts +6 -0
  34. package/dist/cjs/comps/ScrollView/types.js +1 -0
  35. package/dist/cjs/comps/Search/index.d.ts +7 -10
  36. package/dist/cjs/comps/Search/index.js +10 -6
  37. package/dist/cjs/comps/Search/types.d.ts +12 -0
  38. package/dist/cjs/comps/Search/types.js +1 -0
  39. package/dist/cjs/comps/Segmented/index.d.ts +3 -2
  40. package/dist/cjs/comps/Segmented/index.js +6 -5
  41. package/dist/cjs/comps/Segmented/item.js +11 -2
  42. package/dist/cjs/comps/Segmented/types.d.ts +5 -1
  43. package/dist/cjs/comps/Select/index.d.ts +1 -1
  44. package/dist/cjs/comps/Select/types.d.ts +1 -1
  45. package/dist/cjs/comps/Sheet/index.js +8 -5
  46. package/dist/cjs/comps/Spinner/index.js +1 -2
  47. package/dist/cjs/comps/TabView/index.d.ts +1 -1
  48. package/dist/cjs/comps/TabView/types.d.ts +2 -2
  49. package/dist/cjs/comps/Table/index.js +12 -5
  50. package/dist/cjs/comps/Table/row.js +3 -2
  51. package/dist/cjs/comps/Table/types.d.ts +88 -1
  52. package/dist/cjs/comps/Text/index.d.ts +2 -0
  53. package/dist/cjs/comps/Text/index.js +4 -2
  54. package/dist/cjs/comps/TextArea/index.d.ts +2 -0
  55. package/dist/cjs/comps/TextArea/index.js +3 -4
  56. package/dist/cjs/comps/Treeview/index.js +3 -2
  57. package/dist/cjs/comps/Treeview/item.d.ts +1 -1
  58. package/dist/cjs/comps/Treeview/item.js +5 -4
  59. package/dist/cjs/comps/Treeview/types.d.ts +1 -1
  60. package/dist/cjs/comps/VideoPlayer/index.d.ts +2 -0
  61. package/dist/cjs/comps/VideoPlayer/index.js +7 -0
  62. package/dist/cjs/comps/index.d.ts +26 -18
  63. package/dist/cjs/comps/index.js +8 -0
  64. package/dist/cjs/funs/css.d.ts +3 -3
  65. package/dist/cjs/funs/css.js +20 -18
  66. package/dist/cjs/funs/index.d.ts +1 -0
  67. package/dist/cjs/funs/index.js +10 -0
  68. package/dist/cjs/funs/stylesheet.js +5 -0
  69. package/dist/cjs/hooks/index.d.ts +13 -6
  70. package/dist/cjs/hooks/index.js +14 -7
  71. package/dist/cjs/hooks/useAnchorPosition.d.ts +1 -2
  72. package/dist/cjs/hooks/useAnchorPosition.js +1 -0
  73. package/dist/cjs/hooks/useBase.js +27 -13
  74. package/dist/cjs/hooks/useCalendar.js +1 -0
  75. package/dist/cjs/hooks/useColorScheme.js +2 -2
  76. package/dist/cjs/hooks/useContextMenu.js +1 -0
  77. package/dist/cjs/hooks/useDB.js +1 -0
  78. package/dist/cjs/hooks/useDebounce.js +2 -1
  79. package/dist/cjs/hooks/useDelayed.js +2 -1
  80. package/dist/cjs/hooks/useDevice.js +1 -0
  81. package/dist/cjs/hooks/useDimensions.js +2 -1
  82. package/dist/cjs/hooks/useDom.d.ts +2 -0
  83. package/dist/cjs/hooks/useDom.js +3 -0
  84. package/dist/cjs/hooks/useDomMutation.d.ts +3 -0
  85. package/dist/cjs/hooks/useDomMutation.js +19 -0
  86. package/dist/cjs/hooks/useDrag.js +2 -1
  87. package/dist/cjs/hooks/useFileManager.d.ts +2 -0
  88. package/dist/cjs/hooks/useFileManager.js +3 -0
  89. package/dist/cjs/hooks/useImage.js +1 -0
  90. package/dist/cjs/hooks/useIntersectionObserver.js +2 -1
  91. package/dist/cjs/hooks/useMediaPlayer.d.ts +32 -0
  92. package/dist/cjs/hooks/useMediaPlayer.js +86 -0
  93. package/dist/cjs/hooks/useMergedRefs.d.ts +2 -0
  94. package/dist/cjs/hooks/useMergedRefs.js +14 -0
  95. package/dist/cjs/hooks/useMutationObserver.d.ts +3 -0
  96. package/dist/cjs/hooks/useMutationObserver.js +20 -0
  97. package/dist/cjs/hooks/useNetworkStatus.js +2 -1
  98. package/dist/cjs/hooks/usePlayer.d.ts +32 -0
  99. package/dist/cjs/hooks/usePlayer.js +85 -0
  100. package/dist/cjs/hooks/useResizeObserver.js +2 -1
  101. package/dist/cjs/hooks/useScrollbar.d.ts +16 -0
  102. package/dist/cjs/hooks/useScrollbar.js +160 -0
  103. package/dist/cjs/hooks/useSheet.js +1 -0
  104. package/dist/cjs/hooks/useShortcuts.d.ts +7 -0
  105. package/dist/cjs/hooks/useShortcuts.js +29 -0
  106. package/dist/cjs/hooks/useSlider.d.ts +7 -0
  107. package/dist/cjs/hooks/useSlider.js +23 -0
  108. package/dist/cjs/hooks/useTruncateText.d.ts +2 -0
  109. package/dist/cjs/hooks/useTruncateText.js +17 -0
  110. package/dist/cjs/hooks/useViewTransition.d.ts +2 -0
  111. package/dist/cjs/hooks/useViewTransition.js +13 -0
  112. package/dist/cjs/types/enums.d.ts +1 -0
  113. package/dist/cjs/types/enums.js +1 -0
  114. package/dist/cjs/types/index.d.ts +2 -1
  115. package/dist/cjs/types/interfaces.d.ts +2 -0
  116. package/dist/css/styles.css +1 -1
  117. package/dist/esm/comps/Box/index.d.ts +1 -2
  118. package/dist/esm/comps/Box/index.js +14 -12
  119. package/dist/esm/comps/Button/index.d.ts +1 -1
  120. package/dist/esm/comps/Button/types.d.ts +1 -1
  121. package/dist/esm/comps/ColorScheme/index.d.ts +3 -2
  122. package/dist/esm/comps/ColorScheme/index.js +24 -9
  123. package/dist/esm/comps/ColorScheme/types.d.ts +4 -0
  124. package/dist/esm/comps/ColorScheme/types.js +1 -0
  125. package/dist/esm/comps/ContextMenu/index.js +1 -2
  126. package/dist/esm/comps/Crumb/index.d.ts +4 -0
  127. package/dist/esm/comps/Crumb/index.js +13 -0
  128. package/dist/esm/comps/Crumb/types.d.ts +11 -0
  129. package/dist/esm/comps/Crumb/types.js +1 -0
  130. package/dist/esm/comps/Drawer/index.js +16 -15
  131. package/dist/esm/comps/Form/index.d.ts +3 -59
  132. package/dist/esm/comps/Form/types.d.ts +43 -0
  133. package/dist/esm/comps/Form/types.js +1 -0
  134. package/dist/esm/comps/Icon/index.js +0 -1
  135. package/dist/esm/comps/Image/index.js +0 -1
  136. package/dist/esm/comps/KeyboardKeys/index.d.ts +8 -0
  137. package/dist/esm/comps/KeyboardKeys/index.js +33 -0
  138. package/dist/esm/comps/KeyboardKeys/types.d.ts +13 -0
  139. package/dist/esm/comps/KeyboardKeys/types.js +51 -0
  140. package/dist/esm/comps/Label/index.js +0 -1
  141. package/dist/esm/comps/List/index.d.ts +3 -0
  142. package/dist/esm/comps/List/index.js +4 -4
  143. package/dist/esm/comps/List/item.js +5 -1
  144. package/dist/esm/comps/List/types.d.ts +4 -1
  145. package/dist/esm/comps/Network/index.js +3 -5
  146. package/dist/esm/comps/Pagination/index.js +2 -2
  147. package/dist/esm/comps/ScrollView/index.d.ts +5 -0
  148. package/dist/esm/comps/ScrollView/index.js +13 -0
  149. package/dist/esm/comps/ScrollView/types.d.ts +6 -0
  150. package/dist/esm/comps/ScrollView/types.js +1 -0
  151. package/dist/esm/comps/Search/index.d.ts +7 -10
  152. package/dist/esm/comps/Search/index.js +10 -6
  153. package/dist/esm/comps/Search/types.d.ts +12 -0
  154. package/dist/esm/comps/Search/types.js +1 -0
  155. package/dist/esm/comps/Segmented/index.d.ts +3 -2
  156. package/dist/esm/comps/Segmented/index.js +6 -5
  157. package/dist/esm/comps/Segmented/item.js +11 -2
  158. package/dist/esm/comps/Segmented/types.d.ts +5 -1
  159. package/dist/esm/comps/Select/index.d.ts +1 -1
  160. package/dist/esm/comps/Select/types.d.ts +1 -1
  161. package/dist/esm/comps/Sheet/index.js +8 -5
  162. package/dist/esm/comps/Spinner/index.js +1 -2
  163. package/dist/esm/comps/TabView/index.d.ts +1 -1
  164. package/dist/esm/comps/TabView/types.d.ts +2 -2
  165. package/dist/esm/comps/Table/index.js +12 -5
  166. package/dist/esm/comps/Table/row.js +3 -2
  167. package/dist/esm/comps/Table/types.d.ts +88 -1
  168. package/dist/esm/comps/Text/index.d.ts +2 -0
  169. package/dist/esm/comps/Text/index.js +4 -2
  170. package/dist/esm/comps/TextArea/index.d.ts +2 -0
  171. package/dist/esm/comps/TextArea/index.js +3 -4
  172. package/dist/esm/comps/Treeview/index.js +3 -2
  173. package/dist/esm/comps/Treeview/item.d.ts +1 -1
  174. package/dist/esm/comps/Treeview/item.js +5 -4
  175. package/dist/esm/comps/Treeview/types.d.ts +1 -1
  176. package/dist/esm/comps/VideoPlayer/index.d.ts +2 -0
  177. package/dist/esm/comps/VideoPlayer/index.js +7 -0
  178. package/dist/esm/comps/index.d.ts +26 -18
  179. package/dist/esm/comps/index.js +8 -0
  180. package/dist/esm/funs/css.d.ts +3 -3
  181. package/dist/esm/funs/css.js +20 -18
  182. package/dist/esm/funs/index.d.ts +1 -0
  183. package/dist/esm/funs/index.js +10 -0
  184. package/dist/esm/funs/stylesheet.js +5 -0
  185. package/dist/esm/hooks/index.d.ts +13 -6
  186. package/dist/esm/hooks/index.js +14 -7
  187. package/dist/esm/hooks/useAnchorPosition.d.ts +1 -2
  188. package/dist/esm/hooks/useAnchorPosition.js +1 -0
  189. package/dist/esm/hooks/useBase.js +27 -13
  190. package/dist/esm/hooks/useCalendar.js +1 -0
  191. package/dist/esm/hooks/useColorScheme.js +2 -2
  192. package/dist/esm/hooks/useContextMenu.js +1 -0
  193. package/dist/esm/hooks/useDB.js +1 -0
  194. package/dist/esm/hooks/useDebounce.js +2 -1
  195. package/dist/esm/hooks/useDelayed.js +2 -1
  196. package/dist/esm/hooks/useDevice.js +1 -0
  197. package/dist/esm/hooks/useDimensions.js +2 -1
  198. package/dist/esm/hooks/useDom.d.ts +2 -0
  199. package/dist/esm/hooks/useDom.js +3 -0
  200. package/dist/esm/hooks/useDomMutation.d.ts +3 -0
  201. package/dist/esm/hooks/useDomMutation.js +19 -0
  202. package/dist/esm/hooks/useDrag.js +2 -1
  203. package/dist/esm/hooks/useFileManager.d.ts +2 -0
  204. package/dist/esm/hooks/useFileManager.js +3 -0
  205. package/dist/esm/hooks/useImage.js +1 -0
  206. package/dist/esm/hooks/useIntersectionObserver.js +2 -1
  207. package/dist/esm/hooks/useMediaPlayer.d.ts +32 -0
  208. package/dist/esm/hooks/useMediaPlayer.js +86 -0
  209. package/dist/esm/hooks/useMergedRefs.d.ts +2 -0
  210. package/dist/esm/hooks/useMergedRefs.js +14 -0
  211. package/dist/esm/hooks/useMutationObserver.d.ts +3 -0
  212. package/dist/esm/hooks/useMutationObserver.js +20 -0
  213. package/dist/esm/hooks/useNetworkStatus.js +2 -1
  214. package/dist/esm/hooks/usePlayer.d.ts +32 -0
  215. package/dist/esm/hooks/usePlayer.js +85 -0
  216. package/dist/esm/hooks/useResizeObserver.js +2 -1
  217. package/dist/esm/hooks/useScrollbar.d.ts +16 -0
  218. package/dist/esm/hooks/useScrollbar.js +160 -0
  219. package/dist/esm/hooks/useSheet.js +1 -0
  220. package/dist/esm/hooks/useShortcuts.d.ts +7 -0
  221. package/dist/esm/hooks/useShortcuts.js +29 -0
  222. package/dist/esm/hooks/useSlider.d.ts +7 -0
  223. package/dist/esm/hooks/useSlider.js +23 -0
  224. package/dist/esm/hooks/useTruncateText.d.ts +2 -0
  225. package/dist/esm/hooks/useTruncateText.js +17 -0
  226. package/dist/esm/hooks/useViewTransition.d.ts +2 -0
  227. package/dist/esm/hooks/useViewTransition.js +13 -0
  228. package/dist/esm/types/enums.d.ts +1 -0
  229. package/dist/esm/types/enums.js +1 -0
  230. package/dist/esm/types/index.d.ts +2 -1
  231. package/dist/esm/types/interfaces.d.ts +2 -0
  232. package/dist/tsconfig.esm.tsbuildinfo +1 -1
  233. package/dist/tsconfig.tsbuildinfo +1 -1
  234. package/package.json +1 -1
@@ -536,3 +536,13 @@ export const slugify = (text, separator = "-") => {
536
536
  .replace(new RegExp(`\\${separator}{2,}`, "g"), separator) // Remove duplicate separators
537
537
  .replace(new RegExp(`^\\${separator}|\\${separator}$`, "g"), ""); // Trim separators from ends
538
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
@@ -5,16 +5,23 @@ export { useColorScheme } from './useColorScheme';
5
5
  export { default as useContextMenu } from './useContextMenu';
6
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';
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';
10
17
  export { default as useDrag, type DragOptions } from './useDrag';
18
+ export { default as useFileManager } from './useFileManager';
11
19
  export { default as useImage } from './useImage';
12
20
  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 './useDelayed';
18
- export { default as useDelayed } from './useDelayed';
21
+ export { default as useScrollbar } from './useScrollbar';
22
+ export { default as useShortcuts } from './useShortcuts';
19
23
  export { default as useNetworkStatus } from './useNetworkStatus';
20
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 './useDelayed';
18
- export { default as useDelayed } from './useDelayed';
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) => {
@@ -1,4 +1,5 @@
1
- import { useState, useEffect } from 'react';
1
+ "use client";
2
+ import { useEffect, useState } from 'react';
2
3
  /**
3
4
  * Custom hook that sets a mounted state to true after a specified delay.
4
5
  *
@@ -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;
@@ -0,0 +1,14 @@
1
+ import { useCallback } from "react";
2
+ const useMergedRefs = (...refs) => {
3
+ return useCallback((node) => {
4
+ refs.forEach((ref) => {
5
+ if (!ref)
6
+ return;
7
+ if (typeof ref === "function")
8
+ ref(node);
9
+ else if ("current" in ref)
10
+ ref.current = node;
11
+ });
12
+ }, [refs]);
13
+ };
14
+ export default useMergedRefs;
@@ -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,20 @@
1
+ "use client";
2
+ import { useEffect, useRef } from "react";
3
+ const useMutationObserver = (target, callback, options = { childList: true, subtree: true }) => {
4
+ const observerRef = useRef(null);
5
+ useEffect(() => {
6
+ if (!target)
7
+ return;
8
+ // Create a new MutationObserver and pass the callback
9
+ observerRef.current = new MutationObserver(callback);
10
+ // Start observing the target element
11
+ observerRef.current.observe(target, options);
12
+ // Cleanup function to disconnect the observer
13
+ return () => {
14
+ if (observerRef.current) {
15
+ observerRef.current.disconnect();
16
+ }
17
+ };
18
+ }, [target, callback, options]);
19
+ };
20
+ export default useMutationObserver;
@@ -1,4 +1,5 @@
1
- import { useState, useEffect } from 'react';
1
+ "use client";
2
+ import { useEffect, useState } from 'react';
2
3
  const useNetworkStatus = () => {
3
4
  const [isOnline, setIsOnline] = useState(null);
4
5
  const updateNetworkStatus = () => {
@@ -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,85 @@
1
+ import { useCallback, useRef, useState } from "react";
2
+ const useMediaPlayer = ({ src, type = "video", autoPlay = false, loop = false, controls = false }) => {
3
+ const mediaRef = useRef(null);
4
+ const [isPlaying, setIsPlaying] = useState(autoPlay);
5
+ const [volume, setVolume] = useState(1);
6
+ const [isFullscreen, setIsFullscreen] = useState(false);
7
+ const [currentTime, setCurrentTime] = useState(0);
8
+ const [duration, setDuration] = useState(0);
9
+ // Play / Pause toggle
10
+ const togglePlay = useCallback(() => {
11
+ if (mediaRef.current) {
12
+ if (mediaRef.current.paused) {
13
+ mediaRef.current.play();
14
+ setIsPlaying(true);
15
+ }
16
+ else {
17
+ mediaRef.current.pause();
18
+ setIsPlaying(false);
19
+ }
20
+ }
21
+ }, []);
22
+ // Seek media
23
+ const seek = useCallback((time) => {
24
+ if (mediaRef.current) {
25
+ mediaRef.current.currentTime = time;
26
+ setCurrentTime(time);
27
+ }
28
+ }, []);
29
+ // Change volume
30
+ const changeVolume = useCallback((newVolume) => {
31
+ if (mediaRef.current) {
32
+ mediaRef.current.volume = newVolume;
33
+ setVolume(newVolume);
34
+ }
35
+ }, []);
36
+ // Toggle fullscreen (only for video)
37
+ const toggleFullscreen = useCallback(() => {
38
+ if (type === "video" && mediaRef.current) {
39
+ if (!document.fullscreenElement) {
40
+ mediaRef.current.requestFullscreen?.();
41
+ setIsFullscreen(true);
42
+ }
43
+ else {
44
+ document.exitFullscreen?.();
45
+ setIsFullscreen(false);
46
+ }
47
+ }
48
+ }, [type]);
49
+ // Update time
50
+ const handleTimeUpdate = useCallback(() => {
51
+ if (mediaRef.current) {
52
+ setCurrentTime(mediaRef.current.currentTime);
53
+ }
54
+ }, []);
55
+ // Set duration
56
+ const handleLoadedMetadata = useCallback(() => {
57
+ if (mediaRef.current) {
58
+ setDuration(mediaRef.current.duration);
59
+ }
60
+ }, []);
61
+ return {
62
+ mediaRef,
63
+ isPlaying,
64
+ togglePlay,
65
+ seek,
66
+ volume,
67
+ changeVolume,
68
+ isFullscreen,
69
+ toggleFullscreen,
70
+ currentTime,
71
+ duration,
72
+ handleTimeUpdate,
73
+ handleLoadedMetadata,
74
+ mediaProps: {
75
+ ref: mediaRef,
76
+ src,
77
+ autoPlay,
78
+ loop,
79
+ controls,
80
+ onTimeUpdate: handleTimeUpdate,
81
+ onLoadedMetadata: handleLoadedMetadata,
82
+ },
83
+ };
84
+ };
85
+ export default useMediaPlayer;
@@ -1,4 +1,5 @@
1
- import { useState, useEffect } from 'react';
1
+ "use client";
2
+ import { useEffect, useState } from 'react';
2
3
  const useResizeObserver = (ref) => {
3
4
  const [size, setSize] = useState({ width: 0, height: 0, top: 0, left: 0 });
4
5
  useEffect(() => {
@@ -0,0 +1,16 @@
1
+ export interface ScrollBreakpoint {
2
+ [key: number]: () => void;
3
+ }
4
+ declare const useScrollbar: (breakpoints?: ScrollBreakpoint) => {
5
+ rootRef: import("react").RefObject<HTMLDivElement | null>;
6
+ containerRef: import("react").RefObject<HTMLDivElement | null>;
7
+ thumbY: import("react").RefObject<HTMLDivElement | null>;
8
+ thumbX: import("react").RefObject<HTMLDivElement | null>;
9
+ scrollToTop: () => void | undefined;
10
+ scrollToBottom: () => void | undefined;
11
+ scrollToLeft: () => void | undefined;
12
+ scrollToRight: () => void | undefined;
13
+ onScrollY: (e: React.MouseEvent) => void;
14
+ onScrollX: (e: React.MouseEvent) => void;
15
+ };
16
+ export default useScrollbar;