// src/utils/create-context.ts
import { hasProp, isFunction } from "@zag-js/utils";
import { createContext as createSolidContext, useContext as useSolidContext } from "solid-js";
function getErrorMessage(hook, provider) {
  return `${hook} returned \`undefined\`. Seems you forgot to wrap component within ${provider}`;
}
function createContext(options = {}) {
  const { strict = true, hookName = "useContext", providerName = "Provider", errorMessage, defaultValue } = options;
  const Context = createSolidContext(defaultValue);
  function useContext() {
    const context = useSolidContext(Context);
    if (!context && strict) {
      const error = new Error(errorMessage ?? getErrorMessage(hookName, providerName));
      error.name = "ContextError";
      if (hasProp(Error, "captureStackTrace") && isFunction(Error.captureStackTrace)) {
        Error.captureStackTrace(error, useContext);
      }
      throw error;
    }
    return context;
  }
  return [Context.Provider, useContext, Context];
}

export {
  createContext
};
