@oxyhq/services
Version:
Reusable OxyHQ module to handle authentication, user management, karma system, device-based session management and more 🚀
102 lines • 3.16 kB
TypeScript
/**
* React hook utilities for common patterns and state management
*/
/**
* Hook for managing async operations with loading, error, and data states
*/
export declare function useAsync<T>(asyncFn: () => Promise<T>, deps?: React.DependencyList): {
data: T | null;
loading: boolean;
error: Error | null;
execute: () => Promise<T>;
};
/**
* Hook for managing async operations that execute on mount
*/
export declare function useAsyncEffect<T>(asyncFn: () => Promise<T>, deps?: React.DependencyList): {
data: T | null;
loading: boolean;
error: Error | null;
};
/**
* Hook for debounced values
*/
export declare function useDebounce<T>(value: T, delay: number): T;
/**
* Hook for throttled values
*/
export declare function useThrottle<T>(value: T, delay: number): T;
/**
* Hook for previous value
*/
export declare function usePrevious<T>(value: T): T | undefined;
/**
* Hook for boolean state with toggle
*/
export declare function useToggle(initialValue?: boolean): {
value: boolean;
toggle: () => void;
setTrue: () => void;
setFalse: () => void;
setValue: import("react").Dispatch<import("react").SetStateAction<boolean>>;
};
/**
* Hook for counter state
*/
export declare function useCounter(initialValue?: number): {
count: number;
increment: () => void;
decrement: () => void;
reset: () => void;
setValue: (value: number) => void;
};
/**
* Hook for local storage
*/
export declare function useLocalStorage<T>(key: string, initialValue: T): readonly [T, (value: T | ((val: T) => T)) => void];
/**
* Hook for session storage
*/
export declare function useSessionStorage<T>(key: string, initialValue: T): readonly [T, (value: T | ((val: T) => T)) => void];
/**
* Hook for window size
*/
export declare function useWindowSize(): {
width: number;
height: number;
};
/**
* Hook for scroll position
*/
export declare function useScrollPosition(): number;
/**
* Hook for online/offline status
*/
export declare function useOnlineStatus(): boolean;
/**
* Hook for media queries
*/
export declare function useMediaQuery(query: string): boolean;
/**
* Hook for keyboard events
*/
export declare function useKeyPress(targetKey: string): boolean;
/**
* Hook for click outside detection
*/
export declare function useClickOutside(ref: React.RefObject<HTMLElement>, handler: () => void): void;
/**
* Hook for form validation
*/
export declare function useFormValidation<T extends Record<string, unknown>>(initialValues: T, validationSchema: (values: T) => Partial<Record<keyof T, string>>): {
values: T;
errors: Partial<Record<keyof T, string>>;
touched: Partial<Record<keyof T, boolean>>;
isValid: boolean;
setValue: (field: keyof T, value: T[keyof T]) => void;
setTouchedField: (field: keyof T) => void;
setValues: import("react").Dispatch<import("react").SetStateAction<T>>;
setErrors: import("react").Dispatch<import("react").SetStateAction<Partial<Record<keyof T, string>>>>;
setTouched: import("react").Dispatch<import("react").SetStateAction<Partial<Record<keyof T, boolean>>>>;
};
//# sourceMappingURL=hookUtils.d.ts.map