react-use-anywhere
Version:
Use React hooks anywhere in your codebase - in services, utilities, and business logic. Router-agnostic, hook-agnostic, and works with any React hooks (auth, navigation, state, custom hooks, etc.).
44 lines (42 loc) • 1.68 kB
TypeScript
import { default as React } from 'react';
import { HookContext, HookProviderProps, HookRegistry, ReactHook, TypedHookProviderProps } from '../types';
declare let globalHookRegistry: HookRegistry;
type RegisteredHooks = typeof globalHookRegistry;
/**
* Provider component that makes hooks available throughout your app
* Wrap your app with this provider and pass in your hooks
*/
export declare const HookProvider: <T extends Record<string, ReactHook<unknown>>>({ children, hooks, }: HookProviderProps<T>) => React.ReactElement;
/**
* 🆕 TYPE-SAFE PROVIDER: Provides compile-time hook name validation
*/
export declare const TypedHookProvider: <T extends Record<string, ReactHook<unknown>>>({ children, hooks, }: TypedHookProviderProps<T>) => React.ReactElement;
/**
* Hook to access the hook context
* Use this inside React components to get hook values
*/
export declare const useHookContext: () => HookContext;
/**
* 🆕 TYPE-SAFE CONTEXT HOOK: Returns typed hook context
*/
export declare function useTypedHookContext<T extends Record<string, ReactHook<unknown>>>(): {
[K in keyof T]: ExtractHookType<T[K]>;
};
/**
* Get type information about registered hooks (compile-time only)
*/
export type GetRegisteredHookTypes = RegisteredHooks;
/**
* Get the current hook registry (for internal use)
*/
export declare const getHookRegistry: () => HookRegistry;
/**
* Check if a hook name is registered
*/
export declare const isHookRegistered: (hookName: string) => boolean;
/**
* Get all registered hook names
*/
export declare const getRegisteredHookNames: () => string[];
type ExtractHookType<T> = T extends ReactHook<infer R> ? R : never;
export {};