import { createContext, useContext, type ReactNode } from "react";
import type { HookProps } from "./types";

export const ReactPhxContext = createContext<HookProps | null>(null);

interface ReactPhxProviderProps extends HookProps {
  children: ReactNode;
}

export function ReactPhxProvider({
  children,
  ...props
}: ReactPhxProviderProps): React.JSX.Element {
  return (
    <ReactPhxContext.Provider value={props}>{children}</ReactPhxContext.Provider>
  );
}

export function useLiveReact(): HookProps {
  const ctx = useContext(ReactPhxContext);
  if (!ctx) {
    throw new Error("useLiveReact must be used within a ReactPhxProvider");
  }
  return ctx;
}
