@usefy/usefy 0.0.17 โ†’ 0.0.19

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.
package/README.md CHANGED
@@ -47,7 +47,7 @@
47
47
  - **๐Ÿš€ Zero Dependencies** โ€” Pure React implementation with no external dependencies
48
48
  - **๐Ÿ“ฆ Tree Shakeable** โ€” Import only the hooks you need to optimize bundle size
49
49
  - **๐Ÿ”ท TypeScript First** โ€” Complete type safety with full autocomplete support
50
- - **โšก SSR Safe** โ€” Works with Next.js, Remix, and other SSR frameworks without crashing
50
+ - **โšก SSR Compatible** โ€” Works seamlessly with Next.js, Remix, and other SSR frameworks
51
51
  - **๐Ÿงช Well Tested** โ€” High test coverage ensures reliability and stability
52
52
  - **๐Ÿ“– Well Documented** โ€” Detailed documentation with practical examples
53
53
 
@@ -112,6 +112,9 @@ All packages require React 18 or 19:
112
112
  | [@usefy/use-session-storage](https://www.npmjs.com/package/@usefy/use-session-storage) | sessionStorage persistence for tab lifetime | [![npm](https://img.shields.io/npm/v/@usefy/use-session-storage.svg?style=flat-square&color=007acc)](https://www.npmjs.com/package/@usefy/use-session-storage) | ![94%](https://img.shields.io/badge/coverage-94%25-brightgreen?style=flat-square) |
113
113
  | [@usefy/use-click-any-where](https://www.npmjs.com/package/@usefy/use-click-any-where) | Document-wide click event detection | [![npm](https://img.shields.io/npm/v/@usefy/use-click-any-where.svg?style=flat-square&color=007acc)](https://www.npmjs.com/package/@usefy/use-click-any-where) | ![92%](https://img.shields.io/badge/coverage-92%25-brightgreen?style=flat-square) |
114
114
  | [@usefy/use-copy-to-clipboard](https://www.npmjs.com/package/@usefy/use-copy-to-clipboard) | Clipboard copy with fallback support | [![npm](https://img.shields.io/npm/v/@usefy/use-copy-to-clipboard.svg?style=flat-square&color=007acc)](https://www.npmjs.com/package/@usefy/use-copy-to-clipboard) | ![88%](https://img.shields.io/badge/coverage-88%25-brightgreen?style=flat-square) |
115
+ | [@usefy/use-event-listener](https://www.npmjs.com/package/@usefy/use-event-listener) | DOM event listener with auto cleanup | [![npm](https://img.shields.io/npm/v/@usefy/use-event-listener.svg?style=flat-square&color=007acc)](https://www.npmjs.com/package/@usefy/use-event-listener) | ![96%](https://img.shields.io/badge/coverage-96%25-brightgreen?style=flat-square) |
116
+ | [@usefy/use-on-click-outside](https://www.npmjs.com/package/@usefy/use-on-click-outside) | Outside click detection for modals/dropdowns | [![npm](https://img.shields.io/npm/v/@usefy/use-on-click-outside.svg?style=flat-square&color=007acc)](https://www.npmjs.com/package/@usefy/use-on-click-outside) | ![97%](https://img.shields.io/badge/coverage-97%25-brightgreen?style=flat-square) |
117
+ | [@usefy/use-timer](https://www.npmjs.com/package/@usefy/use-timer) | Countdown timer with drift compensation and formats | [![npm](https://img.shields.io/npm/v/@usefy/use-timer.svg?style=flat-square&color=007acc)](https://www.npmjs.com/package/@usefy/use-timer) | ![84%](https://img.shields.io/badge/coverage-84%25-brightgreen?style=flat-square) |
115
118
 
116
119
  ---
117
120
 
@@ -126,6 +129,8 @@ import {
126
129
  useDebounce,
127
130
  useLocalStorage,
128
131
  useCopyToClipboard,
132
+ useEventListener,
133
+ useOnClickOutside,
129
134
  } from "@usefy/usefy";
130
135
 
131
136
  function App() {
@@ -293,6 +298,36 @@ const throttledFn = useThrottleCallback(callback, 100);
293
298
 
294
299
  </details>
295
300
 
301
+ <details>
302
+ <summary><strong>useTimer</strong> โ€” Countdown timer with accurate timing</summary>
303
+
304
+ ```tsx
305
+ import { useTimer, ms } from "@usefy/use-timer";
306
+
307
+ const timer = useTimer(ms.minutes(5), {
308
+ format: "MM:SS",
309
+ autoStart: false,
310
+ loop: false,
311
+ onComplete: () => console.log("Time's up!"),
312
+ });
313
+
314
+ // Controls
315
+ timer.start();
316
+ timer.pause();
317
+ timer.reset();
318
+ timer.addTime(ms.seconds(10));
319
+ timer.subtractTime(ms.seconds(5));
320
+
321
+ // State
322
+ timer.formattedTime; // "05:00"
323
+ timer.progress; // 0-100
324
+ timer.isRunning; // boolean
325
+ ```
326
+
327
+ Perfect for countdown timers, Pomodoro apps, kitchen timers, and time-based UIs with smart render optimization.
328
+
329
+ </details>
330
+
296
331
  ### ๐Ÿ’พ Storage
297
332
 
298
333
  <details>
@@ -324,6 +359,65 @@ Data persists during tab lifetime, isolated per tab.
324
359
 
325
360
  ### ๐Ÿ–ฑ๏ธ Events
326
361
 
362
+ <details>
363
+ <summary><strong>useEventListener</strong> โ€” DOM event listener with auto cleanup</summary>
364
+
365
+ ```tsx
366
+ // Window resize event (default target)
367
+ useEventListener("resize", (e) => {
368
+ console.log("Window resized:", window.innerWidth);
369
+ });
370
+
371
+ // Document keydown event
372
+ useEventListener(
373
+ "keydown",
374
+ (e) => {
375
+ if (e.key === "Escape") closeModal();
376
+ },
377
+ document
378
+ );
379
+
380
+ // Element with ref
381
+ const buttonRef = useRef<HTMLButtonElement>(null);
382
+ useEventListener("click", handleClick, buttonRef);
383
+
384
+ // With options
385
+ useEventListener("scroll", handleScroll, window, {
386
+ passive: true,
387
+ capture: false,
388
+ enabled: isTracking,
389
+ });
390
+ ```
391
+
392
+ Supports window, document, HTMLElement, and RefObject targets with full TypeScript type inference.
393
+
394
+ </details>
395
+
396
+ <details>
397
+ <summary><strong>useOnClickOutside</strong> โ€” Outside click detection</summary>
398
+
399
+ ```tsx
400
+ // Basic usage - close modal on outside click
401
+ const modalRef = useRef<HTMLDivElement>(null);
402
+ useOnClickOutside(modalRef, () => onClose(), { enabled: isOpen });
403
+
404
+ // Multiple refs - button and dropdown menu
405
+ const buttonRef = useRef<HTMLButtonElement>(null);
406
+ const menuRef = useRef<HTMLDivElement>(null);
407
+ useOnClickOutside([buttonRef, menuRef], () => setIsOpen(false), {
408
+ enabled: isOpen,
409
+ });
410
+
411
+ // With exclude refs
412
+ useOnClickOutside(modalRef, onClose, {
413
+ excludeRefs: [toastRef], // Clicks on toast won't close modal
414
+ });
415
+ ```
416
+
417
+ Perfect for modals, dropdowns, popovers, tooltips, and context menus with mouse + touch support.
418
+
419
+ </details>
420
+
327
421
  <details>
328
422
  <summary><strong>useClickAnyWhere</strong> โ€” Global click detection</summary>
329
423
 
@@ -377,6 +471,9 @@ All packages are comprehensively tested using Vitest to ensure reliability and s
377
471
  | use-click-any-where | 92% | 88% | 100% | 92% |
378
472
  | use-debounce | 91% | 90% | 67% | 93% |
379
473
  | use-copy-to-clipboard | 88% | 79% | 86% | 88% |
474
+ | use-event-listener | 96% | 91% | 100% | 96% |
475
+ | use-on-click-outside | 97% | 93% | 100% | 97% |
476
+ | use-timer | 84% | 73% | 94% | 84% |
380
477
 
381
478
  ---
382
479
 
@@ -392,23 +489,6 @@ All packages are comprehensively tested using Vitest to ensure reliability and s
392
489
 
393
490
  ---
394
491
 
395
- ## SSR Compatibility
396
-
397
- All hooks are SSR-safe and will not throw errors on the server.
398
-
399
- | Hook | SSR Behavior |
400
- | -------------------------------------------- | ------------------------------------------------ |
401
- | `useToggle`, `useCounter` | โœ… Fully compatible (pure React state) |
402
- | `useDebounce`, `useThrottle` | โœ… Fully compatible (uses `setTimeout`) |
403
- | `useDebounceCallback`, `useThrottleCallback` | โœ… Fully compatible |
404
- | `useLocalStorage`, `useSessionStorage` | โœ… Safe โ€” returns `initialValue` on server |
405
- | `useClickAnyWhere` | โœ… Safe โ€” event listener only attached on client |
406
- | `useCopyToClipboard` | โœ… Safe โ€” copy function only works on client |
407
-
408
- > **Note**: `useLocalStorage` and `useSessionStorage` include proper `typeof window` checks and will gracefully fall back to `initialValue` during server-side rendering.
409
-
410
- ---
411
-
412
492
  ## Related Links
413
493
 
414
494
  - ๐Ÿ“ฆ [npm Organization](https://www.npmjs.com/org/usefy)
package/dist/index.d.mts CHANGED
@@ -10,3 +10,4 @@ export { InitialValue, UseLocalStorageOptions, UseLocalStorageReturn, useLocalSt
10
10
  export { InitialValue as SessionStorageInitialValue, UseSessionStorageOptions, UseSessionStorageReturn, useSessionStorage } from '@usefy/use-session-storage';
11
11
  export { ClickOutsideEvent, MouseEventType, OnClickOutsideHandler, RefTarget, TouchEventType, UseOnClickOutsideOptions, useOnClickOutside } from '@usefy/use-on-click-outside';
12
12
  export { EventTargetType, UseEventListenerOptions, useEventListener } from '@usefy/use-event-listener';
13
+ export { TimeFormat, TimeUnit, UseTimerOptions, UseTimerReturn, useTimer } from '@usefy/use-timer';
package/dist/index.d.ts CHANGED
@@ -10,3 +10,4 @@ export { InitialValue, UseLocalStorageOptions, UseLocalStorageReturn, useLocalSt
10
10
  export { InitialValue as SessionStorageInitialValue, UseSessionStorageOptions, UseSessionStorageReturn, useSessionStorage } from '@usefy/use-session-storage';
11
11
  export { ClickOutsideEvent, MouseEventType, OnClickOutsideHandler, RefTarget, TouchEventType, UseOnClickOutsideOptions, useOnClickOutside } from '@usefy/use-on-click-outside';
12
12
  export { EventTargetType, UseEventListenerOptions, useEventListener } from '@usefy/use-event-listener';
13
+ export { TimeFormat, TimeUnit, UseTimerOptions, UseTimerReturn, useTimer } from '@usefy/use-timer';
package/dist/index.js CHANGED
@@ -31,6 +31,7 @@ __export(index_exports, {
31
31
  useSessionStorage: () => import_use_session_storage.useSessionStorage,
32
32
  useThrottle: () => import_use_throttle.useThrottle,
33
33
  useThrottleCallback: () => import_use_throttle_callback.useThrottleCallback,
34
+ useTimer: () => import_use_timer.useTimer,
34
35
  useToggle: () => import_use_toggle.useToggle
35
36
  });
36
37
  module.exports = __toCommonJS(index_exports);
@@ -46,6 +47,7 @@ var import_use_local_storage = require("@usefy/use-local-storage");
46
47
  var import_use_session_storage = require("@usefy/use-session-storage");
47
48
  var import_use_on_click_outside = require("@usefy/use-on-click-outside");
48
49
  var import_use_event_listener = require("@usefy/use-event-listener");
50
+ var import_use_timer = require("@usefy/use-timer");
49
51
  // Annotate the CommonJS export names for ESM import in node:
50
52
  0 && (module.exports = {
51
53
  useClickAnyWhere,
@@ -59,6 +61,7 @@ var import_use_event_listener = require("@usefy/use-event-listener");
59
61
  useSessionStorage,
60
62
  useThrottle,
61
63
  useThrottleCallback,
64
+ useTimer,
62
65
  useToggle
63
66
  });
64
67
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"sourcesContent":["// Re-export all hooks from individual packages\n\n// useClickAnyWhere\nexport {\n useClickAnyWhere,\n type UseClickAnyWhereOptions,\n type ClickAnyWhereHandler,\n} from \"@usefy/use-click-any-where\";\n\n// useCopyToClipboard\nexport {\n useCopyToClipboard,\n type UseCopyToClipboardOptions,\n type UseCopyToClipboardReturn,\n type CopyFn,\n} from \"@usefy/use-copy-to-clipboard\";\n\n// useCounter\nexport { useCounter } from \"@usefy/use-counter\";\n\n// useToggle\nexport { useToggle, type UseToggleReturn } from \"@usefy/use-toggle\";\n\n// useDebounce\nexport { useDebounce, type UseDebounceOptions } from \"@usefy/use-debounce\";\n\n// useDebounceCallback\nexport {\n useDebounceCallback,\n type UseDebounceCallbackOptions,\n type DebouncedFunction,\n} from \"@usefy/use-debounce-callback\";\n\n// useThrottle\nexport { useThrottle, type UseThrottleOptions } from \"@usefy/use-throttle\";\n\n// useThrottleCallback\nexport {\n useThrottleCallback,\n type UseThrottleCallbackOptions,\n type ThrottledFunction,\n} from \"@usefy/use-throttle-callback\";\n\n// useLocalStorage\nexport {\n useLocalStorage,\n type UseLocalStorageOptions,\n type UseLocalStorageReturn,\n type InitialValue,\n} from \"@usefy/use-local-storage\";\n\n// useSessionStorage\nexport {\n useSessionStorage,\n type UseSessionStorageOptions,\n type UseSessionStorageReturn,\n type InitialValue as SessionStorageInitialValue,\n} from \"@usefy/use-session-storage\";\n\n// useOnClickOutside\nexport {\n useOnClickOutside,\n type UseOnClickOutsideOptions,\n type OnClickOutsideHandler,\n type ClickOutsideEvent,\n type RefTarget,\n type MouseEventType,\n type TouchEventType,\n} from \"@usefy/use-on-click-outside\";\n\n// useEventListener\nexport {\n useEventListener,\n type UseEventListenerOptions,\n type EventTargetType,\n} from \"@usefy/use-event-listener\";\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,iCAIO;AAGP,mCAKO;AAGP,yBAA2B;AAG3B,wBAAgD;AAGhD,0BAAqD;AAGrD,mCAIO;AAGP,0BAAqD;AAGrD,mCAIO;AAGP,+BAKO;AAGP,iCAKO;AAGP,kCAQO;AAGP,gCAIO;","names":[]}
1
+ {"version":3,"sources":["../src/index.ts"],"sourcesContent":["// Re-export all hooks from individual packages\n\n// useClickAnyWhere\nexport {\n useClickAnyWhere,\n type UseClickAnyWhereOptions,\n type ClickAnyWhereHandler,\n} from \"@usefy/use-click-any-where\";\n\n// useCopyToClipboard\nexport {\n useCopyToClipboard,\n type UseCopyToClipboardOptions,\n type UseCopyToClipboardReturn,\n type CopyFn,\n} from \"@usefy/use-copy-to-clipboard\";\n\n// useCounter\nexport { useCounter } from \"@usefy/use-counter\";\n\n// useToggle\nexport { useToggle, type UseToggleReturn } from \"@usefy/use-toggle\";\n\n// useDebounce\nexport { useDebounce, type UseDebounceOptions } from \"@usefy/use-debounce\";\n\n// useDebounceCallback\nexport {\n useDebounceCallback,\n type UseDebounceCallbackOptions,\n type DebouncedFunction,\n} from \"@usefy/use-debounce-callback\";\n\n// useThrottle\nexport { useThrottle, type UseThrottleOptions } from \"@usefy/use-throttle\";\n\n// useThrottleCallback\nexport {\n useThrottleCallback,\n type UseThrottleCallbackOptions,\n type ThrottledFunction,\n} from \"@usefy/use-throttle-callback\";\n\n// useLocalStorage\nexport {\n useLocalStorage,\n type UseLocalStorageOptions,\n type UseLocalStorageReturn,\n type InitialValue,\n} from \"@usefy/use-local-storage\";\n\n// useSessionStorage\nexport {\n useSessionStorage,\n type UseSessionStorageOptions,\n type UseSessionStorageReturn,\n type InitialValue as SessionStorageInitialValue,\n} from \"@usefy/use-session-storage\";\n\n// useOnClickOutside\nexport {\n useOnClickOutside,\n type UseOnClickOutsideOptions,\n type OnClickOutsideHandler,\n type ClickOutsideEvent,\n type RefTarget,\n type MouseEventType,\n type TouchEventType,\n} from \"@usefy/use-on-click-outside\";\n\n// useEventListener\nexport {\n useEventListener,\n type UseEventListenerOptions,\n type EventTargetType,\n} from \"@usefy/use-event-listener\";\n\n// useTimer\nexport {\n useTimer,\n type TimeUnit,\n type TimeFormat,\n type UseTimerOptions,\n type UseTimerReturn,\n} from \"@usefy/use-timer\";\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,iCAIO;AAGP,mCAKO;AAGP,yBAA2B;AAG3B,wBAAgD;AAGhD,0BAAqD;AAGrD,mCAIO;AAGP,0BAAqD;AAGrD,mCAIO;AAGP,+BAKO;AAGP,iCAKO;AAGP,kCAQO;AAGP,gCAIO;AAGP,uBAMO;","names":[]}
package/dist/index.mjs CHANGED
@@ -27,6 +27,9 @@ import {
27
27
  import {
28
28
  useEventListener
29
29
  } from "@usefy/use-event-listener";
30
+ import {
31
+ useTimer
32
+ } from "@usefy/use-timer";
30
33
  export {
31
34
  useClickAnyWhere,
32
35
  useCopyToClipboard,
@@ -39,6 +42,7 @@ export {
39
42
  useSessionStorage,
40
43
  useThrottle,
41
44
  useThrottleCallback,
45
+ useTimer,
42
46
  useToggle
43
47
  };
44
48
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"sourcesContent":["// Re-export all hooks from individual packages\n\n// useClickAnyWhere\nexport {\n useClickAnyWhere,\n type UseClickAnyWhereOptions,\n type ClickAnyWhereHandler,\n} from \"@usefy/use-click-any-where\";\n\n// useCopyToClipboard\nexport {\n useCopyToClipboard,\n type UseCopyToClipboardOptions,\n type UseCopyToClipboardReturn,\n type CopyFn,\n} from \"@usefy/use-copy-to-clipboard\";\n\n// useCounter\nexport { useCounter } from \"@usefy/use-counter\";\n\n// useToggle\nexport { useToggle, type UseToggleReturn } from \"@usefy/use-toggle\";\n\n// useDebounce\nexport { useDebounce, type UseDebounceOptions } from \"@usefy/use-debounce\";\n\n// useDebounceCallback\nexport {\n useDebounceCallback,\n type UseDebounceCallbackOptions,\n type DebouncedFunction,\n} from \"@usefy/use-debounce-callback\";\n\n// useThrottle\nexport { useThrottle, type UseThrottleOptions } from \"@usefy/use-throttle\";\n\n// useThrottleCallback\nexport {\n useThrottleCallback,\n type UseThrottleCallbackOptions,\n type ThrottledFunction,\n} from \"@usefy/use-throttle-callback\";\n\n// useLocalStorage\nexport {\n useLocalStorage,\n type UseLocalStorageOptions,\n type UseLocalStorageReturn,\n type InitialValue,\n} from \"@usefy/use-local-storage\";\n\n// useSessionStorage\nexport {\n useSessionStorage,\n type UseSessionStorageOptions,\n type UseSessionStorageReturn,\n type InitialValue as SessionStorageInitialValue,\n} from \"@usefy/use-session-storage\";\n\n// useOnClickOutside\nexport {\n useOnClickOutside,\n type UseOnClickOutsideOptions,\n type OnClickOutsideHandler,\n type ClickOutsideEvent,\n type RefTarget,\n type MouseEventType,\n type TouchEventType,\n} from \"@usefy/use-on-click-outside\";\n\n// useEventListener\nexport {\n useEventListener,\n type UseEventListenerOptions,\n type EventTargetType,\n} from \"@usefy/use-event-listener\";\n"],"mappings":";AAGA;AAAA,EACE;AAAA,OAGK;AAGP;AAAA,EACE;AAAA,OAIK;AAGP,SAAS,kBAAkB;AAG3B,SAAS,iBAAuC;AAGhD,SAAS,mBAA4C;AAGrD;AAAA,EACE;AAAA,OAGK;AAGP,SAAS,mBAA4C;AAGrD;AAAA,EACE;AAAA,OAGK;AAGP;AAAA,EACE;AAAA,OAIK;AAGP;AAAA,EACE;AAAA,OAIK;AAGP;AAAA,EACE;AAAA,OAOK;AAGP;AAAA,EACE;AAAA,OAGK;","names":[]}
1
+ {"version":3,"sources":["../src/index.ts"],"sourcesContent":["// Re-export all hooks from individual packages\n\n// useClickAnyWhere\nexport {\n useClickAnyWhere,\n type UseClickAnyWhereOptions,\n type ClickAnyWhereHandler,\n} from \"@usefy/use-click-any-where\";\n\n// useCopyToClipboard\nexport {\n useCopyToClipboard,\n type UseCopyToClipboardOptions,\n type UseCopyToClipboardReturn,\n type CopyFn,\n} from \"@usefy/use-copy-to-clipboard\";\n\n// useCounter\nexport { useCounter } from \"@usefy/use-counter\";\n\n// useToggle\nexport { useToggle, type UseToggleReturn } from \"@usefy/use-toggle\";\n\n// useDebounce\nexport { useDebounce, type UseDebounceOptions } from \"@usefy/use-debounce\";\n\n// useDebounceCallback\nexport {\n useDebounceCallback,\n type UseDebounceCallbackOptions,\n type DebouncedFunction,\n} from \"@usefy/use-debounce-callback\";\n\n// useThrottle\nexport { useThrottle, type UseThrottleOptions } from \"@usefy/use-throttle\";\n\n// useThrottleCallback\nexport {\n useThrottleCallback,\n type UseThrottleCallbackOptions,\n type ThrottledFunction,\n} from \"@usefy/use-throttle-callback\";\n\n// useLocalStorage\nexport {\n useLocalStorage,\n type UseLocalStorageOptions,\n type UseLocalStorageReturn,\n type InitialValue,\n} from \"@usefy/use-local-storage\";\n\n// useSessionStorage\nexport {\n useSessionStorage,\n type UseSessionStorageOptions,\n type UseSessionStorageReturn,\n type InitialValue as SessionStorageInitialValue,\n} from \"@usefy/use-session-storage\";\n\n// useOnClickOutside\nexport {\n useOnClickOutside,\n type UseOnClickOutsideOptions,\n type OnClickOutsideHandler,\n type ClickOutsideEvent,\n type RefTarget,\n type MouseEventType,\n type TouchEventType,\n} from \"@usefy/use-on-click-outside\";\n\n// useEventListener\nexport {\n useEventListener,\n type UseEventListenerOptions,\n type EventTargetType,\n} from \"@usefy/use-event-listener\";\n\n// useTimer\nexport {\n useTimer,\n type TimeUnit,\n type TimeFormat,\n type UseTimerOptions,\n type UseTimerReturn,\n} from \"@usefy/use-timer\";\n"],"mappings":";AAGA;AAAA,EACE;AAAA,OAGK;AAGP;AAAA,EACE;AAAA,OAIK;AAGP,SAAS,kBAAkB;AAG3B,SAAS,iBAAuC;AAGhD,SAAS,mBAA4C;AAGrD;AAAA,EACE;AAAA,OAGK;AAGP,SAAS,mBAA4C;AAGrD;AAAA,EACE;AAAA,OAGK;AAGP;AAAA,EACE;AAAA,OAIK;AAGP;AAAA,EACE;AAAA,OAIK;AAGP;AAAA,EACE;AAAA,OAOK;AAGP;AAAA,EACE;AAAA,OAGK;AAGP;AAAA,EACE;AAAA,OAKK;","names":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@usefy/usefy",
3
- "version": "0.0.17",
3
+ "version": "0.0.19",
4
4
  "description": "A collection of useful React hooks",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index.mjs",
@@ -17,18 +17,19 @@
17
17
  ],
18
18
  "sideEffects": false,
19
19
  "dependencies": {
20
- "@usefy/use-click-any-where": "0.0.17",
21
- "@usefy/use-counter": "0.0.17",
22
- "@usefy/use-toggle": "0.0.17",
23
- "@usefy/use-debounce": "0.0.17",
24
- "@usefy/use-debounce-callback": "0.0.17",
25
- "@usefy/use-copy-to-clipboard": "0.0.17",
26
- "@usefy/use-throttle": "0.0.17",
27
- "@usefy/use-throttle-callback": "0.0.17",
28
- "@usefy/use-local-storage": "0.0.17",
29
- "@usefy/use-session-storage": "0.0.17",
30
- "@usefy/use-on-click-outside": "0.0.17",
31
- "@usefy/use-event-listener": "0.0.17"
20
+ "@usefy/use-click-any-where": "0.0.19",
21
+ "@usefy/use-copy-to-clipboard": "0.0.19",
22
+ "@usefy/use-counter": "0.0.19",
23
+ "@usefy/use-toggle": "0.0.19",
24
+ "@usefy/use-debounce": "0.0.19",
25
+ "@usefy/use-debounce-callback": "0.0.19",
26
+ "@usefy/use-throttle": "0.0.19",
27
+ "@usefy/use-throttle-callback": "0.0.19",
28
+ "@usefy/use-local-storage": "0.0.19",
29
+ "@usefy/use-session-storage": "0.0.19",
30
+ "@usefy/use-on-click-outside": "0.0.19",
31
+ "@usefy/use-event-listener": "0.0.19",
32
+ "@usefy/use-timer": "0.0.19"
32
33
  },
33
34
  "peerDependencies": {
34
35
  "react": "^18.0.0 || ^19.0.0"