"use client";
import type React from "react";
import { createContext, useContext } from "react";
import type { WalletId } from "../../../wallets/wallet-types.js";
/**
* Props for the WalletProvider component
* @component
* @wallet
*/
export type WalletProviderProps = {
id: WalletId;
};
/**
* @internal Exported for tests only
*/
export const WalletProviderContext = /* @__PURE__ */ createContext<
WalletProviderProps | undefined
>(undefined);
/**
* A React context provider component that supplies Wallet-related data to its child components.
*
* This component serves as a wrapper around the `WalletProviderContext.Provider` and passes
* the provided wallet data down to all of its child components through the context API.
*
* @example
* ### Basic usage
* ```tsx
* import { WalletProvider, WalletIcon, WalletName } from "thirdweb/react";
*
*
*
*
*
* ```
* @beta
* @component
* @wallet
*/
export function WalletProvider(
props: React.PropsWithChildren,
) {
return (
{props.children}
);
}
/**
* @internal
*/
export function useWalletContext() {
const ctx = useContext(WalletProviderContext);
if (!ctx) {
throw new Error(
"WalletProviderContext not found. Make sure you are using WalletIcon, WalletName, etc. inside a component",
);
}
return ctx;
}