Core Components
<AnySpend>
The primary interface component for token-to-token exchanges and fiat onramps.
// https://github.com/b3-fun/b3/blob/main/packages/sdk/src/anyspend/react/components/AnySpend.tsx
import { AnySpend } from "@b3dotfun/sdk/anyspend/react";
<AnySpend
mode="modal"
defaultActiveTab="crypto"
destinationTokenAddress="0x..."
destinationTokenChainId={8333}
recipientAddress="0x..."
hideTransactionHistoryButton={false}
/>;
Props
mode
'modal' | 'page'
default:"'modal'"
Display as modal overlay or full page
defaultActiveTab
'crypto' | 'fiat'
default:"'crypto'"
Initial payment method tab
Target token address for buy mode
Chain ID of destination token
hideTransactionHistoryButton
Hide transaction history access
Load specific order by ID
Usage Examples
<AnySpend
mode="page"
recipientAddress={userWalletAddress}
/>
A streamlined button component for NFT purchases with built-in payment handling.
import { AnySpendNFTButton } from "@b3dotfun/sdk/anyspend/react";
<AnySpendNFTButton nftContract={nftContractDetails} recipientAddress="0x..." />;
Props
NFT contract configuration object
Wallet address to receive the NFT
NFTContract Interface
interface NFTContract {
chainId: number; // Blockchain network ID
contractAddress: string; // NFT contract address
price: string; // Price in wei
priceFormatted: string; // Human-readable price
currency: {
chainId: number;
address: string; // Token contract (0x0 for native ETH)
name: string;
symbol: string;
decimals: number;
metadata: {
logoURI: string;
};
};
name: string; // NFT collection name
description: string; // NFT description
imageUrl: string; // Preview image URL
tokenId: number | null; // Token ID (null for ERC721, specific ID for ERC1155)
type: "erc721" | "erc1155"; // NFT contract type
}
Usage Example
const coolNFT = {
chainId: 8333,
contractAddress: "0x9c275ff1634519E9B5449ec79cd939B5F900564d",
price: "500000000000000000", // 0.5 ETH
priceFormatted: "0.5",
currency: {
chainId: 8333,
address: "0x0000000000000000000000000000000000000000",
name: "Ether",
symbol: "ETH",
decimals: 18,
metadata: {
logoURI: "https://assets.coingecko.com/coins/images/279/standard/ethereum.png?1696501628",
},
},
name: "Cool Art Collection",
description: "Unique digital artwork",
imageUrl: "https://example.com/nft-preview.png",
tokenId: null,
type: "erc721",
};
<AnySpendNFTButton nftContract={coolNFT} recipientAddress={userAddress} />;
<AnySpendCustom>
The most flexible component for custom smart contract interactions, including gaming, staking, and DeFi operations.
Custom Contract Interaction
// https://github.com/b3-fun/b3/blob/main/packages/sdk/src/anyspend/react/components/AnySpendCustom.tsx
import { AnySpendCustom } from "@b3dotfun/sdk/anyspend/react";
<AnySpendCustom
orderType="custom"
dstChainId={8333}
dstToken={tokenDetails}
dstAmount="1000000000000000000"
contractAddress="0x..."
encodedData="0x..."
spenderAddress="0x..."
metadata={customMetadata}
header={CustomHeaderComponent}
onSuccess={txHash => console.log("Custom action completed", txHash)}
/>;
Props
Target blockchain network
Token being used for payment
Amount in wei/smallest unit
Target smart contract address
Encoded function call data
Optional token spender address
Custom metadata for tracking
onSuccess
(txHash?: string) => void
Success callback with transaction hash
Usage Example - Staking
// Encode staking function call
const stakeAmount = "1000000000000000000"; // 1 token
const stakingCalldata = encodeFunctionData({
abi: stakingABI,
functionName: "stake",
args: [stakeAmount, 30], // 30 days
});
<AnySpendCustom
orderType="custom"
dstChainId={8333}
dstToken={stakingToken}
dstAmount={stakeAmount}
contractAddress="0xStakingContract..."
encodedData={stakingCalldata}
metadata={{
action: "stake",
duration: 30,
expectedRewards: "5.2%",
}}
header={({ anyspendPrice, isLoadingAnyspendPrice }) => (
<div className="staking-header">
<h2>Stake Tokens</h2>
<p>Duration: 30 days</p>
<p>Expected APY: 5.2%</p>
{!isLoadingAnyspendPrice && <p>Total Cost: ${anyspendPrice?.usdPrice}</p>}
</div>
)}
/>;
Specialized Components
<AnySpendNFT>
Enhanced NFT component with additional marketplace features.
// https://github.com/b3-fun/b3/blob/main/packages/sdk/src/anyspend/react/components/AnySpendNFT.tsx
<AnySpendNFT nftContract={nftDetails} recipientAddress="0x..." showMetadata={true} showPriceHistory={true} />
<AnySpendStakeB3>
Pre-configured component for B3 token staking.
// https://github.com/b3-fun/b3/blob/main/packages/sdk/src/anyspend/react/components/AnySpendStakeB3.tsx
<AnySpendStakeB3 stakeAmount="1000000000000000000" stakingDuration={30} recipientAddress="0x..." />
<AnySpendBuySpin>
Gaming-specific component for purchasing spin wheels or lottery tickets.
// https://github.com/b3-fun/b3/blob/main/packages/sdk/src/anyspend/react/components/AnySpendBuySpin.tsx
<AnySpendBuySpin gameContract="0x..." spinPrice="100000000000000000" recipientAddress="0x..." />
<AnySpendTournament>
Tournament entry payment component.
// https://github.com/b3-fun/b3/blob/main/packages/sdk/src/anyspend/react/components/AnySpendTournament.tsx
<AnySpendTournament tournamentId="tournament-123" entryFee="500000000000000000" recipientAddress="0x..." />
Component Styling
All components come with default styling that can be customized using CSS variables:
/* Override default styles */
.anyspend-modal {
--anyspend-primary: #6366f1;
--anyspend-secondary: #f3f4f6;
--anyspend-border-radius: 12px;
}
Component | React Web | React Native |
---|
AnySpend | ✅ | ✅ |
AnySpendNFTButton | ✅ | ✅ |
AnySpendCustom | ✅ | ✅ |
AnySpendNFT | ✅ | ✅ |
Fiat onramp features | ✅ | ❌ |
Next Steps