import { createContext, useContext } from 'react' import type { Context } from 'react' export const createContextHook = (name: string): [ Context, () => T ] => { const contextValue = createContext(undefined) const useContextHook = (): T => { const value = useContext(contextValue) if (value === undefined) { throw Error(`use${name} can only be used within a ${name} context provider.`) } return value } return [contextValue, useContextHook] }