UNPKG

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.).

43 lines (42 loc) 1.68 kB
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 {};