From fd3d73b420cae89a1f78daae68fe667e6fc6fa54 Mon Sep 17 00:00:00 2001 From: Dan Cortes <3639170+dgca@users.noreply.github.com> Date: Thu, 12 Jun 2025 16:04:50 -0600 Subject: [PATCH] Migrate Mintlify docs project to base/docs --- .cursor/rules/mintlify.mdc | 368 + .github/workflows/chromatic.yml | 19 + .gitignore | 107 +- .nvmrc | 1 - .yarnrc.yml | 1 - README.md | 33 +- {docs/pages => _pages}/arbitration.mdx | 0 {docs/pages => _pages}/base-services-hub.mdx | 0 .../buildathons/2025-02-flash.mdx | 77 +- .../builderkits/agentkit/index.mdx | 0 .../builderkits/minikit/debugging.mdx | 15 +- .../builderkits/minikit/overview.mdx | 22 +- .../builderkits/minikit/quickstart.mdx | 117 +- .../builderkits/minikit/thinking-social.mdx | 5 +- .../api/build-deposit-to-morpho-tx.mdx | 5 +- .../onchainkit/api/build-mint-transaction.mdx | 11 +- .../onchainkit/api/build-swap-transaction.mdx | 11 +- .../api/build-withdraw-from-morpho-tx.mdx | 5 +- .../onchainkit/api/get-mint-details.mdx | 11 +- .../onchainkit/api/get-portfolios.mdx | 21 +- .../onchainkit/api/get-swap-quote.mdx | 11 +- .../onchainkit/api/get-token-details.mdx | 11 +- .../builderkits/onchainkit/api/get-tokens.mdx | 23 +- .../builderkits/onchainkit/api/types.mdx | 0 .../onchainkit/appchain/bridge.mdx | 28 +- .../builderkits/onchainkit/appchain/types.mdx | 0 .../builderkits/onchainkit/buy/buy.mdx | 16 +- .../builderkits/onchainkit/buy/types.mdx | 0 .../onchainkit/checkout/checkout.mdx | 130 +- .../builderkits/onchainkit/checkout/types.mdx | 0 .../builderkits/onchainkit/config/is-base.mdx | 37 + .../onchainkit/config/is-ethereum.mdx | 37 + .../onchainkit/config/onchainkit-provider.mdx | 5 +- .../config/supplemental-providers.mdx | 8 +- .../builderkits/onchainkit/config/types.mdx | 0 .../create-a-basename-profile-component.mdx | 5 +- .../builderkits/onchainkit/earn/earn.mdx | 17 +- .../builderkits/onchainkit/earn/types.mdx | 0 .../onchainkit/fund/fetch-onramp-config.mdx | 11 +- .../onchainkit/fund/fetch-onramp-options.mdx | 11 +- .../onchainkit/fund/fetch-onramp-quote.mdx | 11 +- .../fund/fetch-onramp-transaction-status.mdx | 11 +- .../onchainkit/fund/fund-button.mdx | 120 +- .../builderkits/onchainkit/fund/fund-card.mdx | 25 +- .../onchainkit/fund/get-onramp-buy-url.mdx | 11 +- .../fund/setup-onramp-event-listeners.mdx | 11 +- .../builderkits/onchainkit/fund/types.mdx | 0 .../onchainkit/getting-started.mdx | 14 +- .../onchainkit/guides/ai-prompting-guide.mdx | 7 +- .../onchainkit/guides/build-onchain-apps.mdx | 98 + .../onchainkit/guides/contribution.mdx | 0 .../onchainkit/guides/lifecycle-status.mdx | 0 .../onchainkit/guides/reporting-bug.mdx | 22 +- .../onchainkit/guides/tailwind.mdx | 100 + .../onchainkit/guides/telemetry.mdx | 0 .../builderkits/onchainkit/guides/themes.mdx | 0 .../onchainkit/guides/troubleshooting.mdx | 5 +- .../guides/use-basename-in-onchain-app.mdx | 29 +- .../guides/using-ai-powered-ides.mdx | 0 .../hooks/use-build-deposit-to-morpho-tx.mdx | 5 +- .../use-build-withdraw-from-morpho-tx.mdx | 5 +- .../onchainkit/hooks/use-earn-context.mdx | 5 +- .../onchainkit/hooks/use-mint-details.mdx | 11 +- .../onchainkit/hooks/use-morpho-vault.mdx | 5 +- .../onchainkit/hooks/use-token-details.mdx | 11 +- .../onchainkit/identity/address.mdx | 5 +- .../onchainkit/identity/avatar.mdx | 5 +- .../builderkits/onchainkit/identity/badge.mdx | 11 +- .../onchainkit/identity/get-address.mdx | 16 +- .../onchainkit/identity/get-attestations.mdx | 11 +- .../onchainkit/identity/get-avatar.mdx | 16 +- .../onchainkit/identity/get-avatars.mdx | 23 +- .../onchainkit/identity/get-name.mdx | 23 +- .../onchainkit/identity/get-names.mdx | 23 +- .../onchainkit/identity/identity-card.mdx | 0 .../onchainkit/identity/identity.mdx | 0 .../builderkits/onchainkit/identity/name.mdx | 5 +- .../onchainkit/identity/socials.mdx | 0 .../builderkits/onchainkit/identity/types.mdx | 0 .../onchainkit/identity/use-address.mdx | 5 +- .../onchainkit/identity/use-avatar.mdx | 5 +- .../onchainkit/identity/use-avatars.mdx | 17 +- .../onchainkit/identity/use-name.mdx | 17 +- .../onchainkit/identity/use-names.mdx | 17 +- .../builderkits/onchainkit/installation.mdx | 2 +- .../onchainkit/installation/astro.mdx | 198 + .../onchainkit/installation/nextjs.mdx | 175 + .../onchainkit/installation/remix.mdx | 196 + .../onchainkit/installation/vite.mdx | 158 + .../builderkits/onchainkit/mint/nft-card.mdx | 89 +- .../onchainkit/mint/nft-mint-card.mdx | 92 +- .../builderkits/onchainkit/mint/types.mdx | 0 .../onchainkit/paymaster/erc20-paymaster.mdx | 0 .../onchainkit/paymaster/errors.mdx | 0 .../gasless-transactions-with-paymaster.mdx | 51 +- .../paymaster/how-to-contribute.mdx | 0 .../onchainkit/paymaster/quickstart-guide.mdx | 0 .../paymaster/quickstart-headless.mdx | 0 .../onchainkit/paymaster/security.mdx | 0 .../onchainkit/paymaster/troubleshooting.mdx | 0 .../onchainkit/paymaster/welcome.mdx | 0 .../builderkits/onchainkit/restricted.mdx | 0 .../onchainkit/signature/signature.mdx | 6 +- .../onchainkit/signature/types.mdx | 0 .../onchainkit/swap/swap-settings.mdx | 0 .../builderkits/onchainkit/swap/swap.mdx | 6 +- .../builderkits/onchainkit/swap/types.mdx | 0 .../onchainkit/token/format-amount.mdx | 11 +- .../onchainkit/token/token-chip.mdx | 5 +- .../onchainkit/token/token-image.mdx | 5 +- .../onchainkit/token/token-row.mdx | 5 +- .../onchainkit/token/token-search.mdx | 5 +- .../token/token-select-dropdown.mdx | 5 +- .../builderkits/onchainkit/token/types.mdx | 0 .../onchainkit/transaction/transaction.mdx | 397 + .../onchainkit/transaction/types.mdx | 0 .../use-coinbase-smart-wallet-and-eoas.mdx | 17 +- .../wallet/is-valid-aa-entrypoint.mdx | 11 +- .../is-wallet-a-coinbase-smart-wallet.mdx | 11 +- .../builderkits/onchainkit/wallet/types.mdx | 0 .../wallet/wallet-dropdown-basename.mdx | 5 +- .../wallet/wallet-dropdown-disconnect.mdx | 5 +- .../wallet/wallet-dropdown-fund-link.mdx | 7 +- .../wallet/wallet-dropdown-link.mdx | 5 +- .../onchainkit/wallet/wallet-island.mdx | 15 +- .../onchainkit/wallet/wallet-modal.mdx | 126 +- .../builderkits/onchainkit/wallet/wallet.mdx | 315 +- .../chain/account-abstraction.md | 0 .../chain/account-abstraction.mdx | 0 .../chain/app-blocklist.mdx | 0 .../pages => _pages}/chain/base-contracts.mdx | 0 .../chain/block-explorers.mdx | 0 .../chain/bridge-an-l1-token-to-base.mdx | 0 .../chain/bridges-mainnet.mdx | 9 +- .../chain/builder-anniversary-nft.mdx | 0 {docs/pages => _pages}/chain/contracts.mdx | 5 +- {docs/pages => _pages}/chain/cross-chain.md | 0 {docs/pages => _pages}/chain/cross-chain.mdx | 0 {docs/pages => _pages}/chain/data-indexers.md | 0 .../pages => _pages}/chain/data-indexers.mdx | 0 .../decentralizing-base-with-optimism.mdx | 5 + .../chain/deploy-on-base-quickstart.mdx | 20 +- .../differences-between-ethereum-and-base.mdx | 0 {docs/pages => _pages}/chain/fees.mdx | 0 {docs/pages => _pages}/chain/flashblocks.mdx | 0 {docs/pages => _pages}/chain/index.mdx | 0 .../chain/network-faucets.mdx | 40 +- .../chain/network-information.mdx | 10 +- .../pages => _pages}/chain/node-providers.mdx | 0 {docs/pages => _pages}/chain/onboarding.mdx | 0 {docs/pages => _pages}/chain/onramps.mdx | 0 {docs/pages => _pages}/chain/oracles.mdx | 5 +- {docs/pages => _pages}/chain/registry-api.mdx | 5 +- {docs/pages => _pages}/chain/registry-faq.mdx | 0 .../report.md => _pages/chain/report.mdx | 0 .../chain/run-a-base-node.mdx | 20 +- .../chain/security-council.mdx | 0 _pages/chain/security.mdx | 5 + .../chain/using-base.mdx | 0 .../wallet.md => _pages/chain/wallet.mdx | 14 +- .../why-base.md => _pages/chain/why-base.mdx | 2 +- _pages/cookbook/IPFS/deploy-with-fleek.mdx | 183 + ...unt-abstraction-on-base-using-biconomy.mdx | 319 + ...raction-on-base-using-particle-network.mdx | 588 + ...ase-using-privy-and-the-base-paymaster.mdx | 734 + .../gasless-transactions-with-paymaster.mdx | 360 + .../introduction-to-providers.mdx | 297 + .../cookbook/client-side-development/viem.mdx | 20 +- .../cookbook/client-side-development/web3.mdx | 112 + .../bridge-tokens-with-layerzero.mdx | 70 +- ...essages-and-tokens-from-base-chainlink.mdx | 612 + .../cookbook/nfts/complex-onchain-nfts.mdx | 15 +- .../cookbook/nfts/dynamic-nfts.mdx | 0 .../cookbook/nfts/signature-mint.mdx | 23 +- .../cookbook/nfts/simple-onchain-nfts.mdx | 10 +- .../nfts/thirdweb-unreal-nft-items.mdx | 59 +- .../foundry/deploy-with-foundry.mdx | 314 + .../generate-random-numbers-contracts.mdx | 408 + .../foundry/setup-with-base.mdx | 0 .../foundry/testing-smart-contracts.mdx | 0 .../foundry/verify-contract-with-basescan.mdx | 296 + .../hardhat/analyzing-test-coverage.mdx | 0 .../hardhat/debugging-smart-contracts.mdx | 0 .../hardhat/deploy-with-hardhat.mdx | 27 +- .../hardhat/optimizing-gas-usage.mdx | 0 .../hardhat/reducing-contract-size.mdx | 0 .../remix/deploy-with-remix.mdx | 27 +- .../tenderly/deploy-with-tenderly.mdx | 15 +- .../thirdweb/build-with-thirdweb.mdx | 10 +- .../thirdweb/deploy-with-thirdweb.mdx | 5 +- .../thirdweb/thirdweb-cli.mdx | 15 +- .../thirdweb/thirdweb-sdk.mdx | 10 +- .../gate-irl-events-with-nouns.mdx | 12 +- .../cookbook/use-case-guides/cast-actions.mdx | 5 +- .../commerce/build-an-ecommerce-app.mdx | 6 +- .../commerce/deploy-a-shopify-storefront.mdx | 20 +- .../create-email-campaigns.mdx | 20 +- .../convert-farcaster-frame-to-open-frame.mdx | 17 +- .../creator/nft-minting-with-zora.mdx | 5 +- .../use-case-guides/deploy-to-vercel.mdx | 10 +- ...-real-time-asset-data-pyth-price-feeds.mdx | 248 + .../access-real-world-data-chainlink.mdx | 232 + .../build-a-smart-wallet-funding-app.mdx | 164 + .../use-case-guides/gating-and-redirects.mdx | 5 +- .../cookbook/use-case-guides/hyperframes.mdx | 5 +- .../cookbook/use-case-guides/nft-minting.mdx | 22 +- .../use-case-guides/no-code-minting.mdx | 0 .../cookbook/use-case-guides/transactions.mdx | 10 +- {docs/pages => _pages}/cookie-policy.mdx | 0 {docs/pages => _pages}/docs.mdx | 0 _pages/feedback.mdx | 4 + .../identity/basenames/basenames-faq.mdx | 10 +- .../basenames-onchainkit-tutorial.mdx | 7 +- .../basenames/basenames-wagmi-tutorial.mdx | 17 +- {docs/pages => _pages}/identity/index.mdx | 0 .../identity/mobile-wallet-protocol/batch.mdx | 5 +- .../mobile-wallet-protocol/encryption.mdx | 5 +- .../mobile-wallet-protocol/handshake.mdx | 5 +- .../messages-example.mdx | 0 .../messages-request.mdx | 5 +- .../messages-response.mdx | 5 +- .../mobile-wallet-protocol/messages.mdx | 5 +- .../mobile-wallet-protocol/multi-chain.mdx | 5 +- .../mobile-wallet-protocol/network.mdx | 5 +- .../mobile-wallet-protocol/spec-overview.mdx | 0 .../mobile-wallet-protocol/verification.mdx | 5 +- .../concepts/base-gasless-campaign.mdx | 5 +- .../concepts/features/built-in/MagicSpend.mdx | 5 +- .../concepts/features/built-in/networks.mdx | 7 +- .../concepts/features/built-in/passkeys.mdx | 8 +- .../features/built-in/recovery-keys.mdx | 7 +- .../features/built-in/single-sign-on.mdx | 5 +- .../features/optional/batch-operations.mdx | 5 +- .../features/optional/custom-gas-tokens.mdx | 5 +- .../optional/gas-free-transactions.mdx | 5 +- .../features/optional/spend-permissions.mdx | 5 +- .../features/optional/sub-accounts.mdx | 12 +- .../concepts/usage-details/gas-usage.mdx | 5 +- .../concepts/usage-details/popups.mdx | 5 +- .../concepts/usage-details/self-calls.mdx | 5 +- .../usage-details/signature-verification.mdx | 5 +- .../concepts/usage-details/simulations.mdx | 5 +- .../usage-details/wallet-library-support.mdx | 5 +- .../concepts/what-is-smart-wallet.mdx | 5 +- .../contribute-to-smart-wallet-docs.mdx | 26 +- .../contribute/security-and-bug-bounty.mdx | 5 +- .../smart-wallet/examples/coin-a-joke-app.mdx | 12 +- .../guides/batch-transactions.mdx | 183 + .../components/create-wallet-button.mdx | 21 +- .../smart-wallet/guides/erc20-paymasters.mdx | 5 +- .../smart-wallet/guides/magic-spend.mdx | 5 +- .../smart-wallet/guides/paymasters.mdx | 262 + .../guides/signature-verification.mdx | 5 +- .../guides/signing-and-verifying-messages.mdx | 25 +- _pages/identity/smart-wallet/guides/siwe.mdx | 202 + .../smart-wallet/guides/spend-permissions.mdx | 619 + .../guides/sub-accounts/index.mdx | 2 +- .../guides/sub-accounts/setup.mdx | 15 +- .../sub-accounts/using-sub-accounts.mdx | 2 +- .../guides/tips/inspect-txn-simulation.mdx | 5 +- .../smart-wallet/guides/tips/popup-tips.mdx | 5 +- .../ai-tools-available-for-devs.mdx | 5 +- .../smart-wallet/quickstart/index.mdx | 5 +- .../quickstart/nextjs-project.mdx | 20 +- .../smart-wallet/quickstart/quick-demo.mdx | 14 +- .../quickstart/react-native-project.mdx | 56 +- .../sdk/CoinbaseWalletProvider/Overview.mdx | 103 + .../CoinbaseWalletProvider/eth_accounts.mdx | 5 +- .../eth_blockNumber.mdx | 5 +- .../CoinbaseWalletProvider/eth_chainId.mdx | 5 +- .../CoinbaseWalletProvider/eth_coinbase.mdx | 5 +- .../eth_estimateGas.mdx | 5 +- .../CoinbaseWalletProvider/eth_feeHistory.mdx | 5 +- .../CoinbaseWalletProvider/eth_gasPrice.mdx | 5 +- .../CoinbaseWalletProvider/eth_getBalance.mdx | 5 +- .../eth_getBlockByHash.mdx | 5 +- .../eth_getBlockByNumber.mdx | 5 +- .../eth_getBlockTransactionCountByHash.mdx | 5 +- .../eth_getBlockTransactionCountByNumber.mdx | 5 +- .../CoinbaseWalletProvider/eth_getCode.mdx | 5 +- .../CoinbaseWalletProvider/eth_getLogs.mdx | 5 +- .../CoinbaseWalletProvider/eth_getProof.mdx | 5 +- .../eth_getStorageAt.mdx | 5 +- .../eth_getTransactionByBlockHashAndIndex.mdx | 5 +- ...th_getTransactionByBlockNumberAndIndex.mdx | 5 +- .../eth_getTransactionByHash.mdx | 5 +- .../eth_getTransactionCount.mdx | 5 +- .../eth_getTransactionReceipt.mdx | 5 +- .../eth_getUncleCountByBlockHash.mdx | 5 +- .../eth_getUncleCountByBlockNumber.mdx | 5 +- .../eth_requestAccounts.mdx | 5 +- .../eth_sendRawTransaction.mdx | 5 +- .../eth_sendTransaction.mdx | 5 +- .../eth_signTypedData_v4.mdx | 5 +- .../CoinbaseWalletProvider/personal_sign.mdx | 5 +- .../request-overview.mdx | 96 + .../CoinbaseWalletProvider/sdk-overview.mdx | 14 + .../wallet_addEthereumChain.mdx | 5 +- .../wallet_addSubAccount.mdx | 5 +- .../CoinbaseWalletProvider/wallet_connect.mdx | 5 +- .../wallet_switchEthereumChain.mdx | 5 +- .../wallet_watchAsset.mdx | 5 +- .../web3_clientVersion.mdx | 5 +- .../technical-reference/sdk/index.mdx | 22 +- .../sdk/sub-account-reference.mdx | 12 +- .../coinbase-fetchpermissions.mdx | 115 + .../spendpermissionmanager.mdx | 11 +- .../adding-tokens-to-coinbase-wallet.mdx | 14 +- .../wallet-sdk/android-api-reference.mdx | 6 +- .../android-establishing-a-connection.mdx | 6 +- .../identity/wallet-sdk/android-install.mdx | 0 .../wallet-sdk/android-making-requests.mdx | 0 .../identity/wallet-sdk/android-setup.mdx | 12 +- .../wallet-sdk/developer-settings.mdx | 15 +- .../wallet-sdk/disconnecting-links.mdx | 0 .../identity/wallet-sdk/environments.mdx | 0 .../identity/wallet-sdk/errors.mdx | 0 .../existing-welcome-page-features.mdx | 5 + .../identity/wallet-sdk/faq.mdx | 0 .../wallet-sdk/getting-eth-accounts.mdx | 6 +- .../wallet-sdk/injected-provider-guidance.mdx | 0 .../identity/wallet-sdk/injected-provider.mdx | 0 .../identity/wallet-sdk/installing.mdx | 5 +- .../identity/wallet-sdk/ios-api-reference.mdx | 0 .../ios-establishing-a-connection.mdx | 0 .../identity/wallet-sdk/ios-install.mdx | 0 .../wallet-sdk/ios-making-requests.mdx | 0 .../identity/wallet-sdk/ios-setup.mdx | 0 .../message-payment-xmtp-content-type.mdx | 5 +- ...bile-dapp-integration-via-deep-linking.mdx | 5 + .../wallet-sdk/mobile-sdk-overview.mdx | 5 +- .../wallet-sdk/sample-applications.mdx | 0 .../identity/wallet-sdk/setup.mdx | 10 +- _pages/identity/wallet-sdk/smart-wallet.mdx | 6 + .../wallet-sdk/solana-adapter-guide.mdx | 15 +- .../wallet-sdk/solana-connecting-accounts.mdx | 0 .../identity/wallet-sdk/solana-overview.mdx | 0 .../wallet-sdk/solana-provider-api.mdx | 15 +- .../identity/wallet-sdk/solana-provider.mdx | 5 +- .../solana-sending-transactions.mdx | 5 +- .../wallet-sdk/solana-signing-messages.mdx | 5 +- .../wallet-sdk/solana-wallet-adapter.mdx | 0 .../wallet-sdk/supported-environments.mdx | 5 + .../identity/wallet-sdk/sw-rainbowkit.mdx | 0 .../identity/wallet-sdk/sw-setup.mdx | 5 +- .../identity/wallet-sdk/switching-chains.mdx | 0 .../identity/wallet-sdk/tracking-assets.mdx | 0 _pages/identity/wallet-sdk/ux-guidelines.mdx | 6 + .../identity/wallet-sdk/ux-tips.mdx | 5 +- .../identity/wallet-sdk/wallet-features.mdx | 0 .../identity/wallet-sdk/wallet-mobile-sdk.mdx | 5 + .../wallet-sdk-existing-section.mdx | 5 + .../wallet-sdk/wallet-sdk-mobile-sdk.mdx | 5 + .../identity/wallet-sdk/welcome.mdx | 7 +- .../wallet-sdk/whitelisted-networks.mdx | 0 _pages/identity/wallet-sdk/xmtp.mdx | 5 + {docs/pages => _pages}/index.mdx | 4 +- .../address-and-payable.mdx | 0 .../function-modifiers-vid.mdx | 2 +- .../advanced-functions/function-modifiers.mdx | 10 +- .../function-visibility-vid.mdx | 2 +- .../function-visibility.mdx | 5 +- .../learn/arrays/array-storage-layout-vid.mdx | 2 +- .../learn/arrays/arrays-exercise.mdx | 20 +- .../learn/arrays/arrays-in-solidity-vid.mdx | 2 +- .../learn/arrays/arrays-in-solidity.mdx | 0 .../learn/arrays/filtering-an-array-sbs.mdx | 5 +- .../learn/arrays/fixed-size-arrays-vid.mdx | 2 +- .../arrays/writing-arrays-in-solidity-vid.mdx | 2 +- .../basic-functions-exercise.mdx | 5 +- .../basic-types.mdx | 7 +- .../hello-world-step-by-step.mdx | 0 .../intro-to-contracts-vid.mdx | 2 +- .../control-structures-exercise.mdx | 5 +- .../control-structures/control-structures.mdx | 10 +- .../learn/control-structures/loops-vid.mdx | 2 +- .../require-revert-error-vid.mdx | 2 +- .../standard-control-structures-vid.mdx | 2 +- .../contract-verification-sbs.mdx | 5 +- .../deployment-to-base-sepolia-sbs.mdx | 12 +- .../deployment-to-testnet-exercise.mdx | 10 +- .../overview-of-test-networks-vid.mdx | 2 +- .../deployment-to-testnet/test-networks.mdx | 0 .../learn/development-tools/overview.mdx | 0 .../erc-20-token/analyzing-erc-20-vid.mdx | 2 +- .../learn/erc-20-token/erc-20-exercise.mdx | 31 +- .../learn/erc-20-token/erc-20-standard.mdx | 0 .../learn/erc-20-token/erc-20-testing-vid.mdx | 2 +- .../learn/erc-20-token/erc-20-token-sbs.mdx | 5 +- .../erc-20-token/openzeppelin-erc-20-vid.mdx | 2 +- .../learn/erc-721-token/erc-721-exercise.mdx | 17 +- .../erc-721-token/erc-721-on-opensea-vid.mdx | 2 +- .../learn/erc-721-token/erc-721-sbs.mdx | 12 +- .../erc-721-token/erc-721-standard-video.mdx | 2 +- .../learn/erc-721-token/erc-721-standard.mdx | 0 .../implementing-an-erc-721-vid.mdx | 2 +- .../openzeppelin-erc-721-vid.mdx | 2 +- .../error-triage-exercise-source.sol | 0 .../error-triage/error-triage-exercise.mdx | 5 +- .../learn/error-triage/error-triage-vid.mdx | 2 +- .../learn/error-triage/error-triage.mdx | 22 +- .../ethereum-virtual-machine/evm-diagram.mdx | 0 .../learn/etherscan/etherscan-sbs.mdx | 5 +- .../learn/etherscan/etherscan-vid.mdx | 2 +- .../learn/events/hardhat-events-sbs.mdx | 5 +- .../learn/exercise-contracts.mdx | 0 .../building-an-onchain-app.mdx | 32 +- .../learn/frontend-setup/overview.mdx | 0 .../frontend-setup/wallet-connectors.mdx | 10 +- .../learn/hardhat-deploy/deployment-vid.mdx | 11 + .../hardhat-deploy/hardhat-deploy-sbs.mdx | 262 + .../installing-hardhat-deploy-vid.mdx | 11 + .../setup-deploy-script-vid.mdx | 11 + .../test-network-configuration-vid.mdx | 11 + .../testing-our-deployment-vid.mdx | 11 + .../learn/hardhat-forking/hardhat-forking.mdx | 0 .../hardhat-forking/mainnet-forking-vid.mdx | 11 + .../creating-a-project-vid.mdx | 2 +- .../hardhat-overview-vid.mdx | 2 +- .../hardhat-setup-overview-sbs.mdx | 0 .../contract-abi-and-testing-vid.mdx | 11 + .../hardhat-testing/hardhat-testing-sbs.mdx | 0 .../hardhat-testing/testing-overview-vid.mdx | 11 + .../hardhat-testing/writing-tests-vid.mdx | 11 + .../hardhat-tools-and-testing/overview.mdx | 0 .../hardhat-verify/hardhat-verify-sbs.mdx | 0 .../hardhat-verify/hardhat-verify-vid.mdx | 11 + .../learn/help-on-discord.mdx | 0 .../learn/imports/imports-exercise.mdx | 15 +- .../learn/imports/imports-sbs.mdx | 5 +- .../learn/imports/imports-vid.mdx | 2 +- .../inheritance/abstract-contracts-sbs.mdx | 0 .../inheritance/abstract-contracts-vid.mdx | 2 +- .../inheritance/inheritance-exercise.mdx | 15 +- .../learn/inheritance/inheritance-sbs.mdx | 0 .../learn/inheritance/inheritance-vid.mdx | 2 +- .../inheritance/multiple-inheritance-vid.mdx | 2 +- .../inheritance/multiple-inheritance.mdx | 0 .../calling-another-contract-vid.mdx | 7 +- .../contract-to-contract-interaction.mdx | 5 +- .../interfaces/intro-to-interfaces-vid.mdx | 7 +- .../interfaces/testing-the-interface-vid.mdx | 7 +- .../intro-to-tokens/intro-to-tokens-vid.mdx | 2 +- .../misconceptions-about-tokens-vid.mdx | 2 +- .../learn/intro-to-tokens/tokens-overview.mdx | 0 .../ethereum-applications.mdx | 0 .../ethereum-dev-overview-vid.mdx | 2 +- .../introduction-to-ethereum/evm-diagram.mdx | 5 +- .../gas-use-in-eth-transactions.mdx | 0 .../intro-to-ethereum-vid.mdx | 2 +- .../anatomy-of-a-smart-contract-vid.mdx | 2 +- .../deployment-in-remix-vid.mdx | 2 +- .../deployment-in-remix.mdx | 0 .../introduction-to-remix-vid.mdx | 2 +- .../introduction-to-remix.mdx | 5 +- .../introduction-to-solidity-overview.mdx | 0 .../introduction-to-solidity-vid.mdx | 2 +- .../solidity-overview.mdx | 7 +- _pages/learn/learning-objectives.mdx | 258 + .../mappings/how-mappings-are-stored-vid.mdx | 2 +- .../learn/mappings/mappings-exercise.mdx | 5 +- .../learn/mappings/mappings-sbs.mdx | 0 .../learn/mappings/mappings-vid.mdx | 2 +- .../learn/mappings/using-msg-sender-vid.mdx | 2 +- .../creating-a-minimal-token-vid.mdx | 2 +- .../minimal-tokens/minimal-token-sbs.mdx | 5 +- .../minimal-tokens-exercise.mdx | 10 +- .../transferring-a-minimal-token-vid.mdx | 2 +- .../creating-a-new-contract-vid.mdx | 2 +- .../new-keyword/new-keyword-exercise.mdx | 15 +- .../learn/new-keyword/new-keyword-sbs.mdx | 5 +- .../configuring-useReadContract.mdx | 5 +- .../useAccount.mdx | 0 .../useReadContract.mdx | 15 +- .../learn/storage/how-storage-works-video.mdx | 2 +- .../learn/storage/how-storage-works.mdx | 0 .../learn/storage/simple-storage-sbs.mdx | 5 +- .../learn/storage/simple-storage-video.mdx | 2 +- .../learn/storage/storage-exercise.mdx | 12 +- .../learn/structs/structs-exercise.mdx | 5 +- .../learn/structs/structs-sbs.mdx | 0 .../learn/structs/structs-vid.mdx | 2 +- {docs/pages => _pages}/learn/welcome.mdx | 3 +- .../useSimulateContract.mdx | 0 .../writing-to-contracts/useWriteContract.mdx | 15 +- .../privacy-policy.mdx | 0 _pages/quickstart.mdx | 250 + .../terms-of-service.mdx | 0 _pages/use-cases/accept-crypto-payments.mdx | 231 + _pages/use-cases/ai-instructions/eliza.mdx | 23 + .../ai-instructions/langchain-local.mdx | 65 + .../ai-instructions/langchain-replit.mdx | 30 + .../use-cases/decentralize-social-app.mdx | 59 +- .../use-cases/defi-your-app.mdx | 48 +- .../pages => _pages}/use-cases/go-gasless.mdx | 41 +- .../use-cases/launch-ai-agents.mdx | 0 .../use-cases/onboard-any-user.mdx | 154 +- .../pages => _pages}/wallet-app/mini-apps.mdx | 10 +- api/submitFeedback.ts | 73 - contexts/Theme.tsx | 62 - docs.json | 402 + docs/_docs.json | 550 + docs/base-chain/flashblocks/apps.mdx | 195 + .../base-chain/flashblocks/node-providers.mdx | 48 + .../network-information/base-contracts.mdx | 131 + .../diffs-ethereum-base.mdx | 16 + .../ecosystem-contracts.mdx | 81 + .../network-information/network-fees.mdx | 28 + .../node-operators/performance-tuning.mdx | 103 + .../node-operators/run-a-base-node.mdx | 113 + docs/base-chain/node-operators/snapshots.mdx | 78 + .../node-operators/troubleshooting.mdx | 130 + docs/base-chain/quickstart/bridge-token.mdx | 27 + .../quickstart/connecting-to-base.mdx | 35 + docs/base-chain/quickstart/deploy-on-base.mdx | 143 + docs/base-chain/quickstart/why-base.mdx | 79 + .../security/avoid-malicious-flags.mdx | 33 + docs/base-chain/security/bug-bounty.mdx | 3 + .../security/report-vulnerability.mdx | 19 + docs/base-chain/security/security-council.mdx | 141 + docs/base-chain/tools/account-abstraction.mdx | 53 + docs/base-chain/tools/base-products.mdx | 24 + docs/base-chain/tools/block-explorers.mdx | 59 + docs/base-chain/tools/cross-chain.mdx | 77 + docs/base-chain/tools/data-indexers.mdx | 209 + docs/base-chain/tools/network-faucets.mdx | 75 + docs/base-chain/tools/node-providers.mdx | 197 + .../base-chain/tools/onchain-registry-api.mdx | 157 + docs/base-chain/tools/onramps.mdx | 28 + docs/base-chain/tools/oracles.mdx | 141 + docs/base-chain/tools/tokens-in-wallet.mdx | 129 + docs/components/App.tsx | 75 - docs/config/guides.ts | 16 - docs/constants.ts | 1 - docs/contexts/AppProviders.tsx | 14 - docs/contexts/CookieBannerWrapper.tsx | 71 - docs/cookbook/accept-crypto-payments.mdx | 394 + docs/cookbook/ai-prompting.mdx | 10 + docs/cookbook/base-builder-mcp.mdx | 10 + docs/cookbook/defi-your-app.mdx | 326 + .../defi/access-real-time-asset-data.mdx | 7 + docs/cookbook/defi/access-real-world-data.mdx | 7 + docs/cookbook/defi/add-in-app-funding.mdx | 7 + docs/cookbook/deploy-a-chain.mdx | 286 + docs/cookbook/go-gasless.mdx | 406 + docs/cookbook/growth/cast-actions.mdx | 6 + docs/cookbook/growth/deploy-to-vercel.mdx | 6 + docs/cookbook/growth/email-campaigns.mdx | 6 + docs/cookbook/growth/gating-and-redirects.mdx | 6 + docs/cookbook/growth/hyperframes.mdx | 6 + docs/cookbook/growth/retaining-users.mdx | 6 + docs/cookbook/launch-ai-agents.mdx | 460 + docs/cookbook/launch-tokens.mdx | 423 + docs/cookbook/nfts/complex-onchain-nfts.mdx | 6 + docs/cookbook/nfts/dynamic-nfts.mdx | 6 + docs/cookbook/nfts/nft-minting-zora.mdx | 6 + docs/cookbook/nfts/signature-mint.mdx | 6 + docs/cookbook/nfts/simple-onchain-nfts.mdx | 619 + .../nfts/thirdweb-unreal-nft-items.mdx | 6 + docs/cookbook/onboard-any-user.mdx | 143 + docs/cookbook/onchain-social.mdx | 374 + .../cookbook/payments/build-ecommerce-app.mdx | 6 + .../payments/deploy-shopify-storefront.mdx | 6 + docs/cookbook/payments/transaction-guide.mdx | 6 + .../social/convert-farcaster-frame.mdx | 436 + .../social/farcaster-nft-minting-guide.mdx | 419 + .../social/farcaster-no-code-nft-minting.mdx | 6 + docs/custom.css | 34 + docs/docs.json | 1028 + docs/footer.tsx | 26 - docs/get-started/ai-prompting.mdx | 9 + docs/get-started/base.mdx | 85 + docs/get-started/build-app.mdx | 250 + docs/get-started/concepts.mdx | 13 + docs/get-started/deploy-chain.mdx | 286 + docs/get-started/deploy-smart-contracts.mdx | 144 + docs/get-started/get-funded.mdx | 205 + docs/get-started/launch-token.mdx | 423 + docs/get-started/products.mdx | 19 + docs/get-started/prompt-library.mdx | 9 + docs/get-started/use-cases.mdx | 24 + docs/get-started/use-cases/agents.mdx | 3 + docs/get-started/use-cases/defi.mdx | 3 + docs/get-started/use-cases/gasless.mdx | 3 + docs/get-started/use-cases/onboarding.mdx | 3 + docs/get-started/use-cases/payments.mdx | 3 + docs/get-started/use-cases/social.mdx | 3 + docs/iframe-theme.js | 62 + .../account-abstraction/privy-console.png | Bin .../privy-dashboard-page.png | Bin .../privy-login-methods.png | Bin .../account-abstraction/privy-login-modal.png | Bin .../account-abstraction/privy-login-page.png | Bin docs/{public => }/images/base-docs-og.png | Bin .../basename-profile-home.png | Bin .../basenames-frame-final.png | Bin .../basenames-tutorial/basenames-homepage.png | Bin .../confirm-textrecord-update.png | Bin .../images/basenames-tutorial/confirm-txn.png | Bin .../edit-basename-profile.png | Bin .../basenames-tutorial/final-basename.png | Bin .../basenames-tutorial/frame-preview.png | Bin .../basenames-tutorial/frames-selector.png | Bin .../basenames-tutorial/preview-frame.png | Bin .../profile-component-dropdown.png | Bin .../basenames-tutorial/show-preview.png | Bin .../images/basenames-tutorial/try-now.png | Bin .../images/build-with-nouns/auction.png | Bin .../images/build-with-nouns/create-dao.png | Bin .../build-with-thirdweb/car-color-nft.gif | Bin .../build-with-thirdweb/deploy-contract.png | Bin .../build-with-thirdweb/get-nft-colors.png | Bin .../hex-to-linear-color.png | Bin .../import-image-instance.png | Bin .../images/build-with-thirdweb/mint-nft.png | Bin .../open-thirdweb-manager.png | Bin .../open-unreal-project.png | Bin .../build-with-thirdweb/perform-nft-claim.png | Bin .../build-with-thirdweb/play-button.png | Bin .../images/build-with-thirdweb/scene-game.png | Bin .../token-airdrop-dashboard.png | Bin .../images/build-with-zora/cdp-pick-node.png | Bin .../images/build-with-zora/dashboard.png | Bin .../builder-anniversary-nft-preview.webp | Bin .../add-project-information.png | Bin .../alchemy-new-app.png | Bin .../blockdaemon-create-key.png | Bin .../connected.png | Bin .../quicknode-select-chain.png | Bin .../rainbowkit-modal.png | Bin .../wallet-connect-create-button.png | Bin .../base-confirm-transaction.png | Bin .../compiler-debug-log.png | Bin .../deployment-with-remix/editor-pane.png | Bin .../remix-base-goerli-connected.png | Bin .../deployment-with-remix/remix-home.png | Bin .../deployment-with-remix/remix-terminal.png | Bin .../deployment-with-remix/select-provider.png | Bin .../verify-and-publish.png | Bin .../configuration.png | Bin .../create-template.png | Bin .../debugger-button.png | Bin .../devnet-project-slug.png | Bin .../github-actions.png | Bin .../modifying-source.png | Bin .../deployment-with-tenderly/output.png | Bin .../deployment-with-tenderly/overrides.png | Bin .../result-of-expression.png | Bin .../result-of-simulation.png | Bin .../deployment-with-tenderly/setgreeting.png | Bin .../deployment-with-tenderly/simulation.png | Bin .../simulator-button.png | Bin .../images/dynamic-nfts/NFT_level_1.png | Bin .../images/dynamic-nfts/NFT_level_2.png | Bin .../images/dynamic-nfts/NFT_level_3.png | Bin .../images/dynamic-nfts/all-characters.png | Bin .../images/dynamic-nfts/base-dynamic-nft.zip | Bin .../images/dynamic-nfts/image-level-1.png | Bin .../images/dynamic-nfts/image-level-2.png | Bin .../images/dynamic-nfts/image-level-3.png | Bin .../dynamic-nfts/mutable-references.png | Bin .../images/dynamic-nfts/open-sea-mockup.jpg | Bin .../images/dynamic-nfts/refresh-metadata.png | Bin .../images/frames/100-lines-frame.png | Bin .../images/frames/2024-a-base-odyssey.png | Bin .../images/frames/first-frame.png | Bin .../images/frames/gave-me-away.png | Bin .../images/frames/install-action.png | Bin .../images/frames/link-button-test.png | Bin docs/{public => }/images/frames/real-nft.png | Bin .../{public => }/images/frames/story-time.png | Bin .../images/frames/updated-100-lines.png | Bin .../images/frames/vercel-build.png | Bin .../images/frames/vercel-import.png | Bin .../images/frames/vercel-install.png | Bin .../images/frames/vercel-projects.png | Bin ...t 2024-07-11 at 3.10.17\342\200\257PM.png" | Bin ...t 2024-07-11 at 8.05.25\342\200\257AM.png" | Bin .../cdp-allowlist-contract.png | Bin .../cdp-config.png | Bin .../cdp-global-user-limits.png | Bin .../gasless-transaction-on-base/cdp-home.png | Bin .../cdp-paymaster.png | Bin .../cdp-select-network.png | Bin .../cdp-select-project.png | Bin .../cdp-userops-10.png | Bin .../hardhat-test-coverage/coverage-report.png | Bin docs/images/hero.png | Bin 0 -> 870663 bytes .../images/homepage/hero-background.png | Bin .../add-injected-provider.png | Bin .../learn/deployment-to-testnet/balance.png | Bin .../base-confirm-transaction.png | Bin .../compiler-debug-log.png | Bin .../confirm-transaction.png | Bin .../learn/deployment-to-testnet/connected.png | Bin .../deployment-transaction.png | Bin .../importance-of-testnets.png | Bin .../remix-base-goerli-connected.png | Bin .../deployment-to-testnet/select-provider.png | Bin .../testnet-comparison.png | Bin .../verify-and-publish.png | Bin .../view-transaction.png | Bin .../images/learn/erc-20/deployed-token.png | Bin .../learn/erc-20/erc20-dev-perspective.png | Bin .../learn/erc-20/erc20-user-perspective.png | Bin .../learn/erc-20/evolution-eth-erc20.png | Bin .../images/learn/erc-721/erc-721-standard.png | Bin .../learn/erc-721/evolution-eth-erc721.png | Bin .../error-triage/array-out-of-bounds.png | Bin .../images/learn/error-triage/debugger.png | Bin .../learn/error-triage/divide-by-zero.png | Bin .../images/learn/error-triage/gas-limit.png | Bin .../learn/error-triage/highlight-code.png | Bin .../images/learn/error-triage/underflow.png | Bin .../evm-architecture-execution.png | Bin .../evm-execution-basic.png | Bin .../evm-stack-memory.png | Bin .../opcode-execution.png | Bin .../images/learn/etherscan/bayc-query.png | Bin .../images/learn/etherscan/bayc-read.png | Bin .../images/learn/etherscan/bayc-verified.png | Bin .../learn/etherscan/bayc-write-connected.png | Bin .../images/learn/etherscan/bayc-write.png | Bin .../images/learn/etherscan/bayc.png | Bin .../images/learn/etherscan/blocks.png | Bin .../etherscan/etherscan-user-interface.png | Bin .../learn/hardhat-deploying/new-deploy.png | Bin .../learn/hardhat-forking/hardhat-forking.png | Bin .../autocomplete-unlockTime.png | Bin .../hardhat-verify/hardhat-verify-success.png | Bin .../learn/hardhat-verify/hardhat-verify.png | Bin .../harhat-verify-create-key.png | Bin .../images/learn/icons/coding-white.svg | 0 .../images/learn/icons/coding.svg | 0 .../images/learn/icons/quizzes-white.svg | 0 .../images/learn/icons/quizzes.svg | 0 .../images/learn/icons/reading-white.svg | 0 .../images/learn/icons/reading.svg | 0 .../images/learn/icons/stepbystep-white.svg | 0 .../images/learn/icons/stepbystep.svg | 0 .../images/learn/icons/video-white.svg | 0 .../{public => }/images/learn/icons/video.svg | 0 .../btc-eth-comparison.png | Bin .../introduction-to-ethereum/gas-costs.png | Bin .../web2-web3-development.png | Bin .../web2-web3-limitations.png | Bin .../learn/introduction-to-solidity/delete.png | Bin .../deploy-button.png | Bin .../introduction-to-solidity/editor-pane.png | Bin .../key-value-store.png | Bin .../remix-contract-buttons.png | Bin .../remix-deploy-chevron.png | Bin .../remix-deploy-log.png | Bin .../introduction-to-solidity/remix-editor.png | Bin .../introduction-to-solidity/remix-home.png | Bin .../remix-retrieve.png | Bin .../remix-settings.png | Bin .../remix-terminal.png | Bin .../remix-transaction-console.png | Bin .../variable-order-inefficient.png | Bin .../variable-order-optimized.png | Bin .../variable-packing.png | Bin .../learn/introduction-to-tokens/erc-1155.png | Bin .../learn/introduction-to-tokens/erc-20.png | Bin .../learn/introduction-to-tokens/erc-721.png | Bin .../images/learn/minimal-tokens/balance.png | Bin .../learn/minimal-tokens/split-balances.png | Bin .../learn/minimal-tokens/transferred.png | Bin .../images/learn/new-keyword/at-address.png | Bin .../images/learn/new-keyword/deployed.png | Bin .../learn/nft-pins}/Base_Camp_NFT_01.png | Bin .../learn/nft-pins}/Base_Camp_NFT_02.png | Bin .../learn/nft-pins}/Base_Camp_NFT_03.png | Bin .../learn/nft-pins}/Base_Camp_NFT_04.png | Bin .../learn/nft-pins}/Base_Camp_NFT_05.png | Bin .../learn/nft-pins}/Base_Camp_NFT_06.png | Bin .../learn/nft-pins}/Base_Camp_NFT_07.png | Bin .../learn/nft-pins}/Base_Camp_NFT_08.png | Bin .../learn/nft-pins}/Base_Camp_NFT_09.png | Bin .../learn/nft-pins}/Base_Camp_NFT_10.png | Bin .../learn/nft-pins}/Base_Camp_NFT_11.png | Bin .../learn/nft-pins}/Base_Camp_NFT_12.png | Bin .../learn/nft-pins}/Base_Camp_NFT_13.png | Bin .../learn/nft-pins}/Base_Camp_NFT_14.png | Bin .../learn/nft-pins}/Base_Camp_NFT_15.png | Bin .../learn/nft-pins}/Base_Camp_NFT_16.png | Bin .../learn/nft-pins}/Base_Camp_NFT_17.png | Bin .../learn/nft-pins}/Base_Camp_NFT_18.png | Bin .../learn/nft-pins}/Base_Camp_NFT_19.png | Bin .../learn/nft-pins}/TestPin.png | Bin .../issues-console-log.png | Bin .../missing-data.png | Bin .../learn/storage/deployment-with-params.png | Bin .../images/learn/welcome/Base_Learn_Hero.png | Bin .../images/minikit/example_embed.png | Bin .../images/minikit/manifest-setup.png | Bin .../images/minikit/minikit-cli.gif | Bin .../mobile-wallet-protocol/diffie-hellman.png | Bin .../mobile-wallet-protocol/handshake.png | Bin .../mobile-wallet-protocol/overview.png | Bin .../onchain-generative-nfts/architecture.png | Bin .../onchain-generative-nfts/first_pass.png | Bin .../images/onchain-generative-nfts/mockup.png | Bin .../onchain-generative-nfts/progress.png | Bin .../fund-funding-options.png | Bin .../fund-onramp-config.png | Bin .../fund-wallet-balance.png | Bin .../pay-commerce-products.png | Bin .../pay-copy-product-link.png | Bin .../pay-create-product-details.png | Bin .../pay-final-product.png | Bin .../images/onchainkit/NFTCard.gif | Bin .../images/onchainkit/NFTMintCard.gif | Bin docs/{public => }/images/onchainkit/buy.gif | Bin .../images/onchainkit/checkout.gif | Bin .../images/onchainkit/commerce-1.png | Bin .../images/onchainkit/commerce-2.png | Bin .../images/onchainkit/commerce-3.png | Bin .../images/onchainkit/commerce-4.png | Bin .../images/onchainkit/copy-api-key-guide.png | Bin .../images/onchainkit/copy-project-id.png | Bin .../images/onchainkit/cursor-dir.gif | Bin .../images/onchainkit/fetch-frame-part-II.png | Bin .../images/onchainkit/fetch-frame.png | Bin docs/{public => }/images/onchainkit/frame.png | Bin .../images/onchainkit/fund-card.gif | Bin .../getting-started-create-env-file.png | Bin .../onchainkit/onchain-app-template-1.png | Bin .../images/onchainkit/onchain-figma.png | Bin ...chainkit-components-paymaster-endpoint.png | Bin ...hainkit-components-transaction-anatomy.png | Bin .../onchainkit-figma-design-components.png | Bin .../onchainkit-figma-design-how-to-use.png | Bin .../onchainkit/onchainkit-figma-design.png | Bin .../images/onchainkit/onchainkit-identity.png | Bin .../onchainkit-lifecycle-status-vibes.png | Bin .../images/onchainkit/onchainkit-template.png | Bin .../images/onchainkit/onchainkit-themes.gif | Bin .../images/onchainkit/onchainkit-token.png | Bin .../images/onchainkit/onchainkit-wallet-1.png | Bin .../images/onchainkit/onchainkit-wallet-2.png | Bin .../images/onchainkit/onramp-secure-init.png | Bin .../images/onchainkit/pay-button.png | Bin .../images/onchainkit/quickstart.png | Bin .../onchainkit/use-onchain-app-template.png | Bin .../images/onchainkit/wallet-island.gif | Bin .../images/onchainkit/wallet-modal.gif | Bin .../images/onchainkit/wallet-modal.png | Bin .../images/onchainkit/warpcast-logo.png | Bin .../debugger-of-not-valid-zoom.png | Bin .../openframes-fc/debugger-of-not-valid.png | Bin .../openframes-fc/debugger-of-valid.png | Bin .../debugger-protocol-selector.png | Bin .../openframes-fc/frame-custom-no-url.png | Bin .../images/openframes-fc/frame-custom-url.png | Bin .../images/paymaster/pb-paymaster-chainid.png | Bin .../pb-paymaster-config-highlight.png | Bin .../images/paymaster/pb-paymaster-config.png | Bin .../pb-paymaster-policy-erc20-flow.png | Bin .../paymaster/pb-paymaster-policy-erc20.png | Bin .../pb-paymaster-tenderly-dev-debug.png | Bin .../pb-paymaster-tenderly-entrypoint.png | Bin .../images/paymaster/pb-sponsorship-scw.png | Bin .../resend-email-campaigns/ock-dashboard.png | Bin .../ock-use-template.png | Bin .../resend-email-campaigns/resend-1.gif | Bin .../resend-api-keys.png | Bin .../resend-contact-added.png | Bin .../resend-mailing-list-prompt.png | Bin .../resend-user-subscribed.png | Bin .../resend-email-campaigns/site-load.png | Bin .../vercel-import-project.png | Bin .../resend-email-campaigns/verel-login.png | Bin .../wc-project-page.png | Bin .../shopify-install-commerce.gif | Bin docs/images/showcase/aerodrome.svg | 31 + docs/images/showcase/blocklords.svg | 23 + docs/images/showcase/cat-town.svg | 15 + docs/images/showcase/heyelsa.svg | 29 + docs/images/showcase/morpho.svg | 28 + docs/images/showcase/opensea.svg | 29 + .../images/smart-wallet/CDPSteps.png | Bin .../smart-wallet/PaymasterAllowlist.png | Bin .../images/smart-wallet/PaymasterCDP.png | Bin .../images/smart-wallet/ReownSteps.png | Bin .../images/smart-wallet/accountRecovery.png | Bin .../smart-wallet/buttonPlacementExamples.png | Bin .../smart-wallet/copyTxnSimClickZone.png | Bin .../images/smart-wallet/create-a-passkey.png | Bin .../smart-wallet/createWalletButtonBlack.png | Bin .../smart-wallet/createWalletButtonBlue.png | Bin .../smart-wallet/customized-rainbow.png | Bin .../smart-wallet/customized-wallet-list.png | Bin .../images/smart-wallet/examplePlacement.png | Bin .../{public => }/images/smart-wallet/logo.svg | 0 .../images/smart-wallet/meme-vs-content.png | Bin .../smart-wallet/onchainkit-default-eoa.png | Bin .../smart-wallet/onchainkit-default-smart.png | Bin .../images/smart-wallet/one-click-pay.png | Bin .../smart-wallet/pendingOwnershipChange.png | Bin .../smart-wallet/rainbow-smart-wallet.png | Bin .../smart-wallet/rainbowkit-default.png | Bin .../images/smart-wallet/random-color-nft.png | Bin .../smart-wallet/recoveryKeyAddPasskey.png | Bin .../smart-wallet/recoveryKeyCreated.png | Bin .../smart-wallet/recoveryKeyScamWarning.png | Bin .../images/smart-wallet/recoveryKeySignIn.png | Bin .../images/smart-wallet/sponsored-by-base.png | Bin .../images/smart-wallet/sub-account-demo.gif | Bin .../images/smart-wallet/sub-account-popup.png | Bin .../images/smart-wallet/submitRecoveryKey.png | Bin .../smart-wallet/wagmi-template-normal.png | Bin .../attestation-creation-flow.png | Bin .../coinbase-verification-flow.png | Bin .../verifications/developer-data-flow.png | Bin .../verifications/onchain-attestation.png | Bin .../images/verifications/rpc-endpoint.png | Bin .../basescan-apikey-page-add.png | Bin .../basescan-apikey-page.png | Bin .../basescan-menu.png | Bin .../cbw-show-private-key.png | Bin .../cdp-node-full.png | Bin .../verify-with-basescan-api/cdp-rpc-url.png | Bin .../developer-settings-overview.gif | Bin .../images/wallet-sdk/dynamic-coinbase.jpg | Bin .../images/wallet-sdk/dynamic.jpg | Bin .../images/wallet-sdk/plaid-link-demo.png | Bin .../wallet-sdk/show-private-key (1).gif | Bin .../images/wallet-sdk/show-private-key.gif | Bin .../smart-wallet-create-passkey-2.png | Bin .../smart-wallet-create-passkey.png | Bin .../images/wallet-sdk/smart-wallet-entry.png | Bin .../images/wallet-sdk/testnet-assets.png | Bin .../images/wallet-sdk/testnets.png | Bin .../images/wallet-sdk/wagmi_custom_modal.png | Bin .../images/wallet-sdk/wallet-onboard.png | Bin .../images/wallet-sdk/web3-onboard_modal.png | Bin .../wallet-sdk/web3-react_custom_modal.png | Bin .../images/wallet-sdk/web3modal_modal.png | Bin docs/index.mdx | 117 + docs/layout.tsx | 40 - .../address-and-payable.mdx | 91 + .../function-modifiers-vid.mdx | 9 + .../advanced-functions/function-modifiers.mdx | 151 + .../function-visibility-vid.mdx | 9 + .../function-visibility.mdx | 130 + .../learn/arrays/array-storage-layout-vid.mdx | 9 + docs/learn/arrays/arrays-exercise.mdx | 93 + docs/learn/arrays/arrays-in-solidity-vid.mdx | 9 + docs/learn/arrays/arrays-in-solidity.mdx | 142 + docs/learn/arrays/filtering-an-array-sbs.mdx | 230 + docs/learn/arrays/fixed-size-arrays-vid.mdx | 10 + .../arrays/writing-arrays-in-solidity-vid.mdx | 10 + docs/learn/client-side-development.mdx | 3 + .../basic-functions-exercise.mdx | 38 + .../basic-types.mdx | 221 + .../hello-world-step-by-step.mdx | 205 + .../intro-to-contracts-vid.mdx | 9 + .../control-structures-exercise.mdx | 57 + .../control-structures/control-structures.mdx | 233 + docs/learn/control-structures/loops-vid.mdx | 9 + .../require-revert-error-vid.mdx | 9 + .../standard-control-structures-vid.mdx | 10 + docs/learn/cross-chain-development.mdx | 3 + .../contract-verification-sbs.mdx | 68 + .../deployment-to-base-sepolia-sbs.mdx | 108 + .../deployment-to-testnet-exercise.mdx | 36 + .../overview-of-test-networks-vid.mdx | 9 + .../deployment-to-testnet/test-networks.mdx | 97 + .../erc-20-token/analyzing-erc-20-vid.mdx | 10 + docs/learn/erc-20-token/erc-20-exercise.mdx | 124 + docs/learn/erc-20-token/erc-20-standard.mdx | 103 + .../learn/erc-20-token/erc-20-testing-vid.mdx | 10 + docs/learn/erc-20-token/erc-20-token-sbs.mdx | 141 + .../erc-20-token/openzeppelin-erc-20-vid.mdx | 10 + docs/learn/erc-721-token/erc-721-exercise.mdx | 87 + .../erc-721-token/erc-721-on-opensea-vid.mdx | 10 + docs/learn/erc-721-token/erc-721-sbs.mdx | 295 + .../erc-721-token/erc-721-standard-video.mdx | 10 + docs/learn/erc-721-token/erc-721-standard.mdx | 100 + .../implementing-an-erc-721-vid.mdx | 10 + .../openzeppelin-erc-721-vid.mdx | 10 + .../error-triage-exercise-source.sol | 60 + .../error-triage/error-triage-exercise.mdx | 97 + docs/learn/error-triage/error-triage-vid.mdx | 9 + docs/learn/error-triage/error-triage.mdx | 449 + docs/learn/ethereum-applications.mdx | 193 + docs/learn/ethereum-dev-overview.mdx | 9 + docs/learn/events/hardhat-events-sbs.mdx | 285 + docs/learn/evm-diagram.mdx | 109 + docs/learn/exercise-contracts.mdx | 26 + .../foundry/deploy-with-foundry.mdx | 0 .../generate-random-numbers-contracts.md | 0 .../learn/foundry/introduction-to-foundry.mdx | 5 + docs/learn/foundry/setup-with-base.mdx | 148 + .../learn/foundry/testing-smart-contracts.mdx | 215 + docs/learn/foundry/testing.mdx | 5 + .../foundry/verify-contract-with-basescan.md | 0 docs/learn/gas-use-in-eth-transactions.mdx | 117 + docs/learn/guide-to-base.mdx | 4 + .../learn/hardhat/analyzing-test-coverage.mdx | 238 + .../hardhat}/contract-abi-and-testing-vid.mdx | 2 +- docs/learn/hardhat/contract-abi-testing.mdx | 5 + docs/learn/hardhat/creating-project.mdx | 5 + .../hardhat/debugging-smart-contracts.mdx | 407 + docs/learn/hardhat/deploy-with-hardhat.mdx | 367 + docs/learn/hardhat/deployment-guide.mdx | 4 + .../hardhat}/deployment-vid.mdx | 2 +- docs/learn/hardhat/deployment.mdx | 4 + docs/learn/hardhat/etherscan-guide.mdx | 4 + docs/learn/hardhat/etherscan-video.mdx | 4 + docs/learn/hardhat/fork-guide.mdx | 4 + docs/learn/hardhat/fork-video.mdx | 4 + .../hardhat}/hardhat-deploy-sbs.mdx | 0 docs/learn/hardhat/hardhat-forking.mdx | 179 + docs/learn/hardhat/hardhat-testing-sbs.mdx | 340 + docs/learn/hardhat/hardhat-verify-sbs.mdx | 111 + .../hardhat}/hardhat-verify-vid.mdx | 2 +- docs/learn/hardhat/installing-deploy.mdx | 4 + .../installing-hardhat-deploy-vid.mdx | 2 +- .../hardhat}/mainnet-forking-vid.mdx | 2 +- docs/learn/hardhat/network-configuration.mdx | 4 + docs/learn/hardhat/optimizing-gas-usage.md | 423 + docs/learn/hardhat/overview.mdx | 74 + docs/learn/hardhat/reducing-contract-size.md | 502 + .../hardhat}/setup-deploy-script-vid.mdx | 2 +- docs/learn/hardhat/setup-deploy-script.mdx | 4 + docs/learn/hardhat/setup.mdx | 5 + .../test-network-configuration-vid.mdx | 2 +- docs/learn/hardhat/testing-deployment.mdx | 4 + docs/learn/hardhat/testing-guide.mdx | 3 + .../hardhat}/testing-our-deployment-vid.mdx | 2 +- .../hardhat}/testing-overview-vid.mdx | 2 +- docs/learn/hardhat/testing.mdx | 5 + docs/learn/hardhat/verify-guide.mdx | 4 + docs/learn/hardhat/verify-video.mdx | 4 + .../hardhat}/writing-tests-vid.mdx | 2 +- docs/learn/hardhat/writing-tests.mdx | 5 + docs/learn/imports/imports-exercise.mdx | 91 + docs/learn/imports/imports-sbs.mdx | 98 + docs/learn/imports/imports-vid.mdx | 10 + .../inheritance/abstract-contracts-sbs.mdx | 77 + .../inheritance/abstract-contracts-vid.mdx | 9 + .../inheritance/inheritance-exercise.mdx | 123 + docs/learn/inheritance/inheritance-sbs.mdx | 183 + docs/learn/inheritance/inheritance-vid.mdx | 10 + .../inheritance/multiple-inheritance-vid.mdx | 10 + .../inheritance/multiple-inheritance.mdx | 267 + .../calling-another-contract-vid.mdx | 11 + .../contract-to-contract-interaction.mdx | 266 + .../interfaces/intro-to-interfaces-vid.mdx | 11 + .../interfaces/testing-the-interface-vid.mdx | 11 + .../intro-to-tokens/intro-to-tokens-vid.mdx | 10 + .../misconceptions-about-tokens-vid.mdx | 9 + .../learn/intro-to-tokens/tokens-overview.mdx | 100 + docs/learn/introduction-to-ethereum.mdx | 9 + .../anatomy-of-a-smart-contract-vid.mdx | 9 + .../deployment-in-remix-vid.mdx | 9 + .../deployment-in-remix.mdx | 110 + .../introduction-to-remix-vid.mdx | 9 + .../introduction-to-remix.mdx | 93 + .../introduction-to-solidity-overview.mdx | 77 + .../introduction-to-solidity-vid.mdx | 10 + .../solidity-overview.mdx | 168 + .../mappings/how-mappings-are-stored-vid.mdx | 9 + docs/learn/mappings/mappings-exercise.mdx | 74 + docs/learn/mappings/mappings-sbs.mdx | 212 + docs/learn/mappings/mappings-vid.mdx | 10 + docs/learn/mappings/using-msg-sender-vid.mdx | 9 + .../creating-a-minimal-token-vid.mdx | 10 + .../minimal-tokens/minimal-token-sbs.mdx | 174 + .../minimal-tokens-exercise.mdx | 72 + .../transferring-a-minimal-token-vid.mdx | 10 + .../creating-a-new-contract-vid.mdx | 10 + .../new-keyword/new-keyword-exercise.mdx | 92 + docs/learn/new-keyword/new-keyword-sbs.mdx | 116 + .../account-abstraction.mdx | 3 + ...unt-abstraction-on-base-using-biconomy.mdx | 0 ...raction-on-base-using-particle-network.mdx | 0 ...ase-using-privy-and-the-base-paymaster.mdx | 0 .../gasless-transactions-with-paymaster.mdx | 0 .../introduction-to-providers.mdx | 0 .../client-side-development/viem.mdx | 116 + .../client-side-development/web3.mdx | 2 +- .../bridge-tokens-with-layerzero.mdx | 646 + ...essages-and-tokens-from-base-chainlink.mdx | 3 +- .../deploy-with-fleek.mdx | 0 ...-real-time-asset-data-pyth-price-feeds.mdx | 0 .../access-real-world-data-chainlink.mdx | 0 .../build-a-smart-wallet-funding-app.mdx | 0 .../onchain-concepts/building-onchain-ai.mdx | 14 + .../building-onchain-frontend-development.mdx | 34 + .../onchain-concepts/building-onchain-gas.mdx | 22 + .../building-onchain-identity.mdx | 40 + .../building-onchain-nodes.mdx | 74 + .../building-onchain-onramps.mdx | 22 + .../building-onchain-social-networks.mdx | 52 + .../building-onchain-wallets.mdx | 46 + .../continue-building-onchain.mdx | 14 + docs/learn/onchain-concepts/core-concepts.mdx | 21 + .../onchain-concepts/development-flow.mdx | 90 + .../understanding-the-onchain-tech-stack.mdx | 73 + docs/learn/solidity/anatomy.mdx | 5 + docs/learn/solidity/basic-types.mdx | 5 + docs/learn/solidity/deployment-in-remix.mdx | 5 + docs/learn/solidity/exercise-basics.mdx | 5 + docs/learn/solidity/hello-world.mdx | 5 + .../solidity/introduction-to-contracts.mdx | 5 + docs/learn/solidity/introduction-to-remix.mdx | 5 + docs/learn/solidity/introduction.mdx | 5 + docs/learn/solidity/overview.mdx | 5 + docs/learn/solidity/remix-guide.mdx | 5 + docs/learn/solidity/step-by-step.mdx | 5 + docs/learn/solidity/video-tutorial.mdx | 5 + .../learn/storage/how-storage-works-video.mdx | 9 + docs/learn/storage/how-storage-works.mdx | 236 + docs/learn/storage/simple-storage-sbs.mdx | 222 + docs/learn/storage/simple-storage-video.mdx | 9 + docs/learn/storage/storage-exercise.mdx | 118 + docs/learn/structs/structs-exercise.mdx | 81 + docs/learn/structs/structs-sbs.mdx | 325 + docs/learn/structs/structs-vid.mdx | 9 + docs/learn/welcome.mdx | 26 + docs/{public => }/llms-full.txt | 53 +- docs/logo/favicon.svg | 3 + docs/logo/logo_dark.svg | 4 + docs/logo/logo_light.svg | 4 + .../api/build-deposit-to-morpho-tx.mdx | 27 + .../onchainkit/api/build-mint-transaction.mdx | 50 + .../onchainkit/api/build-swap-transaction.mdx | 131 + .../api/build-withdraw-from-morpho-tx.mdx | 27 + docs/onchainkit/api/get-mint-details.mdx | 64 + docs/onchainkit/api/get-portfolios.mdx | 62 + docs/onchainkit/api/get-swap-quote.mdx | 92 + docs/onchainkit/api/get-token-details.mdx | 53 + docs/onchainkit/api/get-tokens.mdx | 108 + docs/onchainkit/api/types.mdx | 158 + docs/onchainkit/appchain/bridge.mdx | 393 + docs/onchainkit/appchain/types.mdx | 199 + docs/onchainkit/buy/buy.mdx | 116 + docs/onchainkit/buy/types.mdx | 31 + docs/onchainkit/checkout/checkout.mdx | 491 + docs/onchainkit/checkout/types.mdx | 73 + .../onchainkit/config/is-base.mdx | 11 +- .../onchainkit/config/is-ethereum.mdx | 11 +- .../onchainkit/config/onchainkit-provider.mdx | 149 + .../config/supplemental-providers.mdx | 86 + docs/onchainkit/config/types.mdx | 73 + .../create-a-basename-profile-component.mdx | 304 + docs/onchainkit/earn/earn.mdx | 263 + docs/onchainkit/earn/types.mdx | 300 + docs/onchainkit/fund/fetch-onramp-config.mdx | 58 + docs/onchainkit/fund/fetch-onramp-options.mdx | 78 + docs/onchainkit/fund/fetch-onramp-quote.mdx | 112 + .../fund/fetch-onramp-transaction-status.mdx | 66 + docs/onchainkit/fund/fund-button.mdx | 249 + docs/onchainkit/fund/fund-card.mdx | 252 + docs/onchainkit/fund/get-onramp-buy-url.mdx | 42 + .../fund/setup-onramp-event-listeners.mdx | 60 + docs/onchainkit/fund/types.mdx | 376 + docs/onchainkit/getting-started.mdx | 58 + docs/onchainkit/guides/ai-prompting-guide.mdx | 258 + docs/onchainkit/guides/build-onchain-apps.mdx | 105 + docs/onchainkit/guides/contribution.mdx | 142 + docs/onchainkit/guides/lifecycle-status.mdx | 170 + docs/onchainkit/guides/reporting-bug.mdx | 28 + docs/onchainkit/guides/tailwind.mdx | 99 + docs/onchainkit/guides/telemetry.mdx | 79 + docs/onchainkit/guides/themes.mdx | 202 + docs/onchainkit/guides/troubleshooting.mdx | 141 + .../guides/use-basename-in-onchain-app.mdx | 96 + .../guides/using-ai-powered-ides.mdx | 29 + .../hooks/use-build-deposit-to-morpho-tx.mdx | 32 + .../use-build-withdraw-from-morpho-tx.mdx | 33 + docs/onchainkit/hooks/use-earn-context.mdx | 35 + docs/onchainkit/hooks/use-mint-details.mdx | 85 + docs/onchainkit/hooks/use-morpho-vault.mdx | 32 + docs/onchainkit/hooks/use-token-details.mdx | 75 + docs/onchainkit/identity/address.mdx | 64 + docs/onchainkit/identity/avatar.mdx | 159 + docs/onchainkit/identity/badge.mdx | 179 + docs/onchainkit/identity/get-address.mdx | 45 + docs/onchainkit/identity/get-attestations.mdx | 86 + docs/onchainkit/identity/get-avatar.mdx | 51 + docs/onchainkit/identity/get-avatars.mdx | 78 + docs/onchainkit/identity/get-name.mdx | 67 + docs/onchainkit/identity/get-names.mdx | 77 + docs/onchainkit/identity/identity-card.mdx | 181 + docs/onchainkit/identity/identity.mdx | 219 + docs/onchainkit/identity/name.mdx | 108 + docs/onchainkit/identity/socials.mdx | 165 + docs/onchainkit/identity/types.mdx | 252 + docs/onchainkit/identity/use-address.mdx | 30 + docs/onchainkit/identity/use-avatar.mdx | 31 + docs/onchainkit/identity/use-avatars.mdx | 68 + docs/onchainkit/identity/use-name.mdx | 56 + docs/onchainkit/identity/use-names.mdx | 68 + docs/onchainkit/installation.mdx | 12 + docs/onchainkit/installation/astro.mdx | 201 + docs/onchainkit/installation/nextjs.mdx | 178 + docs/onchainkit/installation/remix.mdx | 199 + docs/onchainkit/installation/vite.mdx | 161 + docs/onchainkit/mint/nft-card.mdx | 311 + docs/onchainkit/mint/nft-mint-card.mdx | 326 + docs/onchainkit/mint/types.mdx | 142 + docs/onchainkit/paymaster/erc20-paymaster.mdx | 271 + docs/onchainkit/paymaster/errors.mdx | 94 + .../gasless-transactions-with-paymaster.mdx | 679 + .../paymaster/how-to-contribute.mdx | 0 .../onchainkit/paymaster/quickstart-guide.mdx | 115 + .../paymaster/quickstart-headless.mdx | 195 + docs/onchainkit/paymaster/security.mdx | 24 + docs/onchainkit/paymaster/troubleshooting.mdx | 106 + docs/onchainkit/paymaster/welcome.mdx | 10 + docs/onchainkit/restricted.mdx | 16 + docs/onchainkit/signature/signature.mdx | 317 + docs/onchainkit/signature/types.mdx | 166 + docs/onchainkit/swap/swap-settings.mdx | 386 + docs/onchainkit/swap/swap.mdx | 702 + docs/onchainkit/swap/types.mdx | 238 + .../templates/onchain-commerce-app.mdx | 4 + docs/onchainkit/templates/onchain-nft-app.mdx | 4 + .../templates/onchain-social-profile.mdx | 4 + docs/onchainkit/token/format-amount.mdx | 30 + docs/onchainkit/token/token-chip.mdx | 48 + docs/onchainkit/token/token-image.mdx | 148 + docs/onchainkit/token/token-row.mdx | 186 + docs/onchainkit/token/token-search.mdx | 55 + .../token/token-select-dropdown.mdx | 103 + docs/onchainkit/token/types.mdx | 109 + docs/onchainkit/transaction/transaction.mdx | 394 + docs/onchainkit/transaction/types.mdx | 204 + .../use-coinbase-smart-wallet-and-eoas.mdx | 215 + .../wallet/is-valid-aa-entrypoint.mdx | 35 + .../is-wallet-a-coinbase-smart-wallet.mdx | 44 + docs/onchainkit/wallet/types.mdx | 180 + .../wallet/wallet-dropdown-basename.mdx | 114 + .../wallet/wallet-dropdown-disconnect.mdx | 138 + .../wallet/wallet-dropdown-fund-link.mdx | 226 + .../wallet/wallet-dropdown-link.mdx | 217 + docs/onchainkit/wallet/wallet-island.mdx | 271 + docs/onchainkit/wallet/wallet-modal.mdx | 152 + docs/onchainkit/wallet/wallet.mdx | 377 + docs/openapi/onchainkit.yaml | 1047 + .../onchainkit/guides/build-onchain-apps.mdx | 103 - .../onchainkit/guides/tailwind.mdx | 106 - .../onchainkit/installation/astro.mdx | 213 - .../onchainkit/installation/nextjs.mdx | 183 - .../onchainkit/installation/remix.mdx | 203 - .../onchainkit/installation/vite.mdx | 166 - .../onchainkit/transaction/transaction.mdx | 401 - .../decentralizing-base-with-optimism.mdx | 2 - docs/pages/chain/security.mdx | 2 - docs/pages/feedback.mdx | 1 - .../guides/batch-transactions.mdx | 179 - .../smart-wallet/guides/paymasters.mdx | 267 - .../identity/smart-wallet/guides/siwe.mdx | 210 - .../smart-wallet/guides/spend-permissions.mdx | 621 - .../existing-welcome-page-features.mdx | 2 - ...bile-dapp-integration-via-deep-linking.mdx | 2 - .../identity/wallet-sdk/smart-wallet.mdx | 3 - .../wallet-sdk/supported-environments.mdx | 2 - .../identity/wallet-sdk/ux-guidelines.mdx | 3 - .../identity/wallet-sdk/wallet-mobile-sdk.mdx | 2 - .../wallet-sdk-existing-section.mdx | 2 - .../wallet-sdk/wallet-sdk-mobile-sdk.mdx | 2 - docs/pages/identity/wallet-sdk/xmtp.mdx | 2 - docs/pages/quickstart.mdx | 252 - .../use-cases/accept-crypto-payments.mdx | 237 - .../ai-instructions/langchain-local.mdx | 67 - .../ai-instructions/langchain-replit.mdx | 31 - docs/public/builderkits/minikit/llms.txt | 677 - docs/public/builderkits/onchainkit/llms.txt | 12499 ----------- docs/public/favicon.ico | Bin 15406 -> 0 bytes docs/public/fonts/CoinbaseSans-Medium.woff2 | Bin 43756 -> 0 bytes docs/public/fonts/CoinbaseSans-Regular.woff | Bin 70536 -> 0 bytes .../public/fonts/Coinbase_Mono-Bold-web.woff2 | Bin 37872 -> 0 bytes .../fonts/Coinbase_Mono-Extra_Light-web.woff2 | Bin 34452 -> 0 bytes .../fonts/Coinbase_Mono-Light-web.woff2 | Bin 35148 -> 0 bytes .../fonts/Coinbase_Mono-Medium-web.woff2 | Bin 37592 -> 0 bytes .../fonts/Coinbase_Mono-Regular-web.woff2 | Bin 35268 -> 0 bytes .../fonts/Coinbase_Sans-Bold-web-1.32.woff2 | Bin 38440 -> 0 bytes .../Coinbase_Sans-Bold_Italic-web-1.32.woff2 | Bin 40144 -> 0 bytes .../Coinbase_Sans-Extra_Light-web-1.32.woff2 | Bin 36968 -> 0 bytes ...ase_Sans-Extra_Light_Italic-web-1.32.woff2 | Bin 38420 -> 0 bytes .../fonts/Coinbase_Sans-Light-web-1.32.woff2 | Bin 40956 -> 0 bytes .../Coinbase_Sans-Light_Italic-web-1.32.woff2 | Bin 42616 -> 0 bytes ...Coinbase_Sans-Medium_Italic-web-1.32.woff2 | Bin 41936 -> 0 bytes ...oinbase_Sans-Regular_Italic-web-1.32.woff2 | Bin 43000 -> 0 bytes docs/public/logo.svg | 4 - docs/public/placeholder.svg | 1 - docs/public/serve.json | 174 - docs/showcase.mdx | 68 + .../concepts/base-gasless-campaign.mdx | 13 + .../concepts/features/built-in/MagicSpend.mdx | 24 + .../concepts/features/built-in/networks.mdx | 26 + .../concepts/features/built-in/passkeys.mdx | 26 + .../features/built-in/recovery-keys.mdx | 20 + .../features/built-in/single-sign-on.mdx | 12 + .../features/optional/batch-operations.mdx | 11 + .../features/optional/custom-gas-tokens.mdx | 12 + .../optional/gas-free-transactions.mdx | 11 + .../features/optional/spend-limits.mdx | 68 + .../features/optional/sub-accounts.mdx | 36 + .../concepts/usage-details/gas-usage.mdx | 21 + .../concepts/usage-details/popups.mdx | 37 + .../usage-details/signature-verification.mdx | 44 + .../concepts/usage-details/simulations.mdx | 16 + .../usage-details/unsupported-calls.mdx | 28 + .../usage-details/wallet-library-support.mdx | 16 + .../concepts/what-is-smart-wallet.mdx | 19 + .../contribute-to-smart-wallet-docs.mdx | 177 + .../contribute/security-and-bug-bounty.mdx | 18 + .../smart-wallet/examples/coin-a-joke-app.mdx | 213 + .../guides/batch-transactions.mdx | 183 + .../components/create-wallet-button.mdx | 537 + docs/smart-wallet/guides/erc20-paymasters.mdx | 188 + docs/smart-wallet/guides/magic-spend.mdx | 36 + docs/smart-wallet/guides/paymasters.mdx | 266 + .../guides/signature-verification.mdx | 90 + .../guides/signing-and-verifying-messages.mdx | 349 + docs/smart-wallet/guides/siwe.mdx | 202 + docs/smart-wallet/guides/spend-limits.mdx | 619 + docs/smart-wallet/guides/sub-accounts.mdx | 49 + ...add-sub-accounts-to-onchainkit-minikit.mdx | 250 + .../guides/sub-accounts/index.mdx | 63 + .../guides/sub-accounts/setup.mdx | 223 + .../sub-accounts/sub-accounts-with-privy.mdx | 142 + .../sub-accounts/using-sub-accounts.mdx | 278 + .../guides/tips/inspect-txn-simulation.mdx | 16 + docs/smart-wallet/guides/tips/popup-tips.mdx | 37 + .../identity => }/smart-wallet/llms.txt | 6 +- docs/smart-wallet/quickstart.mdx | 50 + .../ai-tools-available-for-devs.mdx | 117 + .../quickstart/nextjs-project.mdx | 210 + docs/smart-wallet/quickstart/quick-demo.mdx | 117 + .../quickstart/react-native-project.mdx | 206 + docs/smart-wallet/technical-reference/sdk.mdx | 117 + .../sdk/CoinbaseWalletProvider/Overview.mdx | 0 .../CoinbaseWalletProvider/eth_accounts.mdx | 60 + .../eth_blockNumber.mdx | 51 + .../CoinbaseWalletProvider/eth_chainId.mdx | 59 + .../CoinbaseWalletProvider/eth_coinbase.mdx | 47 + .../eth_estimateGas.mdx | 88 + .../CoinbaseWalletProvider/eth_feeHistory.mdx | 106 + .../CoinbaseWalletProvider/eth_gasPrice.mdx | 51 + .../CoinbaseWalletProvider/eth_getBalance.mdx | 58 + .../eth_getBlockByHash.mdx | 179 + .../eth_getBlockByNumber.mdx | 180 + .../eth_getBlockTransactionCountByHash.mdx | 66 + .../eth_getBlockTransactionCountByNumber.mdx | 75 + .../CoinbaseWalletProvider/eth_getCode.mdx | 81 + .../CoinbaseWalletProvider/eth_getLogs.mdx | 152 + .../CoinbaseWalletProvider/eth_getProof.mdx | 129 + .../eth_getStorageAt.mdx | 68 + .../eth_getTransactionByBlockHashAndIndex.mdx | 146 + ...th_getTransactionByBlockNumberAndIndex.mdx | 158 + .../eth_getTransactionByHash.mdx | 137 + .../eth_getTransactionCount.mdx | 61 + .../eth_getTransactionReceipt.mdx | 127 + .../eth_getUncleCountByBlockHash.mdx | 66 + .../eth_getUncleCountByBlockNumber.mdx | 77 + .../eth_requestAccounts.mdx | 53 + .../eth_sendRawTransaction.mdx | 56 + .../eth_sendTransaction.mdx | 94 + .../eth_signTypedData_v4.mdx | 130 + .../CoinbaseWalletProvider/personal_sign.mdx | 73 + .../request-overview.mdx | 0 .../CoinbaseWalletProvider/sdk-overview.mdx | 0 .../wallet_addEthereumChain.mdx | 105 + .../wallet_addSubAccount.mdx | 104 + .../CoinbaseWalletProvider/wallet_connect.mdx | 99 + .../wallet_sendCalls.mdx | 133 + .../wallet_switchEthereumChain.mdx | 72 + .../wallet_watchAsset.mdx | 116 + .../web3_clientVersion.mdx | 47 + .../coinbase-fetchpermissions.mdx | 4 +- .../spendpermissionmanager.mdx | 152 + .../sub-account-reference.mdx | 177 + docs/snippets/BrowseCard.mdx | 18 + docs/snippets/BrowseUseCaseCard.mdx | 18 + docs/snippets/Button/index.mdx | 67 + docs/snippets/GithubRepoCard.mdx | 40 + docs/snippets/HomeHeader.mdx | 8 + docs/snippets/HomeWrapper.mdx | 7 + docs/snippets/VideoPlayer.mdx | 29 + .../ai-instructions/eliza.mdx | 3 - .../ai-instructions/langchain-local.mdx | 60 + .../ai-instructions/langchain-replit.mdx | 30 + docs/snippets/ai-powered.mdx | 25 + docs/snippets/base-org/Icon/Icon.mdx | 535 + docs/snippets/danger.mdx | 37 + docs/snippets/headerNoToc.mdx | 7 + docs/snippets/installation-options.mdx | 47 + .../learning-objectives.mdx | 2 - docs/snippets/prompt-library.mdx | 217 + docs/snippets/start-building.mdx | 12 + docs/snippets/svg/agentKitSvg.mdx | 12 + docs/snippets/svg/agentSvg.mdx | 21 + docs/snippets/svg/depositSvg.mdx | 15 + docs/snippets/svg/gaslessSvg.mdx | 21 + docs/snippets/svg/miniKitSvg.mdx | 9 + docs/snippets/svg/onboardingSvg.mdx | 9 + docs/snippets/svg/onchainKitSvg.mdx | 7 + docs/snippets/svg/paymasterSvg.mdx | 24 + docs/snippets/svg/paymentsSvg.mdx | 11 + docs/snippets/svg/smartWalletSvg.mdx | 6 + docs/snippets/svg/socialSvg.mdx | 34 + docs/snippets/svg/verificationsSvg.mdx | 14 + docs/styles.css | 330 - docs/utils/logEvent.ts | 147 - .../build-with-minikit/debugging.mdx | 147 + .../existing-app-integration.mdx | 472 + .../build-with-minikit/overview.mdx | 361 + .../build-with-minikit/quickstart.mdx | 396 + docs/wallet-app/guides/thinking-social.mdx | 285 + docs/wallet-app/introduction/beta-faq.mdx | 102 + .../introduction/getting-started.mdx | 291 + docs/wallet-app/introduction/mini-apps.mdx | 203 + package.json | 46 - postcss.config.js | 6 - scripts/clean-frontmatter.ts | 73 - scripts/remove-feedback.ts | 57 - sidebar.ts | 1872 -- storybook/.gitignore | 43 + storybook/.storybook/main.ts | 23 + storybook/.storybook/preview-head.html | 19 + storybook/.storybook/preview.ts | 103 + storybook/README.md | 33 + storybook/eslint.config.mjs | 16 + storybook/next.config.ts | 7 + storybook/package-lock.json | 18622 ++++++++++++++++ storybook/package.json | 52 + storybook/postcss.config.mjs | 5 + storybook/public/file.svg | 1 + storybook/public/globe.svg | 1 + storybook/public/next.svg | 1 + storybook/public/vercel.svg | 1 + storybook/public/window.svg | 1 + storybook/src/app/favicon.ico | Bin 0 -> 25931 bytes storybook/src/app/globals.css | 26 + storybook/src/app/layout.tsx | 34 + storybook/src/app/page.tsx | 3 + storybook/stories/App.tsx | 85 + storybook/stories/BuyWrapper.stories.tsx | 49 + storybook/stories/CafeUnitTest.stories.tsx | 116 + storybook/stories/Checkout.stories.tsx | 80 + storybook/stories/Earn.stories.tsx | 39 + storybook/stories/Fund/FundButton.stories.tsx | 116 + storybook/stories/Fund/FundCard.stories.tsx | 92 + .../stories/Fund/FundWrapper.stories.tsx | 57 + storybook/stories/GithubRepoCard.stories.tsx | 36 + .../stories/Identity/Identity.stories.tsx | 141 + .../Identity/IdentityAddress.stories.tsx | 45 + .../Identity/IdentityAvatar.stories.tsx | 88 + .../Identity/IdentityBadge.stories.tsx | 86 + .../stories/Identity/IdentityCard.stories.tsx | 78 + .../stories/Identity/IdentityName.stories.tsx | 63 + .../Identity/IdentitySocials.stories.tsx | 78 + storybook/stories/NFT/NFTCard.stories.tsx | 46 + storybook/stories/NFT/NFTMintCard.stories.tsx | 46 + .../stories/SignatureComponents.stories.tsx | 29 + storybook/stories/SubAccount.stories.tsx | 21 + storybook/stories/Swap/Swap.stories.tsx | 203 + .../stories/Swap/SwapSettings.stories.tsx | 247 + storybook/stories/Swap/SwapWallet.stories.tsx | 66 + .../stories/ThemeProvider.tsx | 28 +- storybook/stories/Token/TokenChip.stories.tsx | 36 + .../stories/Token/TokenImage.stories.tsx | 53 + storybook/stories/Token/TokenRow.stories.tsx | 112 + .../stories/Token/TokenSearch.stories.tsx | 30 + .../Token/TokenSelectDropdown.stories.tsx | 60 + storybook/stories/Transaction.stories.tsx | 87 + storybook/stories/Wallet/Wallet.stories.tsx | 153 + .../stories/Wallet/WalletBasename.stories.tsx | 87 + .../Wallet/WalletDisconnect.stories.tsx | 107 + .../stories/Wallet/WalletFundLink.stories.tsx | 155 + .../stories/Wallet/WalletIsland.stories.tsx | 69 + .../stories/Wallet/WalletLink.stories.tsx | 208 + .../stories/Wallet/WalletModal.stories.tsx | 62 + storybook/stories/components/App.tsx | 75 + .../stories}/components/AppDemo.tsx | 7 +- .../components/AppWithWalletModal.tsx | 8 +- .../stories}/components/BrowseCard.tsx | 0 .../stories}/components/BrowseUseCaseCard.tsx | 0 .../stories}/components/Button/index.tsx | 32 +- .../stories}/components/Button/types.ts | 0 .../stories}/components/BuyWrapper.tsx | 0 .../deployments/base-goerli/ArraysUT.json | 0 .../base-goerli/BasicMathUnitTest.json | 0 .../base-goerli/ControlStructuresUT.json | 0 .../deployments/base-goerli/ERC20UT.json | 0 .../deployments/base-goerli/ERC721UT.json | 0 .../base-goerli/ErrorTriageUT.json | 0 .../deployments/base-goerli/ImportsUT.json | 0 .../base-goerli/InheritanceUnitTest.json | 0 .../deployments/base-goerli/MappingsUT.json | 0 .../base-goerli/MinimalTokenUT.json | 0 .../assets/deployments/base-goerli/NewUT.json | 0 .../deployments/base-goerli/StorageUT.json | 0 .../deployments/base-goerli/StructsUT.json | 0 .../deployments/base-sepolia/ArraysUT.json | 0 .../base-sepolia/BasicMathUnitTest.json | 0 .../base-sepolia/ControlStructuresUT.json | 0 .../deployments/base-sepolia/ERC20UT.json | 0 .../deployments/base-sepolia/ERC721UT.json | 0 .../base-sepolia/ErrorTriageUT.json | 0 .../deployments/base-sepolia/ImportsUT.json | 0 .../base-sepolia/InheritanceUT.json | 0 .../deployments/base-sepolia/MappingsUT.json | 0 .../base-sepolia/MinimalTokenUT.json | 0 .../deployments/base-sepolia/NewUT.json | 0 .../deployments/base-sepolia/StorageUT.json | 0 .../deployments/base-sepolia/StructsUT.json | 0 .../assets/images}/Base_Camp_NFT_01.png | Bin .../assets/images}/Base_Camp_NFT_02.png | Bin .../assets/images}/Base_Camp_NFT_03.png | Bin .../assets/images}/Base_Camp_NFT_04.png | Bin .../assets/images}/Base_Camp_NFT_05.png | Bin .../assets/images}/Base_Camp_NFT_06.png | Bin .../assets/images}/Base_Camp_NFT_07.png | Bin .../assets/images}/Base_Camp_NFT_08.png | Bin .../assets/images}/Base_Camp_NFT_09.png | Bin .../assets/images}/Base_Camp_NFT_10.png | Bin .../assets/images}/Base_Camp_NFT_11.png | Bin .../assets/images}/Base_Camp_NFT_12.png | Bin .../assets/images}/Base_Camp_NFT_13.png | Bin .../assets/images}/Base_Camp_NFT_14.png | Bin .../assets/images}/Base_Camp_NFT_15.png | Bin .../assets/images}/Base_Camp_NFT_16.png | Bin .../assets/images}/Base_Camp_NFT_17.png | Bin .../assets/images}/Base_Camp_NFT_18.png | Bin .../assets/images}/Base_Camp_NFT_19.png | Bin .../CafeUnitTest/assets/images}/TestPin.png | Bin .../components/CafeUnitTest/index.jsx | 248 +- .../CafeUnitTest/nft-exercise-data.js | 0 .../ClientAnalyticsScript.tsx | 0 .../ClientAnalyticsScript/initCCA.ts | 0 storybook/stories/components/ConnectUI.tsx | 14 + .../CookieManager/CookieManagerProvider.tsx | 0 .../CookieManager/cookieManagerConfig.ts | 0 .../stories}/components/EarnComponents.tsx | 0 .../stories}/components/FundWrapper.tsx | 0 .../stories}/components/GithubRepoCard.tsx | 0 .../stories}/components/HomePage/Hero.tsx | 0 .../components/HomePage/ProductCard.tsx | 0 .../components/HomePage/ProductsSection.tsx | 0 .../components/HomePage/QuickLink.tsx | 0 .../components/HomePage/QuickStartSection.tsx | 0 .../components/HomePage/ResourcesSection.tsx | 0 .../components/InstallationOptions.tsx | 0 .../stories}/components/NFTComponents.tsx | 0 .../components/SignatureComponents.tsx | 2 +- .../components/SmartWalletAITools.tsx | 0 .../SmartWalletQuickstartOptions.tsx | 0 .../stories}/components/StartBuilding.tsx | 0 .../stories}/components/SwapWrapper.tsx | 0 .../components/TokenSelectorContainer.tsx | 0 .../components/TransactionWrapper.tsx | 0 .../stories}/components/VideoPlayer.jsx | 0 .../stories}/components/WalletComponents.tsx | 0 .../components/base-org/Icon/Icon.tsx | 0 .../stories}/components/index.d.ts | 0 .../stories}/components/landing/BuyDemo.tsx | 0 .../components/landing/CheckoutDemo.tsx | 0 .../components/landing/ComponentPreview.tsx | 0 .../stories}/components/landing/FundDemo.tsx | 0 .../components/landing/IdentityCardDemo.tsx | 0 .../components/landing/LandingFooter.tsx | 0 .../components/landing/NavigationList.tsx | 0 .../components/landing/NftMintCardDemo.tsx | 0 .../stories}/components/landing/SwapDemo.tsx | 0 .../components/landing/TransactionDemo.tsx | 0 .../stories}/components/landing/Tweets.tsx | 0 .../components/landing/WalletDemo.tsx | 0 .../components/landing/getHighlightedCode.tsx | 0 .../components/smart-wallet/Illustration.tsx | 0 .../components/smart-wallet/SubAccount.tsx | 46 +- .../stories}/components/svg/AgentKitSvgSW.tsx | 0 .../stories}/components/svg/CopySvg.tsx | 0 .../stories}/components/svg/LLMsTxtSvg.tsx | 0 .../stories}/components/svg/McpSvg.tsx | 0 .../stories}/components/svg/NextjsSvgSW.tsx | 0 .../stories}/components/svg/OnchainKit.svg | 0 .../components/svg/OnchainKitSvgSW.tsx | 0 .../components/svg/ReactNativeSvg.tsx | 0 .../stories}/components/svg/agentKitSvg.tsx | 0 .../stories}/components/svg/agentSvg.tsx | 0 .../stories}/components/svg/appchainsSvg.tsx | 0 .../stories}/components/svg/astroSvg.tsx | 0 .../stories}/components/svg/checkSvg.tsx | 0 .../stories}/components/svg/closeSvg.tsx | 0 .../components/svg/coinbasePaySvg.tsx | 0 .../stories}/components/svg/depositSvg.tsx | 0 .../stories}/components/svg/fundSvg.tsx | 0 .../stories}/components/svg/gaslessSvg.tsx | 0 .../stories}/components/svg/identitySvg.tsx | 0 .../stories}/components/svg/miniKitSvg.tsx | 0 .../stories}/components/svg/nextjsSvg.tsx | 0 .../stories}/components/svg/onboardingSvg.tsx | 0 .../stories}/components/svg/onchainKitSvg.tsx | 0 .../stories}/components/svg/paymasterSvg.tsx | 0 .../stories}/components/svg/paymentsSvg.tsx | 0 .../stories}/components/svg/remixSvg.tsx | 0 .../components/svg/smartWalletSvg.tsx | 0 .../stories}/components/svg/socialSvg.tsx | 0 .../stories}/components/svg/swapSvg.tsx | 0 .../stories}/components/svg/tokensSvg.tsx | 0 .../components/svg/transactionSvg.tsx | 0 .../components/svg/verificationsSvg.tsx | 0 .../stories}/components/svg/viteSvg.tsx | 0 .../walletDropdownLinkCustomBaseIconSvg.tsx | 0 .../stories}/components/svg/walletSvg.tsx | 0 storybook/tsconfig.json | 27 + styles/globals.css | 3 - tailwind.config.js | 34 - tsconfig.json | 52 - utils/check-image-refs.js | 65 - utils/check-image-refs.ts | 70 - utils/use-check-image-refs.js | 20 - vite-env.d.ts | 1 - vocs.config.tsx | 197 - yarn.lock | 13001 ----------- 1623 files changed, 87211 insertions(+), 35215 deletions(-) create mode 100644 .cursor/rules/mintlify.mdc create mode 100644 .github/workflows/chromatic.yml delete mode 100644 .nvmrc delete mode 100644 .yarnrc.yml rename {docs/pages => _pages}/arbitration.mdx (100%) rename {docs/pages => _pages}/base-services-hub.mdx (100%) rename {docs/pages => _pages}/buildathons/2025-02-flash.mdx (65%) rename {docs/pages => _pages}/builderkits/agentkit/index.mdx (100%) rename {docs/pages => _pages}/builderkits/minikit/debugging.mdx (97%) rename {docs/pages => _pages}/builderkits/minikit/overview.mdx (95%) rename {docs/pages => _pages}/builderkits/minikit/quickstart.mdx (87%) rename {docs/pages => _pages}/builderkits/minikit/thinking-social.mdx (99%) rename {docs/pages => _pages}/builderkits/onchainkit/api/build-deposit-to-morpho-tx.mdx (94%) rename {docs/pages => _pages}/builderkits/onchainkit/api/build-mint-transaction.mdx (94%) rename {docs/pages => _pages}/builderkits/onchainkit/api/build-swap-transaction.mdx (98%) rename {docs/pages => _pages}/builderkits/onchainkit/api/build-withdraw-from-morpho-tx.mdx (94%) rename {docs/pages => _pages}/builderkits/onchainkit/api/get-mint-details.mdx (96%) rename {docs/pages => _pages}/builderkits/onchainkit/api/get-portfolios.mdx (94%) rename {docs/pages => _pages}/builderkits/onchainkit/api/get-swap-quote.mdx (97%) rename {docs/pages => _pages}/builderkits/onchainkit/api/get-token-details.mdx (95%) rename {docs/pages => _pages}/builderkits/onchainkit/api/get-tokens.mdx (96%) rename {docs/pages => _pages}/builderkits/onchainkit/api/types.mdx (100%) rename {docs/pages => _pages}/builderkits/onchainkit/appchain/bridge.mdx (98%) rename {docs/pages => _pages}/builderkits/onchainkit/appchain/types.mdx (100%) rename {docs/pages => _pages}/builderkits/onchainkit/buy/buy.mdx (97%) rename {docs/pages => _pages}/builderkits/onchainkit/buy/types.mdx (100%) rename {docs/pages => _pages}/builderkits/onchainkit/checkout/checkout.mdx (86%) rename {docs/pages => _pages}/builderkits/onchainkit/checkout/types.mdx (100%) create mode 100644 _pages/builderkits/onchainkit/config/is-base.mdx create mode 100644 _pages/builderkits/onchainkit/config/is-ethereum.mdx rename {docs/pages => _pages}/builderkits/onchainkit/config/onchainkit-provider.mdx (99%) rename {docs/pages => _pages}/builderkits/onchainkit/config/supplemental-providers.mdx (96%) rename {docs/pages => _pages}/builderkits/onchainkit/config/types.mdx (100%) rename {docs/pages => _pages}/builderkits/onchainkit/create-a-basename-profile-component.mdx (99%) rename {docs/pages => _pages}/builderkits/onchainkit/earn/earn.mdx (99%) rename {docs/pages => _pages}/builderkits/onchainkit/earn/types.mdx (100%) rename {docs/pages => _pages}/builderkits/onchainkit/fund/fetch-onramp-config.mdx (96%) rename {docs/pages => _pages}/builderkits/onchainkit/fund/fetch-onramp-options.mdx (96%) rename {docs/pages => _pages}/builderkits/onchainkit/fund/fetch-onramp-quote.mdx (97%) rename {docs/pages => _pages}/builderkits/onchainkit/fund/fetch-onramp-transaction-status.mdx (96%) rename {docs/pages => _pages}/builderkits/onchainkit/fund/fund-button.mdx (78%) rename {docs/pages => _pages}/builderkits/onchainkit/fund/fund-card.mdx (98%) rename {docs/pages => _pages}/builderkits/onchainkit/fund/get-onramp-buy-url.mdx (95%) rename {docs/pages => _pages}/builderkits/onchainkit/fund/setup-onramp-event-listeners.mdx (95%) rename {docs/pages => _pages}/builderkits/onchainkit/fund/types.mdx (100%) rename {docs/pages => _pages}/builderkits/onchainkit/getting-started.mdx (89%) rename {docs/pages => _pages}/builderkits/onchainkit/guides/ai-prompting-guide.mdx (99%) create mode 100644 _pages/builderkits/onchainkit/guides/build-onchain-apps.mdx rename {docs/pages => _pages}/builderkits/onchainkit/guides/contribution.mdx (100%) rename {docs/pages => _pages}/builderkits/onchainkit/guides/lifecycle-status.mdx (100%) rename {docs/pages => _pages}/builderkits/onchainkit/guides/reporting-bug.mdx (61%) create mode 100644 _pages/builderkits/onchainkit/guides/tailwind.mdx rename {docs/pages => _pages}/builderkits/onchainkit/guides/telemetry.mdx (100%) rename {docs/pages => _pages}/builderkits/onchainkit/guides/themes.mdx (100%) rename {docs/pages => _pages}/builderkits/onchainkit/guides/troubleshooting.mdx (99%) rename {docs/pages => _pages}/builderkits/onchainkit/guides/use-basename-in-onchain-app.mdx (95%) rename {docs/pages => _pages}/builderkits/onchainkit/guides/using-ai-powered-ides.mdx (100%) rename {docs/pages => _pages}/builderkits/onchainkit/hooks/use-build-deposit-to-morpho-tx.mdx (94%) rename {docs/pages => _pages}/builderkits/onchainkit/hooks/use-build-withdraw-from-morpho-tx.mdx (94%) rename {docs/pages => _pages}/builderkits/onchainkit/hooks/use-earn-context.mdx (95%) rename {docs/pages => _pages}/builderkits/onchainkit/hooks/use-mint-details.mdx (97%) rename {docs/pages => _pages}/builderkits/onchainkit/hooks/use-morpho-vault.mdx (94%) rename {docs/pages => _pages}/builderkits/onchainkit/hooks/use-token-details.mdx (97%) rename {docs/pages => _pages}/builderkits/onchainkit/identity/address.mdx (97%) rename {docs/pages => _pages}/builderkits/onchainkit/identity/avatar.mdx (99%) rename {docs/pages => _pages}/builderkits/onchainkit/identity/badge.mdx (98%) rename {docs/pages => _pages}/builderkits/onchainkit/identity/get-address.mdx (92%) rename {docs/pages => _pages}/builderkits/onchainkit/identity/get-attestations.mdx (97%) rename {docs/pages => _pages}/builderkits/onchainkit/identity/get-avatar.mdx (93%) rename {docs/pages => _pages}/builderkits/onchainkit/identity/get-avatars.mdx (94%) rename {docs/pages => _pages}/builderkits/onchainkit/identity/get-name.mdx (93%) rename {docs/pages => _pages}/builderkits/onchainkit/identity/get-names.mdx (93%) rename {docs/pages => _pages}/builderkits/onchainkit/identity/identity-card.mdx (100%) rename {docs/pages => _pages}/builderkits/onchainkit/identity/identity.mdx (100%) rename {docs/pages => _pages}/builderkits/onchainkit/identity/name.mdx (98%) rename {docs/pages => _pages}/builderkits/onchainkit/identity/socials.mdx (100%) rename {docs/pages => _pages}/builderkits/onchainkit/identity/types.mdx (100%) rename {docs/pages => _pages}/builderkits/onchainkit/identity/use-address.mdx (96%) rename {docs/pages => _pages}/builderkits/onchainkit/identity/use-avatar.mdx (96%) rename {docs/pages => _pages}/builderkits/onchainkit/identity/use-avatars.mdx (95%) rename {docs/pages => _pages}/builderkits/onchainkit/identity/use-name.mdx (94%) rename {docs/pages => _pages}/builderkits/onchainkit/identity/use-names.mdx (95%) rename {docs/pages => _pages}/builderkits/onchainkit/installation.mdx (74%) create mode 100644 _pages/builderkits/onchainkit/installation/astro.mdx create mode 100644 _pages/builderkits/onchainkit/installation/nextjs.mdx create mode 100644 _pages/builderkits/onchainkit/installation/remix.mdx create mode 100644 _pages/builderkits/onchainkit/installation/vite.mdx rename {docs/pages => _pages}/builderkits/onchainkit/mint/nft-card.mdx (88%) rename {docs/pages => _pages}/builderkits/onchainkit/mint/nft-mint-card.mdx (88%) rename {docs/pages => _pages}/builderkits/onchainkit/mint/types.mdx (100%) rename {docs/pages => _pages}/builderkits/onchainkit/paymaster/erc20-paymaster.mdx (100%) rename {docs/pages => _pages}/builderkits/onchainkit/paymaster/errors.mdx (100%) rename {docs/pages => _pages}/builderkits/onchainkit/paymaster/gasless-transactions-with-paymaster.mdx (98%) rename {docs/pages => _pages}/builderkits/onchainkit/paymaster/how-to-contribute.mdx (100%) rename {docs/pages => _pages}/builderkits/onchainkit/paymaster/quickstart-guide.mdx (100%) rename {docs/pages => _pages}/builderkits/onchainkit/paymaster/quickstart-headless.mdx (100%) rename {docs/pages => _pages}/builderkits/onchainkit/paymaster/security.mdx (100%) rename {docs/pages => _pages}/builderkits/onchainkit/paymaster/troubleshooting.mdx (100%) rename {docs/pages => _pages}/builderkits/onchainkit/paymaster/welcome.mdx (100%) rename {docs/pages => _pages}/builderkits/onchainkit/restricted.mdx (100%) rename {docs/pages => _pages}/builderkits/onchainkit/signature/signature.mdx (99%) rename {docs/pages => _pages}/builderkits/onchainkit/signature/types.mdx (100%) rename {docs/pages => _pages}/builderkits/onchainkit/swap/swap-settings.mdx (100%) rename {docs/pages => _pages}/builderkits/onchainkit/swap/swap.mdx (99%) rename {docs/pages => _pages}/builderkits/onchainkit/swap/types.mdx (100%) rename {docs/pages => _pages}/builderkits/onchainkit/token/format-amount.mdx (89%) rename {docs/pages => _pages}/builderkits/onchainkit/token/token-chip.mdx (97%) rename {docs/pages => _pages}/builderkits/onchainkit/token/token-image.mdx (98%) rename {docs/pages => _pages}/builderkits/onchainkit/token/token-row.mdx (99%) rename {docs/pages => _pages}/builderkits/onchainkit/token/token-search.mdx (97%) rename {docs/pages => _pages}/builderkits/onchainkit/token/token-select-dropdown.mdx (98%) rename {docs/pages => _pages}/builderkits/onchainkit/token/types.mdx (100%) create mode 100644 _pages/builderkits/onchainkit/transaction/transaction.mdx rename {docs/pages => _pages}/builderkits/onchainkit/transaction/types.mdx (100%) rename {docs/pages => _pages}/builderkits/onchainkit/use-coinbase-smart-wallet-and-eoas.mdx (98%) rename {docs/pages => _pages}/builderkits/onchainkit/wallet/is-valid-aa-entrypoint.mdx (91%) rename {docs/pages => _pages}/builderkits/onchainkit/wallet/is-wallet-a-coinbase-smart-wallet.mdx (94%) rename {docs/pages => _pages}/builderkits/onchainkit/wallet/types.mdx (100%) rename {docs/pages => _pages}/builderkits/onchainkit/wallet/wallet-dropdown-basename.mdx (98%) rename {docs/pages => _pages}/builderkits/onchainkit/wallet/wallet-dropdown-disconnect.mdx (98%) rename {docs/pages => _pages}/builderkits/onchainkit/wallet/wallet-dropdown-fund-link.mdx (99%) rename {docs/pages => _pages}/builderkits/onchainkit/wallet/wallet-dropdown-link.mdx (99%) rename {docs/pages => _pages}/builderkits/onchainkit/wallet/wallet-island.mdx (99%) rename {docs/pages => _pages}/builderkits/onchainkit/wallet/wallet-modal.mdx (61%) rename {docs/pages => _pages}/builderkits/onchainkit/wallet/wallet.mdx (61%) rename {docs/pages => _pages}/chain/account-abstraction.md (100%) rename {docs/pages => _pages}/chain/account-abstraction.mdx (100%) rename docs/pages/chain/app-blocklist.md => _pages/chain/app-blocklist.mdx (100%) rename {docs/pages => _pages}/chain/base-contracts.mdx (100%) rename {docs/pages => _pages}/chain/block-explorers.mdx (100%) rename {docs/pages => _pages}/chain/bridge-an-l1-token-to-base.mdx (100%) rename {docs/pages => _pages}/chain/bridges-mainnet.mdx (98%) rename {docs/pages => _pages}/chain/builder-anniversary-nft.mdx (100%) rename {docs/pages => _pages}/chain/contracts.mdx (99%) rename {docs/pages => _pages}/chain/cross-chain.md (100%) rename {docs/pages => _pages}/chain/cross-chain.mdx (100%) rename {docs/pages => _pages}/chain/data-indexers.md (100%) rename {docs/pages => _pages}/chain/data-indexers.mdx (100%) create mode 100644 _pages/chain/decentralizing-base-with-optimism.mdx rename {docs/pages => _pages}/chain/deploy-on-base-quickstart.mdx (98%) rename {docs/pages => _pages}/chain/differences-between-ethereum-and-base.mdx (100%) rename {docs/pages => _pages}/chain/fees.mdx (100%) rename {docs/pages => _pages}/chain/flashblocks.mdx (100%) rename {docs/pages => _pages}/chain/index.mdx (100%) rename {docs/pages => _pages}/chain/network-faucets.mdx (95%) rename {docs/pages => _pages}/chain/network-information.mdx (98%) rename {docs/pages => _pages}/chain/node-providers.mdx (100%) rename {docs/pages => _pages}/chain/onboarding.mdx (100%) rename {docs/pages => _pages}/chain/onramps.mdx (100%) rename {docs/pages => _pages}/chain/oracles.mdx (99%) rename {docs/pages => _pages}/chain/registry-api.mdx (99%) rename {docs/pages => _pages}/chain/registry-faq.mdx (100%) rename docs/pages/chain/report.md => _pages/chain/report.mdx (100%) rename {docs/pages => _pages}/chain/run-a-base-node.mdx (98%) rename {docs/pages => _pages}/chain/security-council.mdx (100%) create mode 100644 _pages/chain/security.mdx rename docs/pages/chain/using-base.md => _pages/chain/using-base.mdx (100%) rename docs/pages/chain/wallet.md => _pages/chain/wallet.mdx (99%) rename docs/pages/chain/why-base.md => _pages/chain/why-base.mdx (98%) create mode 100644 _pages/cookbook/IPFS/deploy-with-fleek.mdx create mode 100644 _pages/cookbook/account-abstraction/account-abstraction-on-base-using-biconomy.mdx create mode 100644 _pages/cookbook/account-abstraction/account-abstraction-on-base-using-particle-network.mdx create mode 100644 _pages/cookbook/account-abstraction/account-abstraction-on-base-using-privy-and-the-base-paymaster.mdx create mode 100644 _pages/cookbook/account-abstraction/gasless-transactions-with-paymaster.mdx create mode 100644 _pages/cookbook/client-side-development/introduction-to-providers.mdx rename {docs/pages => _pages}/cookbook/client-side-development/viem.mdx (98%) create mode 100644 _pages/cookbook/client-side-development/web3.mdx rename {docs/pages => _pages}/cookbook/cross-chain/bridge-tokens-with-layerzero.mdx (99%) create mode 100644 _pages/cookbook/cross-chain/send-messages-and-tokens-from-base-chainlink.mdx rename {docs/pages => _pages}/cookbook/nfts/complex-onchain-nfts.mdx (99%) rename {docs/pages => _pages}/cookbook/nfts/dynamic-nfts.mdx (100%) rename {docs/pages => _pages}/cookbook/nfts/signature-mint.mdx (99%) rename {docs/pages => _pages}/cookbook/nfts/simple-onchain-nfts.mdx (99%) rename {docs/pages => _pages}/cookbook/nfts/thirdweb-unreal-nft-items.mdx (99%) create mode 100644 _pages/cookbook/smart-contract-development/foundry/deploy-with-foundry.mdx create mode 100644 _pages/cookbook/smart-contract-development/foundry/generate-random-numbers-contracts.mdx rename {docs/pages => _pages}/cookbook/smart-contract-development/foundry/setup-with-base.mdx (100%) rename {docs/pages => _pages}/cookbook/smart-contract-development/foundry/testing-smart-contracts.mdx (100%) create mode 100644 _pages/cookbook/smart-contract-development/foundry/verify-contract-with-basescan.mdx rename {docs/pages => _pages}/cookbook/smart-contract-development/hardhat/analyzing-test-coverage.mdx (100%) rename {docs/pages => _pages}/cookbook/smart-contract-development/hardhat/debugging-smart-contracts.mdx (100%) rename docs/pages/cookbook/smart-contract-development/hardhat/deploy-with-hardhat.md => _pages/cookbook/smart-contract-development/hardhat/deploy-with-hardhat.mdx (99%) rename docs/pages/cookbook/smart-contract-development/hardhat/optimizing-gas-usage.md => _pages/cookbook/smart-contract-development/hardhat/optimizing-gas-usage.mdx (100%) rename docs/pages/cookbook/smart-contract-development/hardhat/reducing-contract-size.md => _pages/cookbook/smart-contract-development/hardhat/reducing-contract-size.mdx (100%) rename {docs/pages => _pages}/cookbook/smart-contract-development/remix/deploy-with-remix.mdx (98%) rename {docs/pages => _pages}/cookbook/smart-contract-development/tenderly/deploy-with-tenderly.mdx (99%) rename {docs/pages => _pages}/cookbook/smart-contract-development/thirdweb/build-with-thirdweb.mdx (99%) rename {docs/pages => _pages}/cookbook/smart-contract-development/thirdweb/deploy-with-thirdweb.mdx (99%) rename {docs/pages => _pages}/cookbook/smart-contract-development/thirdweb/thirdweb-cli.mdx (97%) rename {docs/pages => _pages}/cookbook/smart-contract-development/thirdweb/thirdweb-sdk.mdx (99%) rename {docs/pages => _pages}/cookbook/token-gating/gate-irl-events-with-nouns.mdx (99%) rename {docs/pages => _pages}/cookbook/use-case-guides/cast-actions.mdx (99%) rename {docs/pages => _pages}/cookbook/use-case-guides/commerce/build-an-ecommerce-app.mdx (99%) rename {docs/pages => _pages}/cookbook/use-case-guides/commerce/deploy-a-shopify-storefront.mdx (97%) rename {docs/pages => _pages}/cookbook/use-case-guides/create-email-campaigns.mdx (99%) rename {docs/pages => _pages}/cookbook/use-case-guides/creator/convert-farcaster-frame-to-open-frame.mdx (98%) rename {docs/pages => _pages}/cookbook/use-case-guides/creator/nft-minting-with-zora.mdx (99%) rename {docs/pages => _pages}/cookbook/use-case-guides/deploy-to-vercel.mdx (99%) create mode 100644 _pages/cookbook/use-case-guides/finance/access-real-time-asset-data-pyth-price-feeds.mdx create mode 100644 _pages/cookbook/use-case-guides/finance/access-real-world-data-chainlink.mdx create mode 100644 _pages/cookbook/use-case-guides/finance/build-a-smart-wallet-funding-app.mdx rename {docs/pages => _pages}/cookbook/use-case-guides/gating-and-redirects.mdx (99%) rename {docs/pages => _pages}/cookbook/use-case-guides/hyperframes.mdx (99%) rename {docs/pages => _pages}/cookbook/use-case-guides/nft-minting.mdx (99%) rename {docs/pages => _pages}/cookbook/use-case-guides/no-code-minting.mdx (100%) rename {docs/pages => _pages}/cookbook/use-case-guides/transactions.mdx (99%) rename {docs/pages => _pages}/cookie-policy.mdx (100%) rename {docs/pages => _pages}/docs.mdx (100%) create mode 100644 _pages/feedback.mdx rename {docs/pages => _pages}/identity/basenames/basenames-faq.mdx (99%) rename {docs/pages => _pages}/identity/basenames/basenames-onchainkit-tutorial.mdx (98%) rename {docs/pages => _pages}/identity/basenames/basenames-wagmi-tutorial.mdx (99%) rename {docs/pages => _pages}/identity/index.mdx (100%) rename {docs/pages => _pages}/identity/mobile-wallet-protocol/batch.mdx (98%) rename {docs/pages => _pages}/identity/mobile-wallet-protocol/encryption.mdx (99%) rename {docs/pages => _pages}/identity/mobile-wallet-protocol/handshake.mdx (98%) rename {docs/pages => _pages}/identity/mobile-wallet-protocol/messages-example.mdx (100%) rename {docs/pages => _pages}/identity/mobile-wallet-protocol/messages-request.mdx (96%) rename {docs/pages => _pages}/identity/mobile-wallet-protocol/messages-response.mdx (97%) rename {docs/pages => _pages}/identity/mobile-wallet-protocol/messages.mdx (98%) rename {docs/pages => _pages}/identity/mobile-wallet-protocol/multi-chain.mdx (92%) rename {docs/pages => _pages}/identity/mobile-wallet-protocol/network.mdx (69%) rename {docs/pages => _pages}/identity/mobile-wallet-protocol/spec-overview.mdx (100%) rename {docs/pages => _pages}/identity/mobile-wallet-protocol/verification.mdx (96%) rename {docs/pages => _pages}/identity/smart-wallet/concepts/base-gasless-campaign.mdx (99%) rename {docs/pages => _pages}/identity/smart-wallet/concepts/features/built-in/MagicSpend.mdx (97%) rename {docs/pages => _pages}/identity/smart-wallet/concepts/features/built-in/networks.mdx (89%) rename {docs/pages => _pages}/identity/smart-wallet/concepts/features/built-in/passkeys.mdx (91%) rename {docs/pages => _pages}/identity/smart-wallet/concepts/features/built-in/recovery-keys.mdx (95%) rename {docs/pages => _pages}/identity/smart-wallet/concepts/features/built-in/single-sign-on.mdx (94%) rename {docs/pages => _pages}/identity/smart-wallet/concepts/features/optional/batch-operations.mdx (91%) rename {docs/pages => _pages}/identity/smart-wallet/concepts/features/optional/custom-gas-tokens.mdx (93%) rename {docs/pages => _pages}/identity/smart-wallet/concepts/features/optional/gas-free-transactions.mdx (92%) rename {docs/pages => _pages}/identity/smart-wallet/concepts/features/optional/spend-permissions.mdx (98%) rename {docs/pages => _pages}/identity/smart-wallet/concepts/features/optional/sub-accounts.mdx (95%) rename {docs/pages => _pages}/identity/smart-wallet/concepts/usage-details/gas-usage.mdx (96%) rename {docs/pages => _pages}/identity/smart-wallet/concepts/usage-details/popups.mdx (98%) rename {docs/pages => _pages}/identity/smart-wallet/concepts/usage-details/self-calls.mdx (87%) rename {docs/pages => _pages}/identity/smart-wallet/concepts/usage-details/signature-verification.mdx (98%) rename {docs/pages => _pages}/identity/smart-wallet/concepts/usage-details/simulations.mdx (91%) rename {docs/pages => _pages}/identity/smart-wallet/concepts/usage-details/wallet-library-support.mdx (96%) rename {docs/pages => _pages}/identity/smart-wallet/concepts/what-is-smart-wallet.mdx (96%) rename {docs/pages => _pages}/identity/smart-wallet/contribute/contribute-to-smart-wallet-docs.mdx (96%) rename {docs/pages => _pages}/identity/smart-wallet/contribute/security-and-bug-bounty.mdx (93%) rename {docs/pages => _pages}/identity/smart-wallet/examples/coin-a-joke-app.mdx (97%) create mode 100644 _pages/identity/smart-wallet/guides/batch-transactions.mdx rename {docs/pages => _pages}/identity/smart-wallet/guides/components/create-wallet-button.mdx (99%) rename {docs/pages => _pages}/identity/smart-wallet/guides/erc20-paymasters.mdx (99%) rename {docs/pages => _pages}/identity/smart-wallet/guides/magic-spend.mdx (97%) create mode 100644 _pages/identity/smart-wallet/guides/paymasters.mdx rename {docs/pages => _pages}/identity/smart-wallet/guides/signature-verification.mdx (99%) rename {docs/pages => _pages}/identity/smart-wallet/guides/signing-and-verifying-messages.mdx (98%) create mode 100644 _pages/identity/smart-wallet/guides/siwe.mdx create mode 100644 _pages/identity/smart-wallet/guides/spend-permissions.mdx rename {docs/pages => _pages}/identity/smart-wallet/guides/sub-accounts/index.mdx (98%) rename {docs/pages => _pages}/identity/smart-wallet/guides/sub-accounts/setup.mdx (97%) rename {docs/pages => _pages}/identity/smart-wallet/guides/sub-accounts/using-sub-accounts.mdx (98%) rename {docs/pages => _pages}/identity/smart-wallet/guides/tips/inspect-txn-simulation.mdx (90%) rename {docs/pages => _pages}/identity/smart-wallet/guides/tips/popup-tips.mdx (98%) rename {docs/pages => _pages}/identity/smart-wallet/quickstart/ai-tools-available-for-devs.mdx (95%) rename {docs/pages => _pages}/identity/smart-wallet/quickstart/index.mdx (97%) rename {docs/pages => _pages}/identity/smart-wallet/quickstart/nextjs-project.mdx (96%) rename {docs/pages => _pages}/identity/smart-wallet/quickstart/quick-demo.mdx (95%) rename {docs/pages => _pages}/identity/smart-wallet/quickstart/react-native-project.mdx (94%) create mode 100644 _pages/identity/smart-wallet/technical-reference/sdk/CoinbaseWalletProvider/Overview.mdx rename {docs/pages => _pages}/identity/smart-wallet/technical-reference/sdk/CoinbaseWalletProvider/eth_accounts.mdx (97%) rename {docs/pages => _pages}/identity/smart-wallet/technical-reference/sdk/CoinbaseWalletProvider/eth_blockNumber.mdx (88%) rename {docs/pages => _pages}/identity/smart-wallet/technical-reference/sdk/CoinbaseWalletProvider/eth_chainId.mdx (94%) rename {docs/pages => _pages}/identity/smart-wallet/technical-reference/sdk/CoinbaseWalletProvider/eth_coinbase.mdx (89%) rename {docs/pages => _pages}/identity/smart-wallet/technical-reference/sdk/CoinbaseWalletProvider/eth_estimateGas.mdx (97%) rename {docs/pages => _pages}/identity/smart-wallet/technical-reference/sdk/CoinbaseWalletProvider/eth_feeHistory.mdx (97%) rename {docs/pages => _pages}/identity/smart-wallet/technical-reference/sdk/CoinbaseWalletProvider/eth_gasPrice.mdx (89%) rename {docs/pages => _pages}/identity/smart-wallet/technical-reference/sdk/CoinbaseWalletProvider/eth_getBalance.mdx (94%) rename {docs/pages => _pages}/identity/smart-wallet/technical-reference/sdk/CoinbaseWalletProvider/eth_getBlockByHash.mdx (98%) rename {docs/pages => _pages}/identity/smart-wallet/technical-reference/sdk/CoinbaseWalletProvider/eth_getBlockByNumber.mdx (97%) rename {docs/pages => _pages}/identity/smart-wallet/technical-reference/sdk/CoinbaseWalletProvider/eth_getBlockTransactionCountByHash.mdx (92%) rename {docs/pages => _pages}/identity/smart-wallet/technical-reference/sdk/CoinbaseWalletProvider/eth_getBlockTransactionCountByNumber.mdx (92%) rename {docs/pages => _pages}/identity/smart-wallet/technical-reference/sdk/CoinbaseWalletProvider/eth_getCode.mdx (98%) rename {docs/pages => _pages}/identity/smart-wallet/technical-reference/sdk/CoinbaseWalletProvider/eth_getLogs.mdx (98%) rename {docs/pages => _pages}/identity/smart-wallet/technical-reference/sdk/CoinbaseWalletProvider/eth_getProof.mdx (97%) rename {docs/pages => _pages}/identity/smart-wallet/technical-reference/sdk/CoinbaseWalletProvider/eth_getStorageAt.mdx (95%) rename {docs/pages => _pages}/identity/smart-wallet/technical-reference/sdk/CoinbaseWalletProvider/eth_getTransactionByBlockHashAndIndex.mdx (96%) rename {docs/pages => _pages}/identity/smart-wallet/technical-reference/sdk/CoinbaseWalletProvider/eth_getTransactionByBlockNumberAndIndex.mdx (96%) rename {docs/pages => _pages}/identity/smart-wallet/technical-reference/sdk/CoinbaseWalletProvider/eth_getTransactionByHash.mdx (96%) rename {docs/pages => _pages}/identity/smart-wallet/technical-reference/sdk/CoinbaseWalletProvider/eth_getTransactionCount.mdx (93%) rename {docs/pages => _pages}/identity/smart-wallet/technical-reference/sdk/CoinbaseWalletProvider/eth_getTransactionReceipt.mdx (97%) rename {docs/pages => _pages}/identity/smart-wallet/technical-reference/sdk/CoinbaseWalletProvider/eth_getUncleCountByBlockHash.mdx (92%) rename {docs/pages => _pages}/identity/smart-wallet/technical-reference/sdk/CoinbaseWalletProvider/eth_getUncleCountByBlockNumber.mdx (93%) rename {docs/pages => _pages}/identity/smart-wallet/technical-reference/sdk/CoinbaseWalletProvider/eth_requestAccounts.mdx (97%) rename {docs/pages => _pages}/identity/smart-wallet/technical-reference/sdk/CoinbaseWalletProvider/eth_sendRawTransaction.mdx (94%) rename {docs/pages => _pages}/identity/smart-wallet/technical-reference/sdk/CoinbaseWalletProvider/eth_sendTransaction.mdx (97%) rename {docs/pages => _pages}/identity/smart-wallet/technical-reference/sdk/CoinbaseWalletProvider/eth_signTypedData_v4.mdx (99%) rename {docs/pages => _pages}/identity/smart-wallet/technical-reference/sdk/CoinbaseWalletProvider/personal_sign.mdx (95%) create mode 100644 _pages/identity/smart-wallet/technical-reference/sdk/CoinbaseWalletProvider/request-overview.mdx create mode 100644 _pages/identity/smart-wallet/technical-reference/sdk/CoinbaseWalletProvider/sdk-overview.mdx rename {docs/pages => _pages}/identity/smart-wallet/technical-reference/sdk/CoinbaseWalletProvider/wallet_addEthereumChain.mdx (97%) rename {docs/pages => _pages}/identity/smart-wallet/technical-reference/sdk/CoinbaseWalletProvider/wallet_addSubAccount.mdx (96%) rename {docs/pages => _pages}/identity/smart-wallet/technical-reference/sdk/CoinbaseWalletProvider/wallet_connect.mdx (98%) rename {docs/pages => _pages}/identity/smart-wallet/technical-reference/sdk/CoinbaseWalletProvider/wallet_switchEthereumChain.mdx (98%) rename {docs/pages => _pages}/identity/smart-wallet/technical-reference/sdk/CoinbaseWalletProvider/wallet_watchAsset.mdx (98%) rename {docs/pages => _pages}/identity/smart-wallet/technical-reference/sdk/CoinbaseWalletProvider/web3_clientVersion.mdx (90%) rename {docs/pages => _pages}/identity/smart-wallet/technical-reference/sdk/index.mdx (96%) rename {docs/pages => _pages}/identity/smart-wallet/technical-reference/sdk/sub-account-reference.mdx (98%) create mode 100644 _pages/identity/smart-wallet/technical-reference/spend-permissions/coinbase-fetchpermissions.mdx rename {docs/pages => _pages}/identity/smart-wallet/technical-reference/spend-permissions/spendpermissionmanager.mdx (97%) rename {docs/pages => _pages}/identity/wallet-sdk/adding-tokens-to-coinbase-wallet.mdx (98%) rename {docs/pages => _pages}/identity/wallet-sdk/android-api-reference.mdx (99%) rename {docs/pages => _pages}/identity/wallet-sdk/android-establishing-a-connection.mdx (98%) rename {docs/pages => _pages}/identity/wallet-sdk/android-install.mdx (100%) rename {docs/pages => _pages}/identity/wallet-sdk/android-making-requests.mdx (100%) rename {docs/pages => _pages}/identity/wallet-sdk/android-setup.mdx (97%) rename {docs/pages => _pages}/identity/wallet-sdk/developer-settings.mdx (97%) rename {docs/pages => _pages}/identity/wallet-sdk/disconnecting-links.mdx (100%) rename {docs/pages => _pages}/identity/wallet-sdk/environments.mdx (100%) rename {docs/pages => _pages}/identity/wallet-sdk/errors.mdx (100%) create mode 100644 _pages/identity/wallet-sdk/existing-welcome-page-features.mdx rename {docs/pages => _pages}/identity/wallet-sdk/faq.mdx (100%) rename {docs/pages => _pages}/identity/wallet-sdk/getting-eth-accounts.mdx (99%) rename {docs/pages => _pages}/identity/wallet-sdk/injected-provider-guidance.mdx (100%) rename {docs/pages => _pages}/identity/wallet-sdk/injected-provider.mdx (100%) rename {docs/pages => _pages}/identity/wallet-sdk/installing.mdx (99%) rename {docs/pages => _pages}/identity/wallet-sdk/ios-api-reference.mdx (100%) rename {docs/pages => _pages}/identity/wallet-sdk/ios-establishing-a-connection.mdx (100%) rename {docs/pages => _pages}/identity/wallet-sdk/ios-install.mdx (100%) rename {docs/pages => _pages}/identity/wallet-sdk/ios-making-requests.mdx (100%) rename {docs/pages => _pages}/identity/wallet-sdk/ios-setup.mdx (100%) rename {docs/pages => _pages}/identity/wallet-sdk/message-payment-xmtp-content-type.mdx (99%) create mode 100644 _pages/identity/wallet-sdk/mobile-dapp-integration-via-deep-linking.mdx rename {docs/pages => _pages}/identity/wallet-sdk/mobile-sdk-overview.mdx (98%) rename {docs/pages => _pages}/identity/wallet-sdk/sample-applications.mdx (100%) rename {docs/pages => _pages}/identity/wallet-sdk/setup.mdx (98%) create mode 100644 _pages/identity/wallet-sdk/smart-wallet.mdx rename {docs/pages => _pages}/identity/wallet-sdk/solana-adapter-guide.mdx (99%) rename {docs/pages => _pages}/identity/wallet-sdk/solana-connecting-accounts.mdx (100%) rename {docs/pages => _pages}/identity/wallet-sdk/solana-overview.mdx (100%) rename {docs/pages => _pages}/identity/wallet-sdk/solana-provider-api.mdx (98%) rename {docs/pages => _pages}/identity/wallet-sdk/solana-provider.mdx (97%) rename {docs/pages => _pages}/identity/wallet-sdk/solana-sending-transactions.mdx (99%) rename {docs/pages => _pages}/identity/wallet-sdk/solana-signing-messages.mdx (98%) rename {docs/pages => _pages}/identity/wallet-sdk/solana-wallet-adapter.mdx (100%) create mode 100644 _pages/identity/wallet-sdk/supported-environments.mdx rename {docs/pages => _pages}/identity/wallet-sdk/sw-rainbowkit.mdx (100%) rename {docs/pages => _pages}/identity/wallet-sdk/sw-setup.mdx (94%) rename {docs/pages => _pages}/identity/wallet-sdk/switching-chains.mdx (100%) rename {docs/pages => _pages}/identity/wallet-sdk/tracking-assets.mdx (100%) create mode 100644 _pages/identity/wallet-sdk/ux-guidelines.mdx rename {docs/pages => _pages}/identity/wallet-sdk/ux-tips.mdx (99%) rename {docs/pages => _pages}/identity/wallet-sdk/wallet-features.mdx (100%) create mode 100644 _pages/identity/wallet-sdk/wallet-mobile-sdk.mdx create mode 100644 _pages/identity/wallet-sdk/wallet-sdk-existing-section.mdx create mode 100644 _pages/identity/wallet-sdk/wallet-sdk-mobile-sdk.mdx rename {docs/pages => _pages}/identity/wallet-sdk/welcome.mdx (97%) rename {docs/pages => _pages}/identity/wallet-sdk/whitelisted-networks.mdx (100%) create mode 100644 _pages/identity/wallet-sdk/xmtp.mdx rename {docs/pages => _pages}/index.mdx (97%) rename {docs/pages => _pages}/learn/address-and-payable/address-and-payable.mdx (100%) rename {docs/pages => _pages}/learn/advanced-functions/function-modifiers-vid.mdx (79%) rename {docs/pages => _pages}/learn/advanced-functions/function-modifiers.mdx (99%) rename {docs/pages => _pages}/learn/advanced-functions/function-visibility-vid.mdx (80%) rename {docs/pages => _pages}/learn/advanced-functions/function-visibility.mdx (99%) rename {docs/pages => _pages}/learn/arrays/array-storage-layout-vid.mdx (79%) rename {docs/pages => _pages}/learn/arrays/arrays-exercise.mdx (97%) rename {docs/pages => _pages}/learn/arrays/arrays-in-solidity-vid.mdx (78%) rename {docs/pages => _pages}/learn/arrays/arrays-in-solidity.mdx (100%) rename {docs/pages => _pages}/learn/arrays/filtering-an-array-sbs.mdx (99%) rename {docs/pages => _pages}/learn/arrays/fixed-size-arrays-vid.mdx (78%) rename {docs/pages => _pages}/learn/arrays/writing-arrays-in-solidity-vid.mdx (80%) rename {docs/pages => _pages}/learn/contracts-and-basic-functions/basic-functions-exercise.mdx (99%) rename {docs/pages => _pages}/learn/contracts-and-basic-functions/basic-types.mdx (99%) rename {docs/pages => _pages}/learn/contracts-and-basic-functions/hello-world-step-by-step.mdx (100%) rename {docs/pages => _pages}/learn/contracts-and-basic-functions/intro-to-contracts-vid.mdx (81%) rename {docs/pages => _pages}/learn/control-structures/control-structures-exercise.mdx (99%) rename {docs/pages => _pages}/learn/control-structures/control-structures.mdx (99%) rename {docs/pages => _pages}/learn/control-structures/loops-vid.mdx (74%) rename {docs/pages => _pages}/learn/control-structures/require-revert-error-vid.mdx (80%) rename {docs/pages => _pages}/learn/control-structures/standard-control-structures-vid.mdx (80%) rename {docs/pages => _pages}/learn/deployment-to-testnet/contract-verification-sbs.mdx (99%) rename {docs/pages => _pages}/learn/deployment-to-testnet/deployment-to-base-sepolia-sbs.mdx (98%) rename {docs/pages => _pages}/learn/deployment-to-testnet/deployment-to-testnet-exercise.mdx (97%) rename {docs/pages => _pages}/learn/deployment-to-testnet/overview-of-test-networks-vid.mdx (80%) rename {docs/pages => _pages}/learn/deployment-to-testnet/test-networks.mdx (100%) rename {docs/pages => _pages}/learn/development-tools/overview.mdx (100%) rename {docs/pages => _pages}/learn/erc-20-token/analyzing-erc-20-vid.mdx (80%) rename {docs/pages => _pages}/learn/erc-20-token/erc-20-exercise.mdx (97%) rename {docs/pages => _pages}/learn/erc-20-token/erc-20-standard.mdx (100%) rename {docs/pages => _pages}/learn/erc-20-token/erc-20-testing-vid.mdx (78%) rename {docs/pages => _pages}/learn/erc-20-token/erc-20-token-sbs.mdx (99%) rename {docs/pages => _pages}/learn/erc-20-token/openzeppelin-erc-20-vid.mdx (82%) rename {docs/pages => _pages}/learn/erc-721-token/erc-721-exercise.mdx (97%) rename {docs/pages => _pages}/learn/erc-721-token/erc-721-on-opensea-vid.mdx (81%) rename {docs/pages => _pages}/learn/erc-721-token/erc-721-sbs.mdx (99%) rename {docs/pages => _pages}/learn/erc-721-token/erc-721-standard-video.mdx (81%) rename {docs/pages => _pages}/learn/erc-721-token/erc-721-standard.mdx (100%) rename {docs/pages => _pages}/learn/erc-721-token/implementing-an-erc-721-vid.mdx (79%) rename {docs/pages => _pages}/learn/erc-721-token/openzeppelin-erc-721-vid.mdx (83%) rename {docs/pages => _pages}/learn/error-triage/error-triage-exercise-source.sol (100%) rename {docs/pages => _pages}/learn/error-triage/error-triage-exercise.mdx (99%) rename {docs/pages => _pages}/learn/error-triage/error-triage-vid.mdx (76%) rename {docs/pages => _pages}/learn/error-triage/error-triage.mdx (99%) rename {docs/pages => _pages}/learn/ethereum-virtual-machine/evm-diagram.mdx (100%) rename {docs/pages => _pages}/learn/etherscan/etherscan-sbs.mdx (99%) rename {docs/pages => _pages}/learn/etherscan/etherscan-vid.mdx (79%) rename {docs/pages => _pages}/learn/events/hardhat-events-sbs.mdx (99%) rename {docs/pages => _pages}/learn/exercise-contracts.mdx (100%) rename {docs/pages => _pages}/learn/frontend-setup/building-an-onchain-app.mdx (98%) rename {docs/pages => _pages}/learn/frontend-setup/overview.mdx (100%) rename {docs/pages => _pages}/learn/frontend-setup/wallet-connectors.mdx (99%) create mode 100644 _pages/learn/hardhat-deploy/deployment-vid.mdx create mode 100644 _pages/learn/hardhat-deploy/hardhat-deploy-sbs.mdx create mode 100644 _pages/learn/hardhat-deploy/installing-hardhat-deploy-vid.mdx create mode 100644 _pages/learn/hardhat-deploy/setup-deploy-script-vid.mdx create mode 100644 _pages/learn/hardhat-deploy/test-network-configuration-vid.mdx create mode 100644 _pages/learn/hardhat-deploy/testing-our-deployment-vid.mdx rename {docs/pages => _pages}/learn/hardhat-forking/hardhat-forking.mdx (100%) create mode 100644 _pages/learn/hardhat-forking/mainnet-forking-vid.mdx rename {docs/pages => _pages}/learn/hardhat-setup-overview/creating-a-project-vid.mdx (79%) rename {docs/pages => _pages}/learn/hardhat-setup-overview/hardhat-overview-vid.mdx (76%) rename {docs/pages => _pages}/learn/hardhat-setup-overview/hardhat-setup-overview-sbs.mdx (100%) create mode 100644 _pages/learn/hardhat-testing/contract-abi-and-testing-vid.mdx rename {docs/pages => _pages}/learn/hardhat-testing/hardhat-testing-sbs.mdx (100%) create mode 100644 _pages/learn/hardhat-testing/testing-overview-vid.mdx create mode 100644 _pages/learn/hardhat-testing/writing-tests-vid.mdx rename {docs/pages => _pages}/learn/hardhat-tools-and-testing/overview.mdx (100%) rename {docs/pages => _pages}/learn/hardhat-verify/hardhat-verify-sbs.mdx (100%) create mode 100644 _pages/learn/hardhat-verify/hardhat-verify-vid.mdx rename {docs/pages => _pages}/learn/help-on-discord.mdx (100%) rename {docs/pages => _pages}/learn/imports/imports-exercise.mdx (98%) rename {docs/pages => _pages}/learn/imports/imports-sbs.mdx (99%) rename {docs/pages => _pages}/learn/imports/imports-vid.mdx (78%) rename {docs/pages => _pages}/learn/inheritance/abstract-contracts-sbs.mdx (100%) rename {docs/pages => _pages}/learn/inheritance/abstract-contracts-vid.mdx (80%) rename {docs/pages => _pages}/learn/inheritance/inheritance-exercise.mdx (98%) rename {docs/pages => _pages}/learn/inheritance/inheritance-sbs.mdx (100%) rename {docs/pages => _pages}/learn/inheritance/inheritance-vid.mdx (78%) rename {docs/pages => _pages}/learn/inheritance/multiple-inheritance-vid.mdx (81%) rename {docs/pages => _pages}/learn/inheritance/multiple-inheritance.mdx (100%) rename {docs/pages => _pages}/learn/interfaces/calling-another-contract-vid.mdx (85%) rename {docs/pages => _pages}/learn/interfaces/contract-to-contract-interaction.mdx (99%) rename {docs/pages => _pages}/learn/interfaces/intro-to-interfaces-vid.mdx (85%) rename {docs/pages => _pages}/learn/interfaces/testing-the-interface-vid.mdx (84%) rename {docs/pages => _pages}/learn/intro-to-tokens/intro-to-tokens-vid.mdx (79%) rename {docs/pages => _pages}/learn/intro-to-tokens/misconceptions-about-tokens-vid.mdx (81%) rename {docs/pages => _pages}/learn/intro-to-tokens/tokens-overview.mdx (100%) rename {docs/pages => _pages}/learn/introduction-to-ethereum/ethereum-applications.mdx (100%) rename {docs/pages => _pages}/learn/introduction-to-ethereum/ethereum-dev-overview-vid.mdx (81%) rename {docs/pages => _pages}/learn/introduction-to-ethereum/evm-diagram.mdx (99%) rename {docs/pages => _pages}/learn/introduction-to-ethereum/gas-use-in-eth-transactions.mdx (100%) rename {docs/pages => _pages}/learn/introduction-to-ethereum/intro-to-ethereum-vid.mdx (79%) rename {docs/pages => _pages}/learn/introduction-to-solidity/anatomy-of-a-smart-contract-vid.mdx (81%) rename {docs/pages => _pages}/learn/introduction-to-solidity/deployment-in-remix-vid.mdx (80%) rename {docs/pages => _pages}/learn/introduction-to-solidity/deployment-in-remix.mdx (100%) rename {docs/pages => _pages}/learn/introduction-to-solidity/introduction-to-remix-vid.mdx (79%) rename {docs/pages => _pages}/learn/introduction-to-solidity/introduction-to-remix.mdx (99%) rename {docs/pages => _pages}/learn/introduction-to-solidity/introduction-to-solidity-overview.mdx (100%) rename {docs/pages => _pages}/learn/introduction-to-solidity/introduction-to-solidity-vid.mdx (79%) rename {docs/pages => _pages}/learn/introduction-to-solidity/solidity-overview.mdx (99%) create mode 100644 _pages/learn/learning-objectives.mdx rename {docs/pages => _pages}/learn/mappings/how-mappings-are-stored-vid.mdx (79%) rename {docs/pages => _pages}/learn/mappings/mappings-exercise.mdx (99%) rename {docs/pages => _pages}/learn/mappings/mappings-sbs.mdx (100%) rename {docs/pages => _pages}/learn/mappings/mappings-vid.mdx (74%) rename {docs/pages => _pages}/learn/mappings/using-msg-sender-vid.mdx (78%) rename {docs/pages => _pages}/learn/minimal-tokens/creating-a-minimal-token-vid.mdx (80%) rename {docs/pages => _pages}/learn/minimal-tokens/minimal-token-sbs.mdx (99%) rename {docs/pages => _pages}/learn/minimal-tokens/minimal-tokens-exercise.mdx (98%) rename {docs/pages => _pages}/learn/minimal-tokens/transferring-a-minimal-token-vid.mdx (82%) rename {docs/pages => _pages}/learn/new-keyword/creating-a-new-contract-vid.mdx (83%) rename {docs/pages => _pages}/learn/new-keyword/new-keyword-exercise.mdx (98%) rename {docs/pages => _pages}/learn/new-keyword/new-keyword-sbs.mdx (99%) rename {docs/pages => _pages}/learn/reading-and-displaying-data/configuring-useReadContract.mdx (99%) rename {docs/pages => _pages}/learn/reading-and-displaying-data/useAccount.mdx (100%) rename {docs/pages => _pages}/learn/reading-and-displaying-data/useReadContract.mdx (99%) rename {docs/pages => _pages}/learn/storage/how-storage-works-video.mdx (78%) rename {docs/pages => _pages}/learn/storage/how-storage-works.mdx (100%) rename {docs/pages => _pages}/learn/storage/simple-storage-sbs.mdx (99%) rename {docs/pages => _pages}/learn/storage/simple-storage-video.mdx (77%) rename {docs/pages => _pages}/learn/storage/storage-exercise.mdx (97%) rename {docs/pages => _pages}/learn/structs/structs-exercise.mdx (99%) rename {docs/pages => _pages}/learn/structs/structs-sbs.mdx (100%) rename {docs/pages => _pages}/learn/structs/structs-vid.mdx (74%) rename {docs/pages => _pages}/learn/welcome.mdx (95%) rename {docs/pages => _pages}/learn/writing-to-contracts/useSimulateContract.mdx (100%) rename {docs/pages => _pages}/learn/writing-to-contracts/useWriteContract.mdx (99%) rename docs/pages/privacy-policy.md => _pages/privacy-policy.mdx (100%) create mode 100644 _pages/quickstart.mdx rename docs/pages/terms-of-service.md => _pages/terms-of-service.mdx (100%) create mode 100644 _pages/use-cases/accept-crypto-payments.mdx create mode 100644 _pages/use-cases/ai-instructions/eliza.mdx create mode 100644 _pages/use-cases/ai-instructions/langchain-local.mdx create mode 100644 _pages/use-cases/ai-instructions/langchain-replit.mdx rename {docs/pages => _pages}/use-cases/decentralize-social-app.mdx (83%) rename {docs/pages => _pages}/use-cases/defi-your-app.mdx (96%) rename {docs/pages => _pages}/use-cases/go-gasless.mdx (98%) rename {docs/pages => _pages}/use-cases/launch-ai-agents.mdx (100%) rename {docs/pages => _pages}/use-cases/onboard-any-user.mdx (58%) rename {docs/pages => _pages}/wallet-app/mini-apps.mdx (99%) delete mode 100644 api/submitFeedback.ts delete mode 100644 contexts/Theme.tsx create mode 100644 docs.json create mode 100644 docs/_docs.json create mode 100644 docs/base-chain/flashblocks/apps.mdx create mode 100644 docs/base-chain/flashblocks/node-providers.mdx create mode 100644 docs/base-chain/network-information/base-contracts.mdx create mode 100644 docs/base-chain/network-information/diffs-ethereum-base.mdx create mode 100644 docs/base-chain/network-information/ecosystem-contracts.mdx create mode 100644 docs/base-chain/network-information/network-fees.mdx create mode 100644 docs/base-chain/node-operators/performance-tuning.mdx create mode 100644 docs/base-chain/node-operators/run-a-base-node.mdx create mode 100644 docs/base-chain/node-operators/snapshots.mdx create mode 100644 docs/base-chain/node-operators/troubleshooting.mdx create mode 100644 docs/base-chain/quickstart/bridge-token.mdx create mode 100644 docs/base-chain/quickstart/connecting-to-base.mdx create mode 100644 docs/base-chain/quickstart/deploy-on-base.mdx create mode 100644 docs/base-chain/quickstart/why-base.mdx create mode 100644 docs/base-chain/security/avoid-malicious-flags.mdx create mode 100644 docs/base-chain/security/bug-bounty.mdx create mode 100644 docs/base-chain/security/report-vulnerability.mdx create mode 100644 docs/base-chain/security/security-council.mdx create mode 100644 docs/base-chain/tools/account-abstraction.mdx create mode 100644 docs/base-chain/tools/base-products.mdx create mode 100644 docs/base-chain/tools/block-explorers.mdx create mode 100644 docs/base-chain/tools/cross-chain.mdx create mode 100644 docs/base-chain/tools/data-indexers.mdx create mode 100644 docs/base-chain/tools/network-faucets.mdx create mode 100644 docs/base-chain/tools/node-providers.mdx create mode 100644 docs/base-chain/tools/onchain-registry-api.mdx create mode 100644 docs/base-chain/tools/onramps.mdx create mode 100644 docs/base-chain/tools/oracles.mdx create mode 100644 docs/base-chain/tools/tokens-in-wallet.mdx delete mode 100644 docs/components/App.tsx delete mode 100644 docs/config/guides.ts delete mode 100644 docs/constants.ts delete mode 100644 docs/contexts/AppProviders.tsx delete mode 100644 docs/contexts/CookieBannerWrapper.tsx create mode 100644 docs/cookbook/accept-crypto-payments.mdx create mode 100644 docs/cookbook/ai-prompting.mdx create mode 100644 docs/cookbook/base-builder-mcp.mdx create mode 100644 docs/cookbook/defi-your-app.mdx create mode 100644 docs/cookbook/defi/access-real-time-asset-data.mdx create mode 100644 docs/cookbook/defi/access-real-world-data.mdx create mode 100644 docs/cookbook/defi/add-in-app-funding.mdx create mode 100644 docs/cookbook/deploy-a-chain.mdx create mode 100644 docs/cookbook/go-gasless.mdx create mode 100644 docs/cookbook/growth/cast-actions.mdx create mode 100644 docs/cookbook/growth/deploy-to-vercel.mdx create mode 100644 docs/cookbook/growth/email-campaigns.mdx create mode 100644 docs/cookbook/growth/gating-and-redirects.mdx create mode 100644 docs/cookbook/growth/hyperframes.mdx create mode 100644 docs/cookbook/growth/retaining-users.mdx create mode 100644 docs/cookbook/launch-ai-agents.mdx create mode 100644 docs/cookbook/launch-tokens.mdx create mode 100644 docs/cookbook/nfts/complex-onchain-nfts.mdx create mode 100644 docs/cookbook/nfts/dynamic-nfts.mdx create mode 100644 docs/cookbook/nfts/nft-minting-zora.mdx create mode 100644 docs/cookbook/nfts/signature-mint.mdx create mode 100644 docs/cookbook/nfts/simple-onchain-nfts.mdx create mode 100644 docs/cookbook/nfts/thirdweb-unreal-nft-items.mdx create mode 100644 docs/cookbook/onboard-any-user.mdx create mode 100644 docs/cookbook/onchain-social.mdx create mode 100644 docs/cookbook/payments/build-ecommerce-app.mdx create mode 100644 docs/cookbook/payments/deploy-shopify-storefront.mdx create mode 100644 docs/cookbook/payments/transaction-guide.mdx create mode 100644 docs/cookbook/social/convert-farcaster-frame.mdx create mode 100644 docs/cookbook/social/farcaster-nft-minting-guide.mdx create mode 100644 docs/cookbook/social/farcaster-no-code-nft-minting.mdx create mode 100644 docs/custom.css create mode 100644 docs/docs.json delete mode 100644 docs/footer.tsx create mode 100644 docs/get-started/ai-prompting.mdx create mode 100644 docs/get-started/base.mdx create mode 100644 docs/get-started/build-app.mdx create mode 100644 docs/get-started/concepts.mdx create mode 100644 docs/get-started/deploy-chain.mdx create mode 100644 docs/get-started/deploy-smart-contracts.mdx create mode 100644 docs/get-started/get-funded.mdx create mode 100644 docs/get-started/launch-token.mdx create mode 100644 docs/get-started/products.mdx create mode 100644 docs/get-started/prompt-library.mdx create mode 100644 docs/get-started/use-cases.mdx create mode 100644 docs/get-started/use-cases/agents.mdx create mode 100644 docs/get-started/use-cases/defi.mdx create mode 100644 docs/get-started/use-cases/gasless.mdx create mode 100644 docs/get-started/use-cases/onboarding.mdx create mode 100644 docs/get-started/use-cases/payments.mdx create mode 100644 docs/get-started/use-cases/social.mdx create mode 100644 docs/iframe-theme.js rename docs/{public => }/images/account-abstraction/privy-console.png (100%) rename docs/{public => }/images/account-abstraction/privy-dashboard-page.png (100%) rename docs/{public => }/images/account-abstraction/privy-login-methods.png (100%) rename docs/{public => }/images/account-abstraction/privy-login-modal.png (100%) rename docs/{public => }/images/account-abstraction/privy-login-page.png (100%) rename docs/{public => }/images/base-docs-og.png (100%) rename docs/{public => }/images/basenames-tutorial/basename-profile-home.png (100%) rename docs/{public => }/images/basenames-tutorial/basenames-frame-final.png (100%) rename docs/{public => }/images/basenames-tutorial/basenames-homepage.png (100%) rename docs/{public => }/images/basenames-tutorial/confirm-textrecord-update.png (100%) rename docs/{public => }/images/basenames-tutorial/confirm-txn.png (100%) rename docs/{public => }/images/basenames-tutorial/edit-basename-profile.png (100%) rename docs/{public => }/images/basenames-tutorial/final-basename.png (100%) rename docs/{public => }/images/basenames-tutorial/frame-preview.png (100%) rename docs/{public => }/images/basenames-tutorial/frames-selector.png (100%) rename docs/{public => }/images/basenames-tutorial/preview-frame.png (100%) rename docs/{public => }/images/basenames-tutorial/profile-component-dropdown.png (100%) rename docs/{public => }/images/basenames-tutorial/show-preview.png (100%) rename docs/{public => }/images/basenames-tutorial/try-now.png (100%) rename docs/{public => }/images/build-with-nouns/auction.png (100%) rename docs/{public => }/images/build-with-nouns/create-dao.png (100%) rename docs/{public => }/images/build-with-thirdweb/car-color-nft.gif (100%) rename docs/{public => }/images/build-with-thirdweb/deploy-contract.png (100%) rename docs/{public => }/images/build-with-thirdweb/get-nft-colors.png (100%) rename docs/{public => }/images/build-with-thirdweb/hex-to-linear-color.png (100%) rename docs/{public => }/images/build-with-thirdweb/import-image-instance.png (100%) rename docs/{public => }/images/build-with-thirdweb/mint-nft.png (100%) rename docs/{public => }/images/build-with-thirdweb/open-thirdweb-manager.png (100%) rename docs/{public => }/images/build-with-thirdweb/open-unreal-project.png (100%) rename docs/{public => }/images/build-with-thirdweb/perform-nft-claim.png (100%) rename docs/{public => }/images/build-with-thirdweb/play-button.png (100%) rename docs/{public => }/images/build-with-thirdweb/scene-game.png (100%) rename docs/{public => }/images/build-with-thirdweb/token-airdrop-dashboard.png (100%) rename docs/{public => }/images/build-with-zora/cdp-pick-node.png (100%) rename docs/{public => }/images/build-with-zora/dashboard.png (100%) rename docs/{public => }/images/builder-anniversary-nft/builder-anniversary-nft-preview.webp (100%) rename docs/{public => }/images/connecting-to-the-blockchain/add-project-information.png (100%) rename docs/{public => }/images/connecting-to-the-blockchain/alchemy-new-app.png (100%) rename docs/{public => }/images/connecting-to-the-blockchain/blockdaemon-create-key.png (100%) rename docs/{public => }/images/connecting-to-the-blockchain/connected.png (100%) rename docs/{public => }/images/connecting-to-the-blockchain/quicknode-select-chain.png (100%) rename docs/{public => }/images/connecting-to-the-blockchain/rainbowkit-modal.png (100%) rename docs/{public => }/images/connecting-to-the-blockchain/wallet-connect-create-button.png (100%) rename docs/{public => }/images/deployment-with-remix/base-confirm-transaction.png (100%) rename docs/{public => }/images/deployment-with-remix/compiler-debug-log.png (100%) rename docs/{public => }/images/deployment-with-remix/editor-pane.png (100%) rename docs/{public => }/images/deployment-with-remix/remix-base-goerli-connected.png (100%) rename docs/{public => }/images/deployment-with-remix/remix-home.png (100%) rename docs/{public => }/images/deployment-with-remix/remix-terminal.png (100%) rename docs/{public => }/images/deployment-with-remix/select-provider.png (100%) rename docs/{public => }/images/deployment-with-remix/verify-and-publish.png (100%) rename docs/{public => }/images/deployment-with-tenderly/configuration.png (100%) rename docs/{public => }/images/deployment-with-tenderly/create-template.png (100%) rename docs/{public => }/images/deployment-with-tenderly/debugger-button.png (100%) rename docs/{public => }/images/deployment-with-tenderly/devnet-project-slug.png (100%) rename docs/{public => }/images/deployment-with-tenderly/github-actions.png (100%) rename docs/{public => }/images/deployment-with-tenderly/modifying-source.png (100%) rename docs/{public => }/images/deployment-with-tenderly/output.png (100%) rename docs/{public => }/images/deployment-with-tenderly/overrides.png (100%) rename docs/{public => }/images/deployment-with-tenderly/result-of-expression.png (100%) rename docs/{public => }/images/deployment-with-tenderly/result-of-simulation.png (100%) rename docs/{public => }/images/deployment-with-tenderly/setgreeting.png (100%) rename docs/{public => }/images/deployment-with-tenderly/simulation.png (100%) rename docs/{public => }/images/deployment-with-tenderly/simulator-button.png (100%) rename docs/{public => }/images/dynamic-nfts/NFT_level_1.png (100%) rename docs/{public => }/images/dynamic-nfts/NFT_level_2.png (100%) rename docs/{public => }/images/dynamic-nfts/NFT_level_3.png (100%) rename docs/{public => }/images/dynamic-nfts/all-characters.png (100%) rename docs/{public => }/images/dynamic-nfts/base-dynamic-nft.zip (100%) rename docs/{public => }/images/dynamic-nfts/image-level-1.png (100%) rename docs/{public => }/images/dynamic-nfts/image-level-2.png (100%) rename docs/{public => }/images/dynamic-nfts/image-level-3.png (100%) rename docs/{public => }/images/dynamic-nfts/mutable-references.png (100%) rename docs/{public => }/images/dynamic-nfts/open-sea-mockup.jpg (100%) rename docs/{public => }/images/dynamic-nfts/refresh-metadata.png (100%) rename docs/{public => }/images/frames/100-lines-frame.png (100%) rename docs/{public => }/images/frames/2024-a-base-odyssey.png (100%) rename docs/{public => }/images/frames/first-frame.png (100%) rename docs/{public => }/images/frames/gave-me-away.png (100%) rename docs/{public => }/images/frames/install-action.png (100%) rename docs/{public => }/images/frames/link-button-test.png (100%) rename docs/{public => }/images/frames/real-nft.png (100%) rename docs/{public => }/images/frames/story-time.png (100%) rename docs/{public => }/images/frames/updated-100-lines.png (100%) rename docs/{public => }/images/frames/vercel-build.png (100%) rename docs/{public => }/images/frames/vercel-import.png (100%) rename docs/{public => }/images/frames/vercel-install.png (100%) rename docs/{public => }/images/frames/vercel-projects.png (100%) rename "docs/public/images/gasless-transaction-on-base/Screenshot 2024-07-11 at 3.10.17\342\200\257PM.png" => "docs/images/gasless-transaction-on-base/Screenshot 2024-07-11 at 3.10.17\342\200\257PM.png" (100%) rename "docs/public/images/gasless-transaction-on-base/Screenshot 2024-07-11 at 8.05.25\342\200\257AM.png" => "docs/images/gasless-transaction-on-base/Screenshot 2024-07-11 at 8.05.25\342\200\257AM.png" (100%) rename docs/{public => }/images/gasless-transaction-on-base/cdp-allowlist-contract.png (100%) rename docs/{public => }/images/gasless-transaction-on-base/cdp-config.png (100%) rename docs/{public => }/images/gasless-transaction-on-base/cdp-global-user-limits.png (100%) rename docs/{public => }/images/gasless-transaction-on-base/cdp-home.png (100%) rename docs/{public => }/images/gasless-transaction-on-base/cdp-paymaster.png (100%) rename docs/{public => }/images/gasless-transaction-on-base/cdp-select-network.png (100%) rename docs/{public => }/images/gasless-transaction-on-base/cdp-select-project.png (100%) rename docs/{public => }/images/gasless-transaction-on-base/cdp-userops-10.png (100%) rename docs/{public => }/images/hardhat-test-coverage/coverage-report.png (100%) create mode 100644 docs/images/hero.png rename docs/{public => }/images/homepage/hero-background.png (100%) rename docs/{public => }/images/learn/deployment-to-testnet/add-injected-provider.png (100%) rename docs/{public => }/images/learn/deployment-to-testnet/balance.png (100%) rename docs/{public => }/images/learn/deployment-to-testnet/base-confirm-transaction.png (100%) rename docs/{public => }/images/learn/deployment-to-testnet/compiler-debug-log.png (100%) rename docs/{public => }/images/learn/deployment-to-testnet/confirm-transaction.png (100%) rename docs/{public => }/images/learn/deployment-to-testnet/connected.png (100%) rename docs/{public => }/images/learn/deployment-to-testnet/deployment-transaction.png (100%) rename docs/{public => }/images/learn/deployment-to-testnet/importance-of-testnets.png (100%) rename docs/{public => }/images/learn/deployment-to-testnet/remix-base-goerli-connected.png (100%) rename docs/{public => }/images/learn/deployment-to-testnet/select-provider.png (100%) rename docs/{public => }/images/learn/deployment-to-testnet/testnet-comparison.png (100%) rename docs/{public => }/images/learn/deployment-to-testnet/verify-and-publish.png (100%) rename docs/{public => }/images/learn/deployment-to-testnet/view-transaction.png (100%) rename docs/{public => }/images/learn/erc-20/deployed-token.png (100%) rename docs/{public => }/images/learn/erc-20/erc20-dev-perspective.png (100%) rename docs/{public => }/images/learn/erc-20/erc20-user-perspective.png (100%) rename docs/{public => }/images/learn/erc-20/evolution-eth-erc20.png (100%) rename docs/{public => }/images/learn/erc-721/erc-721-standard.png (100%) rename docs/{public => }/images/learn/erc-721/evolution-eth-erc721.png (100%) rename docs/{public => }/images/learn/error-triage/array-out-of-bounds.png (100%) rename docs/{public => }/images/learn/error-triage/debugger.png (100%) rename docs/{public => }/images/learn/error-triage/divide-by-zero.png (100%) rename docs/{public => }/images/learn/error-triage/gas-limit.png (100%) rename docs/{public => }/images/learn/error-triage/highlight-code.png (100%) rename docs/{public => }/images/learn/error-triage/underflow.png (100%) rename docs/{public => }/images/learn/ethereum-virtual-machine/evm-architecture-execution.png (100%) rename docs/{public => }/images/learn/ethereum-virtual-machine/evm-execution-basic.png (100%) rename docs/{public => }/images/learn/ethereum-virtual-machine/evm-stack-memory.png (100%) rename docs/{public => }/images/learn/ethereum-virtual-machine/opcode-execution.png (100%) rename docs/{public => }/images/learn/etherscan/bayc-query.png (100%) rename docs/{public => }/images/learn/etherscan/bayc-read.png (100%) rename docs/{public => }/images/learn/etherscan/bayc-verified.png (100%) rename docs/{public => }/images/learn/etherscan/bayc-write-connected.png (100%) rename docs/{public => }/images/learn/etherscan/bayc-write.png (100%) rename docs/{public => }/images/learn/etherscan/bayc.png (100%) rename docs/{public => }/images/learn/etherscan/blocks.png (100%) rename docs/{public => }/images/learn/etherscan/etherscan-user-interface.png (100%) rename docs/{public => }/images/learn/hardhat-deploying/new-deploy.png (100%) rename docs/{public => }/images/learn/hardhat-forking/hardhat-forking.png (100%) rename docs/{public => }/images/learn/hardhat-testing/autocomplete-unlockTime.png (100%) rename docs/{public => }/images/learn/hardhat-verify/hardhat-verify-success.png (100%) rename docs/{public => }/images/learn/hardhat-verify/hardhat-verify.png (100%) rename docs/{public => }/images/learn/hardhat-verify/harhat-verify-create-key.png (100%) rename docs/{public => }/images/learn/icons/coding-white.svg (100%) rename docs/{public => }/images/learn/icons/coding.svg (100%) rename docs/{public => }/images/learn/icons/quizzes-white.svg (100%) rename docs/{public => }/images/learn/icons/quizzes.svg (100%) rename docs/{public => }/images/learn/icons/reading-white.svg (100%) rename docs/{public => }/images/learn/icons/reading.svg (100%) rename docs/{public => }/images/learn/icons/stepbystep-white.svg (100%) rename docs/{public => }/images/learn/icons/stepbystep.svg (100%) rename docs/{public => }/images/learn/icons/video-white.svg (100%) rename docs/{public => }/images/learn/icons/video.svg (100%) rename docs/{public => }/images/learn/introduction-to-ethereum/btc-eth-comparison.png (100%) rename docs/{public => }/images/learn/introduction-to-ethereum/gas-costs.png (100%) rename docs/{public => }/images/learn/introduction-to-ethereum/web2-web3-development.png (100%) rename docs/{public => }/images/learn/introduction-to-ethereum/web2-web3-limitations.png (100%) rename docs/{public => }/images/learn/introduction-to-solidity/delete.png (100%) rename docs/{public => }/images/learn/introduction-to-solidity/deploy-button.png (100%) rename docs/{public => }/images/learn/introduction-to-solidity/editor-pane.png (100%) rename docs/{public => }/images/learn/introduction-to-solidity/key-value-store.png (100%) rename docs/{public => }/images/learn/introduction-to-solidity/remix-contract-buttons.png (100%) rename docs/{public => }/images/learn/introduction-to-solidity/remix-deploy-chevron.png (100%) rename docs/{public => }/images/learn/introduction-to-solidity/remix-deploy-log.png (100%) rename docs/{public => }/images/learn/introduction-to-solidity/remix-editor.png (100%) rename docs/{public => }/images/learn/introduction-to-solidity/remix-home.png (100%) rename docs/{public => }/images/learn/introduction-to-solidity/remix-retrieve.png (100%) rename docs/{public => }/images/learn/introduction-to-solidity/remix-settings.png (100%) rename docs/{public => }/images/learn/introduction-to-solidity/remix-terminal.png (100%) rename docs/{public => }/images/learn/introduction-to-solidity/remix-transaction-console.png (100%) rename docs/{public => }/images/learn/introduction-to-solidity/variable-order-inefficient.png (100%) rename docs/{public => }/images/learn/introduction-to-solidity/variable-order-optimized.png (100%) rename docs/{public => }/images/learn/introduction-to-solidity/variable-packing.png (100%) rename docs/{public => }/images/learn/introduction-to-tokens/erc-1155.png (100%) rename docs/{public => }/images/learn/introduction-to-tokens/erc-20.png (100%) rename docs/{public => }/images/learn/introduction-to-tokens/erc-721.png (100%) rename docs/{public => }/images/learn/minimal-tokens/balance.png (100%) rename docs/{public => }/images/learn/minimal-tokens/split-balances.png (100%) rename docs/{public => }/images/learn/minimal-tokens/transferred.png (100%) rename docs/{public => }/images/learn/new-keyword/at-address.png (100%) rename docs/{public => }/images/learn/new-keyword/deployed.png (100%) rename docs/{components/CafeUnitTest/assets/images => images/learn/nft-pins}/Base_Camp_NFT_01.png (100%) rename docs/{components/CafeUnitTest/assets/images => images/learn/nft-pins}/Base_Camp_NFT_02.png (100%) rename docs/{components/CafeUnitTest/assets/images => images/learn/nft-pins}/Base_Camp_NFT_03.png (100%) rename docs/{components/CafeUnitTest/assets/images => images/learn/nft-pins}/Base_Camp_NFT_04.png (100%) rename docs/{components/CafeUnitTest/assets/images => images/learn/nft-pins}/Base_Camp_NFT_05.png (100%) rename docs/{components/CafeUnitTest/assets/images => images/learn/nft-pins}/Base_Camp_NFT_06.png (100%) rename docs/{components/CafeUnitTest/assets/images => images/learn/nft-pins}/Base_Camp_NFT_07.png (100%) rename docs/{components/CafeUnitTest/assets/images => images/learn/nft-pins}/Base_Camp_NFT_08.png (100%) rename docs/{components/CafeUnitTest/assets/images => images/learn/nft-pins}/Base_Camp_NFT_09.png (100%) rename docs/{components/CafeUnitTest/assets/images => images/learn/nft-pins}/Base_Camp_NFT_10.png (100%) rename docs/{components/CafeUnitTest/assets/images => images/learn/nft-pins}/Base_Camp_NFT_11.png (100%) rename docs/{components/CafeUnitTest/assets/images => images/learn/nft-pins}/Base_Camp_NFT_12.png (100%) rename docs/{components/CafeUnitTest/assets/images => images/learn/nft-pins}/Base_Camp_NFT_13.png (100%) rename docs/{components/CafeUnitTest/assets/images => images/learn/nft-pins}/Base_Camp_NFT_14.png (100%) rename docs/{components/CafeUnitTest/assets/images => images/learn/nft-pins}/Base_Camp_NFT_15.png (100%) rename docs/{components/CafeUnitTest/assets/images => images/learn/nft-pins}/Base_Camp_NFT_16.png (100%) rename docs/{components/CafeUnitTest/assets/images => images/learn/nft-pins}/Base_Camp_NFT_17.png (100%) rename docs/{components/CafeUnitTest/assets/images => images/learn/nft-pins}/Base_Camp_NFT_18.png (100%) rename docs/{components/CafeUnitTest/assets/images => images/learn/nft-pins}/Base_Camp_NFT_19.png (100%) rename docs/{components/CafeUnitTest/assets/images => images/learn/nft-pins}/TestPin.png (100%) rename docs/{public => }/images/learn/reading-and-displaying-data/issues-console-log.png (100%) rename docs/{public => }/images/learn/reading-and-displaying-data/missing-data.png (100%) rename docs/{public => }/images/learn/storage/deployment-with-params.png (100%) rename docs/{public => }/images/learn/welcome/Base_Learn_Hero.png (100%) rename docs/{public => }/images/minikit/example_embed.png (100%) rename docs/{public => }/images/minikit/manifest-setup.png (100%) rename docs/{public => }/images/minikit/minikit-cli.gif (100%) rename docs/{public => }/images/mobile-wallet-protocol/diffie-hellman.png (100%) rename docs/{public => }/images/mobile-wallet-protocol/handshake.png (100%) rename docs/{public => }/images/mobile-wallet-protocol/overview.png (100%) rename docs/{public => }/images/onchain-generative-nfts/architecture.png (100%) rename docs/{public => }/images/onchain-generative-nfts/first_pass.png (100%) rename docs/{public => }/images/onchain-generative-nfts/mockup.png (100%) rename docs/{public => }/images/onchain-generative-nfts/progress.png (100%) rename docs/{public => }/images/onchainkit-tutorials/fund-funding-options.png (100%) rename docs/{public => }/images/onchainkit-tutorials/fund-onramp-config.png (100%) rename docs/{public => }/images/onchainkit-tutorials/fund-wallet-balance.png (100%) rename docs/{public => }/images/onchainkit-tutorials/pay-commerce-products.png (100%) rename docs/{public => }/images/onchainkit-tutorials/pay-copy-product-link.png (100%) rename docs/{public => }/images/onchainkit-tutorials/pay-create-product-details.png (100%) rename docs/{public => }/images/onchainkit-tutorials/pay-final-product.png (100%) rename docs/{public => }/images/onchainkit/NFTCard.gif (100%) rename docs/{public => }/images/onchainkit/NFTMintCard.gif (100%) rename docs/{public => }/images/onchainkit/buy.gif (100%) rename docs/{public => }/images/onchainkit/checkout.gif (100%) rename docs/{public => }/images/onchainkit/commerce-1.png (100%) rename docs/{public => }/images/onchainkit/commerce-2.png (100%) rename docs/{public => }/images/onchainkit/commerce-3.png (100%) rename docs/{public => }/images/onchainkit/commerce-4.png (100%) rename docs/{public => }/images/onchainkit/copy-api-key-guide.png (100%) rename docs/{public => }/images/onchainkit/copy-project-id.png (100%) rename docs/{public => }/images/onchainkit/cursor-dir.gif (100%) rename docs/{public => }/images/onchainkit/fetch-frame-part-II.png (100%) rename docs/{public => }/images/onchainkit/fetch-frame.png (100%) rename docs/{public => }/images/onchainkit/frame.png (100%) rename docs/{public => }/images/onchainkit/fund-card.gif (100%) rename docs/{public => }/images/onchainkit/getting-started-create-env-file.png (100%) rename docs/{public => }/images/onchainkit/onchain-app-template-1.png (100%) rename docs/{public => }/images/onchainkit/onchain-figma.png (100%) rename docs/{public => }/images/onchainkit/onchainkit-components-paymaster-endpoint.png (100%) rename docs/{public => }/images/onchainkit/onchainkit-components-transaction-anatomy.png (100%) rename docs/{public => }/images/onchainkit/onchainkit-figma-design-components.png (100%) rename docs/{public => }/images/onchainkit/onchainkit-figma-design-how-to-use.png (100%) rename docs/{public => }/images/onchainkit/onchainkit-figma-design.png (100%) rename docs/{public => }/images/onchainkit/onchainkit-identity.png (100%) rename docs/{public => }/images/onchainkit/onchainkit-lifecycle-status-vibes.png (100%) rename docs/{public => }/images/onchainkit/onchainkit-template.png (100%) rename docs/{public => }/images/onchainkit/onchainkit-themes.gif (100%) rename docs/{public => }/images/onchainkit/onchainkit-token.png (100%) rename docs/{public => }/images/onchainkit/onchainkit-wallet-1.png (100%) rename docs/{public => }/images/onchainkit/onchainkit-wallet-2.png (100%) rename docs/{public => }/images/onchainkit/onramp-secure-init.png (100%) rename docs/{public => }/images/onchainkit/pay-button.png (100%) rename docs/{public => }/images/onchainkit/quickstart.png (100%) rename docs/{public => }/images/onchainkit/use-onchain-app-template.png (100%) rename docs/{public => }/images/onchainkit/wallet-island.gif (100%) rename docs/{public => }/images/onchainkit/wallet-modal.gif (100%) rename docs/{public => }/images/onchainkit/wallet-modal.png (100%) rename docs/{public => }/images/onchainkit/warpcast-logo.png (100%) rename docs/{public => }/images/openframes-fc/debugger-of-not-valid-zoom.png (100%) rename docs/{public => }/images/openframes-fc/debugger-of-not-valid.png (100%) rename docs/{public => }/images/openframes-fc/debugger-of-valid.png (100%) rename docs/{public => }/images/openframes-fc/debugger-protocol-selector.png (100%) rename docs/{public => }/images/openframes-fc/frame-custom-no-url.png (100%) rename docs/{public => }/images/openframes-fc/frame-custom-url.png (100%) rename docs/{public => }/images/paymaster/pb-paymaster-chainid.png (100%) rename docs/{public => }/images/paymaster/pb-paymaster-config-highlight.png (100%) rename docs/{public => }/images/paymaster/pb-paymaster-config.png (100%) rename docs/{public => }/images/paymaster/pb-paymaster-policy-erc20-flow.png (100%) rename docs/{public => }/images/paymaster/pb-paymaster-policy-erc20.png (100%) rename docs/{public => }/images/paymaster/pb-paymaster-tenderly-dev-debug.png (100%) rename docs/{public => }/images/paymaster/pb-paymaster-tenderly-entrypoint.png (100%) rename docs/{public => }/images/paymaster/pb-sponsorship-scw.png (100%) rename docs/{public => }/images/resend-email-campaigns/ock-dashboard.png (100%) rename docs/{public => }/images/resend-email-campaigns/ock-use-template.png (100%) rename docs/{public => }/images/resend-email-campaigns/resend-1.gif (100%) rename docs/{public => }/images/resend-email-campaigns/resend-api-keys.png (100%) rename docs/{public => }/images/resend-email-campaigns/resend-contact-added.png (100%) rename docs/{public => }/images/resend-email-campaigns/resend-mailing-list-prompt.png (100%) rename docs/{public => }/images/resend-email-campaigns/resend-user-subscribed.png (100%) rename docs/{public => }/images/resend-email-campaigns/site-load.png (100%) rename docs/{public => }/images/resend-email-campaigns/vercel-import-project.png (100%) rename docs/{public => }/images/resend-email-campaigns/verel-login.png (100%) rename docs/{public => }/images/resend-email-campaigns/wc-project-page.png (100%) rename docs/{public => }/images/shopify-storefront-commerce/shopify-install-commerce.gif (100%) create mode 100644 docs/images/showcase/aerodrome.svg create mode 100644 docs/images/showcase/blocklords.svg create mode 100644 docs/images/showcase/cat-town.svg create mode 100644 docs/images/showcase/heyelsa.svg create mode 100644 docs/images/showcase/morpho.svg create mode 100644 docs/images/showcase/opensea.svg rename docs/{public => }/images/smart-wallet/CDPSteps.png (100%) rename docs/{public => }/images/smart-wallet/PaymasterAllowlist.png (100%) rename docs/{public => }/images/smart-wallet/PaymasterCDP.png (100%) rename docs/{public => }/images/smart-wallet/ReownSteps.png (100%) rename docs/{public => }/images/smart-wallet/accountRecovery.png (100%) rename docs/{public => }/images/smart-wallet/buttonPlacementExamples.png (100%) rename docs/{public => }/images/smart-wallet/copyTxnSimClickZone.png (100%) rename docs/{public => }/images/smart-wallet/create-a-passkey.png (100%) rename docs/{public => }/images/smart-wallet/createWalletButtonBlack.png (100%) rename docs/{public => }/images/smart-wallet/createWalletButtonBlue.png (100%) rename docs/{public => }/images/smart-wallet/customized-rainbow.png (100%) rename docs/{public => }/images/smart-wallet/customized-wallet-list.png (100%) rename docs/{public => }/images/smart-wallet/examplePlacement.png (100%) rename docs/{public => }/images/smart-wallet/logo.svg (100%) rename docs/{public => }/images/smart-wallet/meme-vs-content.png (100%) rename docs/{public => }/images/smart-wallet/onchainkit-default-eoa.png (100%) rename docs/{public => }/images/smart-wallet/onchainkit-default-smart.png (100%) rename docs/{public => }/images/smart-wallet/one-click-pay.png (100%) rename docs/{public => }/images/smart-wallet/pendingOwnershipChange.png (100%) rename docs/{public => }/images/smart-wallet/rainbow-smart-wallet.png (100%) rename docs/{public => }/images/smart-wallet/rainbowkit-default.png (100%) rename docs/{public => }/images/smart-wallet/random-color-nft.png (100%) rename docs/{public => }/images/smart-wallet/recoveryKeyAddPasskey.png (100%) rename docs/{public => }/images/smart-wallet/recoveryKeyCreated.png (100%) rename docs/{public => }/images/smart-wallet/recoveryKeyScamWarning.png (100%) rename docs/{public => }/images/smart-wallet/recoveryKeySignIn.png (100%) rename docs/{public => }/images/smart-wallet/sponsored-by-base.png (100%) rename docs/{public => }/images/smart-wallet/sub-account-demo.gif (100%) rename docs/{public => }/images/smart-wallet/sub-account-popup.png (100%) rename docs/{public => }/images/smart-wallet/submitRecoveryKey.png (100%) rename docs/{public => }/images/smart-wallet/wagmi-template-normal.png (100%) rename docs/{public => }/images/verifications/attestation-creation-flow.png (100%) rename docs/{public => }/images/verifications/coinbase-verification-flow.png (100%) rename docs/{public => }/images/verifications/developer-data-flow.png (100%) rename docs/{public => }/images/verifications/onchain-attestation.png (100%) rename docs/{public => }/images/verifications/rpc-endpoint.png (100%) rename docs/{public => }/images/verify-with-basescan-api/basescan-apikey-page-add.png (100%) rename docs/{public => }/images/verify-with-basescan-api/basescan-apikey-page.png (100%) rename docs/{public => }/images/verify-with-basescan-api/basescan-menu.png (100%) rename docs/{public => }/images/verify-with-basescan-api/cbw-show-private-key.png (100%) rename docs/{public => }/images/verify-with-basescan-api/cdp-node-full.png (100%) rename docs/{public => }/images/verify-with-basescan-api/cdp-rpc-url.png (100%) rename docs/{public => }/images/wallet-sdk/developer-settings-overview.gif (100%) rename docs/{public => }/images/wallet-sdk/dynamic-coinbase.jpg (100%) rename docs/{public => }/images/wallet-sdk/dynamic.jpg (100%) rename docs/{public => }/images/wallet-sdk/plaid-link-demo.png (100%) rename docs/{public => }/images/wallet-sdk/show-private-key (1).gif (100%) rename docs/{public => }/images/wallet-sdk/show-private-key.gif (100%) rename docs/{public => }/images/wallet-sdk/smart-wallet-create-passkey-2.png (100%) rename docs/{public => }/images/wallet-sdk/smart-wallet-create-passkey.png (100%) rename docs/{public => }/images/wallet-sdk/smart-wallet-entry.png (100%) rename docs/{public => }/images/wallet-sdk/testnet-assets.png (100%) rename docs/{public => }/images/wallet-sdk/testnets.png (100%) rename docs/{public => }/images/wallet-sdk/wagmi_custom_modal.png (100%) rename docs/{public => }/images/wallet-sdk/wallet-onboard.png (100%) rename docs/{public => }/images/wallet-sdk/web3-onboard_modal.png (100%) rename docs/{public => }/images/wallet-sdk/web3-react_custom_modal.png (100%) rename docs/{public => }/images/wallet-sdk/web3modal_modal.png (100%) create mode 100644 docs/index.mdx delete mode 100644 docs/layout.tsx create mode 100644 docs/learn/address-and-payable/address-and-payable.mdx create mode 100644 docs/learn/advanced-functions/function-modifiers-vid.mdx create mode 100644 docs/learn/advanced-functions/function-modifiers.mdx create mode 100644 docs/learn/advanced-functions/function-visibility-vid.mdx create mode 100644 docs/learn/advanced-functions/function-visibility.mdx create mode 100644 docs/learn/arrays/array-storage-layout-vid.mdx create mode 100644 docs/learn/arrays/arrays-exercise.mdx create mode 100644 docs/learn/arrays/arrays-in-solidity-vid.mdx create mode 100644 docs/learn/arrays/arrays-in-solidity.mdx create mode 100644 docs/learn/arrays/filtering-an-array-sbs.mdx create mode 100644 docs/learn/arrays/fixed-size-arrays-vid.mdx create mode 100644 docs/learn/arrays/writing-arrays-in-solidity-vid.mdx create mode 100644 docs/learn/client-side-development.mdx create mode 100644 docs/learn/contracts-and-basic-functions/basic-functions-exercise.mdx create mode 100644 docs/learn/contracts-and-basic-functions/basic-types.mdx create mode 100644 docs/learn/contracts-and-basic-functions/hello-world-step-by-step.mdx create mode 100644 docs/learn/contracts-and-basic-functions/intro-to-contracts-vid.mdx create mode 100644 docs/learn/control-structures/control-structures-exercise.mdx create mode 100644 docs/learn/control-structures/control-structures.mdx create mode 100644 docs/learn/control-structures/loops-vid.mdx create mode 100644 docs/learn/control-structures/require-revert-error-vid.mdx create mode 100644 docs/learn/control-structures/standard-control-structures-vid.mdx create mode 100644 docs/learn/cross-chain-development.mdx create mode 100644 docs/learn/deployment-to-testnet/contract-verification-sbs.mdx create mode 100644 docs/learn/deployment-to-testnet/deployment-to-base-sepolia-sbs.mdx create mode 100644 docs/learn/deployment-to-testnet/deployment-to-testnet-exercise.mdx create mode 100644 docs/learn/deployment-to-testnet/overview-of-test-networks-vid.mdx create mode 100644 docs/learn/deployment-to-testnet/test-networks.mdx create mode 100644 docs/learn/erc-20-token/analyzing-erc-20-vid.mdx create mode 100644 docs/learn/erc-20-token/erc-20-exercise.mdx create mode 100644 docs/learn/erc-20-token/erc-20-standard.mdx create mode 100644 docs/learn/erc-20-token/erc-20-testing-vid.mdx create mode 100644 docs/learn/erc-20-token/erc-20-token-sbs.mdx create mode 100644 docs/learn/erc-20-token/openzeppelin-erc-20-vid.mdx create mode 100644 docs/learn/erc-721-token/erc-721-exercise.mdx create mode 100644 docs/learn/erc-721-token/erc-721-on-opensea-vid.mdx create mode 100644 docs/learn/erc-721-token/erc-721-sbs.mdx create mode 100644 docs/learn/erc-721-token/erc-721-standard-video.mdx create mode 100644 docs/learn/erc-721-token/erc-721-standard.mdx create mode 100644 docs/learn/erc-721-token/implementing-an-erc-721-vid.mdx create mode 100644 docs/learn/erc-721-token/openzeppelin-erc-721-vid.mdx create mode 100644 docs/learn/error-triage/error-triage-exercise-source.sol create mode 100644 docs/learn/error-triage/error-triage-exercise.mdx create mode 100644 docs/learn/error-triage/error-triage-vid.mdx create mode 100644 docs/learn/error-triage/error-triage.mdx create mode 100644 docs/learn/ethereum-applications.mdx create mode 100644 docs/learn/ethereum-dev-overview.mdx create mode 100644 docs/learn/events/hardhat-events-sbs.mdx create mode 100644 docs/learn/evm-diagram.mdx create mode 100644 docs/learn/exercise-contracts.mdx rename docs/{pages/cookbook/smart-contract-development => learn}/foundry/deploy-with-foundry.mdx (100%) rename docs/{pages/cookbook/smart-contract-development => learn}/foundry/generate-random-numbers-contracts.md (100%) create mode 100644 docs/learn/foundry/introduction-to-foundry.mdx create mode 100644 docs/learn/foundry/setup-with-base.mdx create mode 100644 docs/learn/foundry/testing-smart-contracts.mdx create mode 100644 docs/learn/foundry/testing.mdx rename docs/{pages/cookbook/smart-contract-development => learn}/foundry/verify-contract-with-basescan.md (100%) create mode 100644 docs/learn/gas-use-in-eth-transactions.mdx create mode 100644 docs/learn/guide-to-base.mdx create mode 100644 docs/learn/hardhat/analyzing-test-coverage.mdx rename docs/{pages/learn/hardhat-testing => learn/hardhat}/contract-abi-and-testing-vid.mdx (82%) create mode 100644 docs/learn/hardhat/contract-abi-testing.mdx create mode 100644 docs/learn/hardhat/creating-project.mdx create mode 100644 docs/learn/hardhat/debugging-smart-contracts.mdx create mode 100644 docs/learn/hardhat/deploy-with-hardhat.mdx create mode 100644 docs/learn/hardhat/deployment-guide.mdx rename docs/{pages/learn/hardhat-deploy => learn/hardhat}/deployment-vid.mdx (76%) create mode 100644 docs/learn/hardhat/deployment.mdx create mode 100644 docs/learn/hardhat/etherscan-guide.mdx create mode 100644 docs/learn/hardhat/etherscan-video.mdx create mode 100644 docs/learn/hardhat/fork-guide.mdx create mode 100644 docs/learn/hardhat/fork-video.mdx rename docs/{pages/learn/hardhat-deploy => learn/hardhat}/hardhat-deploy-sbs.mdx (100%) create mode 100644 docs/learn/hardhat/hardhat-forking.mdx create mode 100644 docs/learn/hardhat/hardhat-testing-sbs.mdx create mode 100644 docs/learn/hardhat/hardhat-verify-sbs.mdx rename docs/{pages/learn/hardhat-verify => learn/hardhat}/hardhat-verify-vid.mdx (81%) create mode 100644 docs/learn/hardhat/installing-deploy.mdx rename docs/{pages/learn/hardhat-deploy => learn/hardhat}/installing-hardhat-deploy-vid.mdx (82%) rename docs/{pages/learn/hardhat-forking => learn/hardhat}/mainnet-forking-vid.mdx (80%) create mode 100644 docs/learn/hardhat/network-configuration.mdx create mode 100644 docs/learn/hardhat/optimizing-gas-usage.md create mode 100644 docs/learn/hardhat/overview.mdx create mode 100644 docs/learn/hardhat/reducing-contract-size.md rename docs/{pages/learn/hardhat-deploy => learn/hardhat}/setup-deploy-script-vid.mdx (82%) create mode 100644 docs/learn/hardhat/setup-deploy-script.mdx create mode 100644 docs/learn/hardhat/setup.mdx rename docs/{pages/learn/hardhat-deploy => learn/hardhat}/test-network-configuration-vid.mdx (80%) create mode 100644 docs/learn/hardhat/testing-deployment.mdx create mode 100644 docs/learn/hardhat/testing-guide.mdx rename docs/{pages/learn/hardhat-deploy => learn/hardhat}/testing-our-deployment-vid.mdx (80%) rename docs/{pages/learn/hardhat-testing => learn/hardhat}/testing-overview-vid.mdx (79%) create mode 100644 docs/learn/hardhat/testing.mdx create mode 100644 docs/learn/hardhat/verify-guide.mdx create mode 100644 docs/learn/hardhat/verify-video.mdx rename docs/{pages/learn/hardhat-testing => learn/hardhat}/writing-tests-vid.mdx (78%) create mode 100644 docs/learn/hardhat/writing-tests.mdx create mode 100644 docs/learn/imports/imports-exercise.mdx create mode 100644 docs/learn/imports/imports-sbs.mdx create mode 100644 docs/learn/imports/imports-vid.mdx create mode 100644 docs/learn/inheritance/abstract-contracts-sbs.mdx create mode 100644 docs/learn/inheritance/abstract-contracts-vid.mdx create mode 100644 docs/learn/inheritance/inheritance-exercise.mdx create mode 100644 docs/learn/inheritance/inheritance-sbs.mdx create mode 100644 docs/learn/inheritance/inheritance-vid.mdx create mode 100644 docs/learn/inheritance/multiple-inheritance-vid.mdx create mode 100644 docs/learn/inheritance/multiple-inheritance.mdx create mode 100644 docs/learn/interfaces/calling-another-contract-vid.mdx create mode 100644 docs/learn/interfaces/contract-to-contract-interaction.mdx create mode 100644 docs/learn/interfaces/intro-to-interfaces-vid.mdx create mode 100644 docs/learn/interfaces/testing-the-interface-vid.mdx create mode 100644 docs/learn/intro-to-tokens/intro-to-tokens-vid.mdx create mode 100644 docs/learn/intro-to-tokens/misconceptions-about-tokens-vid.mdx create mode 100644 docs/learn/intro-to-tokens/tokens-overview.mdx create mode 100644 docs/learn/introduction-to-ethereum.mdx create mode 100644 docs/learn/introduction-to-solidity/anatomy-of-a-smart-contract-vid.mdx create mode 100644 docs/learn/introduction-to-solidity/deployment-in-remix-vid.mdx create mode 100644 docs/learn/introduction-to-solidity/deployment-in-remix.mdx create mode 100644 docs/learn/introduction-to-solidity/introduction-to-remix-vid.mdx create mode 100644 docs/learn/introduction-to-solidity/introduction-to-remix.mdx create mode 100644 docs/learn/introduction-to-solidity/introduction-to-solidity-overview.mdx create mode 100644 docs/learn/introduction-to-solidity/introduction-to-solidity-vid.mdx create mode 100644 docs/learn/introduction-to-solidity/solidity-overview.mdx create mode 100644 docs/learn/mappings/how-mappings-are-stored-vid.mdx create mode 100644 docs/learn/mappings/mappings-exercise.mdx create mode 100644 docs/learn/mappings/mappings-sbs.mdx create mode 100644 docs/learn/mappings/mappings-vid.mdx create mode 100644 docs/learn/mappings/using-msg-sender-vid.mdx create mode 100644 docs/learn/minimal-tokens/creating-a-minimal-token-vid.mdx create mode 100644 docs/learn/minimal-tokens/minimal-token-sbs.mdx create mode 100644 docs/learn/minimal-tokens/minimal-tokens-exercise.mdx create mode 100644 docs/learn/minimal-tokens/transferring-a-minimal-token-vid.mdx create mode 100644 docs/learn/new-keyword/creating-a-new-contract-vid.mdx create mode 100644 docs/learn/new-keyword/new-keyword-exercise.mdx create mode 100644 docs/learn/new-keyword/new-keyword-sbs.mdx create mode 100644 docs/learn/onchain-app-development/account-abstraction.mdx rename docs/{pages/cookbook => learn/onchain-app-development}/account-abstraction/account-abstraction-on-base-using-biconomy.mdx (100%) rename docs/{pages/cookbook => learn/onchain-app-development}/account-abstraction/account-abstraction-on-base-using-particle-network.mdx (100%) rename docs/{pages/cookbook => learn/onchain-app-development}/account-abstraction/account-abstraction-on-base-using-privy-and-the-base-paymaster.mdx (100%) rename docs/{pages/cookbook => learn/onchain-app-development}/account-abstraction/gasless-transactions-with-paymaster.mdx (100%) rename docs/{pages/cookbook => learn/onchain-app-development}/client-side-development/introduction-to-providers.mdx (100%) create mode 100644 docs/learn/onchain-app-development/client-side-development/viem.mdx rename docs/{pages/cookbook => learn/onchain-app-development}/client-side-development/web3.mdx (99%) create mode 100644 docs/learn/onchain-app-development/cross-chain/bridge-tokens-with-layerzero.mdx rename docs/{pages/cookbook => learn/onchain-app-development}/cross-chain/send-messages-and-tokens-from-base-chainlink.mdx (99%) rename docs/{pages/cookbook/IPFS => learn/onchain-app-development}/deploy-with-fleek.mdx (100%) rename docs/{pages/cookbook/use-case-guides => learn/onchain-app-development}/finance/access-real-time-asset-data-pyth-price-feeds.mdx (100%) rename docs/{pages/cookbook/use-case-guides => learn/onchain-app-development}/finance/access-real-world-data-chainlink.mdx (100%) rename docs/{pages/cookbook/use-case-guides => learn/onchain-app-development}/finance/build-a-smart-wallet-funding-app.mdx (100%) create mode 100644 docs/learn/onchain-concepts/building-onchain-ai.mdx create mode 100644 docs/learn/onchain-concepts/building-onchain-frontend-development.mdx create mode 100644 docs/learn/onchain-concepts/building-onchain-gas.mdx create mode 100644 docs/learn/onchain-concepts/building-onchain-identity.mdx create mode 100644 docs/learn/onchain-concepts/building-onchain-nodes.mdx create mode 100644 docs/learn/onchain-concepts/building-onchain-onramps.mdx create mode 100644 docs/learn/onchain-concepts/building-onchain-social-networks.mdx create mode 100644 docs/learn/onchain-concepts/building-onchain-wallets.mdx create mode 100644 docs/learn/onchain-concepts/continue-building-onchain.mdx create mode 100644 docs/learn/onchain-concepts/core-concepts.mdx create mode 100644 docs/learn/onchain-concepts/development-flow.mdx create mode 100644 docs/learn/onchain-concepts/understanding-the-onchain-tech-stack.mdx create mode 100644 docs/learn/solidity/anatomy.mdx create mode 100644 docs/learn/solidity/basic-types.mdx create mode 100644 docs/learn/solidity/deployment-in-remix.mdx create mode 100644 docs/learn/solidity/exercise-basics.mdx create mode 100644 docs/learn/solidity/hello-world.mdx create mode 100644 docs/learn/solidity/introduction-to-contracts.mdx create mode 100644 docs/learn/solidity/introduction-to-remix.mdx create mode 100644 docs/learn/solidity/introduction.mdx create mode 100644 docs/learn/solidity/overview.mdx create mode 100644 docs/learn/solidity/remix-guide.mdx create mode 100644 docs/learn/solidity/step-by-step.mdx create mode 100644 docs/learn/solidity/video-tutorial.mdx create mode 100644 docs/learn/storage/how-storage-works-video.mdx create mode 100644 docs/learn/storage/how-storage-works.mdx create mode 100644 docs/learn/storage/simple-storage-sbs.mdx create mode 100644 docs/learn/storage/simple-storage-video.mdx create mode 100644 docs/learn/storage/storage-exercise.mdx create mode 100644 docs/learn/structs/structs-exercise.mdx create mode 100644 docs/learn/structs/structs-sbs.mdx create mode 100644 docs/learn/structs/structs-vid.mdx create mode 100644 docs/learn/welcome.mdx rename docs/{public => }/llms-full.txt (99%) create mode 100644 docs/logo/favicon.svg create mode 100644 docs/logo/logo_dark.svg create mode 100644 docs/logo/logo_light.svg create mode 100644 docs/onchainkit/api/build-deposit-to-morpho-tx.mdx create mode 100644 docs/onchainkit/api/build-mint-transaction.mdx create mode 100644 docs/onchainkit/api/build-swap-transaction.mdx create mode 100644 docs/onchainkit/api/build-withdraw-from-morpho-tx.mdx create mode 100644 docs/onchainkit/api/get-mint-details.mdx create mode 100644 docs/onchainkit/api/get-portfolios.mdx create mode 100644 docs/onchainkit/api/get-swap-quote.mdx create mode 100644 docs/onchainkit/api/get-token-details.mdx create mode 100644 docs/onchainkit/api/get-tokens.mdx create mode 100644 docs/onchainkit/api/types.mdx create mode 100644 docs/onchainkit/appchain/bridge.mdx create mode 100644 docs/onchainkit/appchain/types.mdx create mode 100644 docs/onchainkit/buy/buy.mdx create mode 100644 docs/onchainkit/buy/types.mdx create mode 100644 docs/onchainkit/checkout/checkout.mdx create mode 100644 docs/onchainkit/checkout/types.mdx rename docs/{pages/builderkits => }/onchainkit/config/is-base.mdx (94%) rename docs/{pages/builderkits => }/onchainkit/config/is-ethereum.mdx (93%) create mode 100644 docs/onchainkit/config/onchainkit-provider.mdx create mode 100644 docs/onchainkit/config/supplemental-providers.mdx create mode 100644 docs/onchainkit/config/types.mdx create mode 100644 docs/onchainkit/create-a-basename-profile-component.mdx create mode 100644 docs/onchainkit/earn/earn.mdx create mode 100644 docs/onchainkit/earn/types.mdx create mode 100644 docs/onchainkit/fund/fetch-onramp-config.mdx create mode 100644 docs/onchainkit/fund/fetch-onramp-options.mdx create mode 100644 docs/onchainkit/fund/fetch-onramp-quote.mdx create mode 100644 docs/onchainkit/fund/fetch-onramp-transaction-status.mdx create mode 100644 docs/onchainkit/fund/fund-button.mdx create mode 100644 docs/onchainkit/fund/fund-card.mdx create mode 100644 docs/onchainkit/fund/get-onramp-buy-url.mdx create mode 100644 docs/onchainkit/fund/setup-onramp-event-listeners.mdx create mode 100644 docs/onchainkit/fund/types.mdx create mode 100644 docs/onchainkit/getting-started.mdx create mode 100644 docs/onchainkit/guides/ai-prompting-guide.mdx create mode 100644 docs/onchainkit/guides/build-onchain-apps.mdx create mode 100644 docs/onchainkit/guides/contribution.mdx create mode 100644 docs/onchainkit/guides/lifecycle-status.mdx create mode 100644 docs/onchainkit/guides/reporting-bug.mdx create mode 100644 docs/onchainkit/guides/tailwind.mdx create mode 100644 docs/onchainkit/guides/telemetry.mdx create mode 100644 docs/onchainkit/guides/themes.mdx create mode 100644 docs/onchainkit/guides/troubleshooting.mdx create mode 100644 docs/onchainkit/guides/use-basename-in-onchain-app.mdx create mode 100644 docs/onchainkit/guides/using-ai-powered-ides.mdx create mode 100644 docs/onchainkit/hooks/use-build-deposit-to-morpho-tx.mdx create mode 100644 docs/onchainkit/hooks/use-build-withdraw-from-morpho-tx.mdx create mode 100644 docs/onchainkit/hooks/use-earn-context.mdx create mode 100644 docs/onchainkit/hooks/use-mint-details.mdx create mode 100644 docs/onchainkit/hooks/use-morpho-vault.mdx create mode 100644 docs/onchainkit/hooks/use-token-details.mdx create mode 100644 docs/onchainkit/identity/address.mdx create mode 100644 docs/onchainkit/identity/avatar.mdx create mode 100644 docs/onchainkit/identity/badge.mdx create mode 100644 docs/onchainkit/identity/get-address.mdx create mode 100644 docs/onchainkit/identity/get-attestations.mdx create mode 100644 docs/onchainkit/identity/get-avatar.mdx create mode 100644 docs/onchainkit/identity/get-avatars.mdx create mode 100644 docs/onchainkit/identity/get-name.mdx create mode 100644 docs/onchainkit/identity/get-names.mdx create mode 100644 docs/onchainkit/identity/identity-card.mdx create mode 100644 docs/onchainkit/identity/identity.mdx create mode 100644 docs/onchainkit/identity/name.mdx create mode 100644 docs/onchainkit/identity/socials.mdx create mode 100644 docs/onchainkit/identity/types.mdx create mode 100644 docs/onchainkit/identity/use-address.mdx create mode 100644 docs/onchainkit/identity/use-avatar.mdx create mode 100644 docs/onchainkit/identity/use-avatars.mdx create mode 100644 docs/onchainkit/identity/use-name.mdx create mode 100644 docs/onchainkit/identity/use-names.mdx create mode 100644 docs/onchainkit/installation.mdx create mode 100644 docs/onchainkit/installation/astro.mdx create mode 100644 docs/onchainkit/installation/nextjs.mdx create mode 100644 docs/onchainkit/installation/remix.mdx create mode 100644 docs/onchainkit/installation/vite.mdx create mode 100644 docs/onchainkit/mint/nft-card.mdx create mode 100644 docs/onchainkit/mint/nft-mint-card.mdx create mode 100644 docs/onchainkit/mint/types.mdx create mode 100644 docs/onchainkit/paymaster/erc20-paymaster.mdx create mode 100644 docs/onchainkit/paymaster/errors.mdx create mode 100644 docs/onchainkit/paymaster/gasless-transactions-with-paymaster.mdx create mode 100644 docs/onchainkit/paymaster/how-to-contribute.mdx create mode 100644 docs/onchainkit/paymaster/quickstart-guide.mdx create mode 100644 docs/onchainkit/paymaster/quickstart-headless.mdx create mode 100644 docs/onchainkit/paymaster/security.mdx create mode 100644 docs/onchainkit/paymaster/troubleshooting.mdx create mode 100644 docs/onchainkit/paymaster/welcome.mdx create mode 100644 docs/onchainkit/restricted.mdx create mode 100644 docs/onchainkit/signature/signature.mdx create mode 100644 docs/onchainkit/signature/types.mdx create mode 100644 docs/onchainkit/swap/swap-settings.mdx create mode 100644 docs/onchainkit/swap/swap.mdx create mode 100644 docs/onchainkit/swap/types.mdx create mode 100644 docs/onchainkit/templates/onchain-commerce-app.mdx create mode 100644 docs/onchainkit/templates/onchain-nft-app.mdx create mode 100644 docs/onchainkit/templates/onchain-social-profile.mdx create mode 100644 docs/onchainkit/token/format-amount.mdx create mode 100644 docs/onchainkit/token/token-chip.mdx create mode 100644 docs/onchainkit/token/token-image.mdx create mode 100644 docs/onchainkit/token/token-row.mdx create mode 100644 docs/onchainkit/token/token-search.mdx create mode 100644 docs/onchainkit/token/token-select-dropdown.mdx create mode 100644 docs/onchainkit/token/types.mdx create mode 100644 docs/onchainkit/transaction/transaction.mdx create mode 100644 docs/onchainkit/transaction/types.mdx create mode 100644 docs/onchainkit/use-coinbase-smart-wallet-and-eoas.mdx create mode 100644 docs/onchainkit/wallet/is-valid-aa-entrypoint.mdx create mode 100644 docs/onchainkit/wallet/is-wallet-a-coinbase-smart-wallet.mdx create mode 100644 docs/onchainkit/wallet/types.mdx create mode 100644 docs/onchainkit/wallet/wallet-dropdown-basename.mdx create mode 100644 docs/onchainkit/wallet/wallet-dropdown-disconnect.mdx create mode 100644 docs/onchainkit/wallet/wallet-dropdown-fund-link.mdx create mode 100644 docs/onchainkit/wallet/wallet-dropdown-link.mdx create mode 100644 docs/onchainkit/wallet/wallet-island.mdx create mode 100644 docs/onchainkit/wallet/wallet-modal.mdx create mode 100644 docs/onchainkit/wallet/wallet.mdx create mode 100644 docs/openapi/onchainkit.yaml delete mode 100644 docs/pages/builderkits/onchainkit/guides/build-onchain-apps.mdx delete mode 100644 docs/pages/builderkits/onchainkit/guides/tailwind.mdx delete mode 100644 docs/pages/builderkits/onchainkit/installation/astro.mdx delete mode 100644 docs/pages/builderkits/onchainkit/installation/nextjs.mdx delete mode 100644 docs/pages/builderkits/onchainkit/installation/remix.mdx delete mode 100644 docs/pages/builderkits/onchainkit/installation/vite.mdx delete mode 100644 docs/pages/builderkits/onchainkit/transaction/transaction.mdx delete mode 100644 docs/pages/chain/decentralizing-base-with-optimism.mdx delete mode 100644 docs/pages/chain/security.mdx delete mode 100644 docs/pages/feedback.mdx delete mode 100644 docs/pages/identity/smart-wallet/guides/batch-transactions.mdx delete mode 100644 docs/pages/identity/smart-wallet/guides/paymasters.mdx delete mode 100644 docs/pages/identity/smart-wallet/guides/siwe.mdx delete mode 100644 docs/pages/identity/smart-wallet/guides/spend-permissions.mdx delete mode 100644 docs/pages/identity/wallet-sdk/existing-welcome-page-features.mdx delete mode 100644 docs/pages/identity/wallet-sdk/mobile-dapp-integration-via-deep-linking.mdx delete mode 100644 docs/pages/identity/wallet-sdk/smart-wallet.mdx delete mode 100644 docs/pages/identity/wallet-sdk/supported-environments.mdx delete mode 100644 docs/pages/identity/wallet-sdk/ux-guidelines.mdx delete mode 100644 docs/pages/identity/wallet-sdk/wallet-mobile-sdk.mdx delete mode 100644 docs/pages/identity/wallet-sdk/wallet-sdk-existing-section.mdx delete mode 100644 docs/pages/identity/wallet-sdk/wallet-sdk-mobile-sdk.mdx delete mode 100644 docs/pages/identity/wallet-sdk/xmtp.mdx delete mode 100644 docs/pages/quickstart.mdx delete mode 100644 docs/pages/use-cases/accept-crypto-payments.mdx delete mode 100644 docs/pages/use-cases/ai-instructions/langchain-local.mdx delete mode 100644 docs/pages/use-cases/ai-instructions/langchain-replit.mdx delete mode 100644 docs/public/builderkits/minikit/llms.txt delete mode 100644 docs/public/builderkits/onchainkit/llms.txt delete mode 100644 docs/public/favicon.ico delete mode 100644 docs/public/fonts/CoinbaseSans-Medium.woff2 delete mode 100644 docs/public/fonts/CoinbaseSans-Regular.woff delete mode 100644 docs/public/fonts/Coinbase_Mono-Bold-web.woff2 delete mode 100644 docs/public/fonts/Coinbase_Mono-Extra_Light-web.woff2 delete mode 100644 docs/public/fonts/Coinbase_Mono-Light-web.woff2 delete mode 100644 docs/public/fonts/Coinbase_Mono-Medium-web.woff2 delete mode 100644 docs/public/fonts/Coinbase_Mono-Regular-web.woff2 delete mode 100644 docs/public/fonts/Coinbase_Sans-Bold-web-1.32.woff2 delete mode 100644 docs/public/fonts/Coinbase_Sans-Bold_Italic-web-1.32.woff2 delete mode 100644 docs/public/fonts/Coinbase_Sans-Extra_Light-web-1.32.woff2 delete mode 100644 docs/public/fonts/Coinbase_Sans-Extra_Light_Italic-web-1.32.woff2 delete mode 100644 docs/public/fonts/Coinbase_Sans-Light-web-1.32.woff2 delete mode 100644 docs/public/fonts/Coinbase_Sans-Light_Italic-web-1.32.woff2 delete mode 100644 docs/public/fonts/Coinbase_Sans-Medium_Italic-web-1.32.woff2 delete mode 100644 docs/public/fonts/Coinbase_Sans-Regular_Italic-web-1.32.woff2 delete mode 100644 docs/public/logo.svg delete mode 100644 docs/public/placeholder.svg delete mode 100644 docs/public/serve.json create mode 100644 docs/showcase.mdx create mode 100644 docs/smart-wallet/concepts/base-gasless-campaign.mdx create mode 100644 docs/smart-wallet/concepts/features/built-in/MagicSpend.mdx create mode 100644 docs/smart-wallet/concepts/features/built-in/networks.mdx create mode 100644 docs/smart-wallet/concepts/features/built-in/passkeys.mdx create mode 100644 docs/smart-wallet/concepts/features/built-in/recovery-keys.mdx create mode 100644 docs/smart-wallet/concepts/features/built-in/single-sign-on.mdx create mode 100644 docs/smart-wallet/concepts/features/optional/batch-operations.mdx create mode 100644 docs/smart-wallet/concepts/features/optional/custom-gas-tokens.mdx create mode 100644 docs/smart-wallet/concepts/features/optional/gas-free-transactions.mdx create mode 100644 docs/smart-wallet/concepts/features/optional/spend-limits.mdx create mode 100644 docs/smart-wallet/concepts/features/optional/sub-accounts.mdx create mode 100644 docs/smart-wallet/concepts/usage-details/gas-usage.mdx create mode 100644 docs/smart-wallet/concepts/usage-details/popups.mdx create mode 100644 docs/smart-wallet/concepts/usage-details/signature-verification.mdx create mode 100644 docs/smart-wallet/concepts/usage-details/simulations.mdx create mode 100644 docs/smart-wallet/concepts/usage-details/unsupported-calls.mdx create mode 100644 docs/smart-wallet/concepts/usage-details/wallet-library-support.mdx create mode 100644 docs/smart-wallet/concepts/what-is-smart-wallet.mdx create mode 100644 docs/smart-wallet/contribute/contribute-to-smart-wallet-docs.mdx create mode 100644 docs/smart-wallet/contribute/security-and-bug-bounty.mdx create mode 100644 docs/smart-wallet/examples/coin-a-joke-app.mdx create mode 100644 docs/smart-wallet/guides/batch-transactions.mdx create mode 100644 docs/smart-wallet/guides/components/create-wallet-button.mdx create mode 100644 docs/smart-wallet/guides/erc20-paymasters.mdx create mode 100644 docs/smart-wallet/guides/magic-spend.mdx create mode 100644 docs/smart-wallet/guides/paymasters.mdx create mode 100644 docs/smart-wallet/guides/signature-verification.mdx create mode 100644 docs/smart-wallet/guides/signing-and-verifying-messages.mdx create mode 100644 docs/smart-wallet/guides/siwe.mdx create mode 100644 docs/smart-wallet/guides/spend-limits.mdx create mode 100644 docs/smart-wallet/guides/sub-accounts.mdx create mode 100644 docs/smart-wallet/guides/sub-accounts/add-sub-accounts-to-onchainkit-minikit.mdx create mode 100644 docs/smart-wallet/guides/sub-accounts/index.mdx create mode 100644 docs/smart-wallet/guides/sub-accounts/setup.mdx create mode 100644 docs/smart-wallet/guides/sub-accounts/sub-accounts-with-privy.mdx create mode 100644 docs/smart-wallet/guides/sub-accounts/using-sub-accounts.mdx create mode 100644 docs/smart-wallet/guides/tips/inspect-txn-simulation.mdx create mode 100644 docs/smart-wallet/guides/tips/popup-tips.mdx rename docs/{public/identity => }/smart-wallet/llms.txt (99%) create mode 100644 docs/smart-wallet/quickstart.mdx create mode 100644 docs/smart-wallet/quickstart/ai-tools-available-for-devs.mdx create mode 100644 docs/smart-wallet/quickstart/nextjs-project.mdx create mode 100644 docs/smart-wallet/quickstart/quick-demo.mdx create mode 100644 docs/smart-wallet/quickstart/react-native-project.mdx create mode 100644 docs/smart-wallet/technical-reference/sdk.mdx rename docs/{pages/identity => }/smart-wallet/technical-reference/sdk/CoinbaseWalletProvider/Overview.mdx (100%) create mode 100644 docs/smart-wallet/technical-reference/sdk/CoinbaseWalletProvider/eth_accounts.mdx create mode 100644 docs/smart-wallet/technical-reference/sdk/CoinbaseWalletProvider/eth_blockNumber.mdx create mode 100644 docs/smart-wallet/technical-reference/sdk/CoinbaseWalletProvider/eth_chainId.mdx create mode 100644 docs/smart-wallet/technical-reference/sdk/CoinbaseWalletProvider/eth_coinbase.mdx create mode 100644 docs/smart-wallet/technical-reference/sdk/CoinbaseWalletProvider/eth_estimateGas.mdx create mode 100644 docs/smart-wallet/technical-reference/sdk/CoinbaseWalletProvider/eth_feeHistory.mdx create mode 100644 docs/smart-wallet/technical-reference/sdk/CoinbaseWalletProvider/eth_gasPrice.mdx create mode 100644 docs/smart-wallet/technical-reference/sdk/CoinbaseWalletProvider/eth_getBalance.mdx create mode 100644 docs/smart-wallet/technical-reference/sdk/CoinbaseWalletProvider/eth_getBlockByHash.mdx create mode 100644 docs/smart-wallet/technical-reference/sdk/CoinbaseWalletProvider/eth_getBlockByNumber.mdx create mode 100644 docs/smart-wallet/technical-reference/sdk/CoinbaseWalletProvider/eth_getBlockTransactionCountByHash.mdx create mode 100644 docs/smart-wallet/technical-reference/sdk/CoinbaseWalletProvider/eth_getBlockTransactionCountByNumber.mdx create mode 100644 docs/smart-wallet/technical-reference/sdk/CoinbaseWalletProvider/eth_getCode.mdx create mode 100644 docs/smart-wallet/technical-reference/sdk/CoinbaseWalletProvider/eth_getLogs.mdx create mode 100644 docs/smart-wallet/technical-reference/sdk/CoinbaseWalletProvider/eth_getProof.mdx create mode 100644 docs/smart-wallet/technical-reference/sdk/CoinbaseWalletProvider/eth_getStorageAt.mdx create mode 100644 docs/smart-wallet/technical-reference/sdk/CoinbaseWalletProvider/eth_getTransactionByBlockHashAndIndex.mdx create mode 100644 docs/smart-wallet/technical-reference/sdk/CoinbaseWalletProvider/eth_getTransactionByBlockNumberAndIndex.mdx create mode 100644 docs/smart-wallet/technical-reference/sdk/CoinbaseWalletProvider/eth_getTransactionByHash.mdx create mode 100644 docs/smart-wallet/technical-reference/sdk/CoinbaseWalletProvider/eth_getTransactionCount.mdx create mode 100644 docs/smart-wallet/technical-reference/sdk/CoinbaseWalletProvider/eth_getTransactionReceipt.mdx create mode 100644 docs/smart-wallet/technical-reference/sdk/CoinbaseWalletProvider/eth_getUncleCountByBlockHash.mdx create mode 100644 docs/smart-wallet/technical-reference/sdk/CoinbaseWalletProvider/eth_getUncleCountByBlockNumber.mdx create mode 100644 docs/smart-wallet/technical-reference/sdk/CoinbaseWalletProvider/eth_requestAccounts.mdx create mode 100644 docs/smart-wallet/technical-reference/sdk/CoinbaseWalletProvider/eth_sendRawTransaction.mdx create mode 100644 docs/smart-wallet/technical-reference/sdk/CoinbaseWalletProvider/eth_sendTransaction.mdx create mode 100644 docs/smart-wallet/technical-reference/sdk/CoinbaseWalletProvider/eth_signTypedData_v4.mdx create mode 100644 docs/smart-wallet/technical-reference/sdk/CoinbaseWalletProvider/personal_sign.mdx rename docs/{pages/identity => }/smart-wallet/technical-reference/sdk/CoinbaseWalletProvider/request-overview.mdx (100%) rename docs/{pages/identity => }/smart-wallet/technical-reference/sdk/CoinbaseWalletProvider/sdk-overview.mdx (100%) create mode 100644 docs/smart-wallet/technical-reference/sdk/CoinbaseWalletProvider/wallet_addEthereumChain.mdx create mode 100644 docs/smart-wallet/technical-reference/sdk/CoinbaseWalletProvider/wallet_addSubAccount.mdx create mode 100644 docs/smart-wallet/technical-reference/sdk/CoinbaseWalletProvider/wallet_connect.mdx create mode 100644 docs/smart-wallet/technical-reference/sdk/CoinbaseWalletProvider/wallet_sendCalls.mdx create mode 100644 docs/smart-wallet/technical-reference/sdk/CoinbaseWalletProvider/wallet_switchEthereumChain.mdx create mode 100644 docs/smart-wallet/technical-reference/sdk/CoinbaseWalletProvider/wallet_watchAsset.mdx create mode 100644 docs/smart-wallet/technical-reference/sdk/CoinbaseWalletProvider/web3_clientVersion.mdx rename docs/{pages/identity => }/smart-wallet/technical-reference/spend-permissions/coinbase-fetchpermissions.mdx (98%) create mode 100644 docs/smart-wallet/technical-reference/spend-permissions/spendpermissionmanager.mdx create mode 100644 docs/smart-wallet/technical-reference/sub-account-reference.mdx create mode 100644 docs/snippets/BrowseCard.mdx create mode 100644 docs/snippets/BrowseUseCaseCard.mdx create mode 100644 docs/snippets/Button/index.mdx create mode 100644 docs/snippets/GithubRepoCard.mdx create mode 100644 docs/snippets/HomeHeader.mdx create mode 100644 docs/snippets/HomeWrapper.mdx create mode 100644 docs/snippets/VideoPlayer.mdx rename docs/{pages/use-cases => snippets}/ai-instructions/eliza.mdx (90%) create mode 100644 docs/snippets/ai-instructions/langchain-local.mdx create mode 100644 docs/snippets/ai-instructions/langchain-replit.mdx create mode 100644 docs/snippets/ai-powered.mdx create mode 100644 docs/snippets/base-org/Icon/Icon.mdx create mode 100644 docs/snippets/danger.mdx create mode 100644 docs/snippets/headerNoToc.mdx create mode 100644 docs/snippets/installation-options.mdx rename docs/{pages/learn => snippets}/learning-objectives.mdx (99%) create mode 100644 docs/snippets/prompt-library.mdx create mode 100644 docs/snippets/start-building.mdx create mode 100644 docs/snippets/svg/agentKitSvg.mdx create mode 100644 docs/snippets/svg/agentSvg.mdx create mode 100644 docs/snippets/svg/depositSvg.mdx create mode 100644 docs/snippets/svg/gaslessSvg.mdx create mode 100644 docs/snippets/svg/miniKitSvg.mdx create mode 100644 docs/snippets/svg/onboardingSvg.mdx create mode 100644 docs/snippets/svg/onchainKitSvg.mdx create mode 100644 docs/snippets/svg/paymasterSvg.mdx create mode 100644 docs/snippets/svg/paymentsSvg.mdx create mode 100644 docs/snippets/svg/smartWalletSvg.mdx create mode 100644 docs/snippets/svg/socialSvg.mdx create mode 100644 docs/snippets/svg/verificationsSvg.mdx delete mode 100644 docs/styles.css delete mode 100644 docs/utils/logEvent.ts create mode 100644 docs/wallet-app/build-with-minikit/debugging.mdx create mode 100644 docs/wallet-app/build-with-minikit/existing-app-integration.mdx create mode 100644 docs/wallet-app/build-with-minikit/overview.mdx create mode 100644 docs/wallet-app/build-with-minikit/quickstart.mdx create mode 100644 docs/wallet-app/guides/thinking-social.mdx create mode 100644 docs/wallet-app/introduction/beta-faq.mdx create mode 100644 docs/wallet-app/introduction/getting-started.mdx create mode 100644 docs/wallet-app/introduction/mini-apps.mdx delete mode 100644 package.json delete mode 100644 postcss.config.js delete mode 100644 scripts/clean-frontmatter.ts delete mode 100644 scripts/remove-feedback.ts delete mode 100644 sidebar.ts create mode 100644 storybook/.gitignore create mode 100644 storybook/.storybook/main.ts create mode 100644 storybook/.storybook/preview-head.html create mode 100644 storybook/.storybook/preview.ts create mode 100644 storybook/README.md create mode 100644 storybook/eslint.config.mjs create mode 100644 storybook/next.config.ts create mode 100644 storybook/package-lock.json create mode 100644 storybook/package.json create mode 100644 storybook/postcss.config.mjs create mode 100644 storybook/public/file.svg create mode 100644 storybook/public/globe.svg create mode 100644 storybook/public/next.svg create mode 100644 storybook/public/vercel.svg create mode 100644 storybook/public/window.svg create mode 100644 storybook/src/app/favicon.ico create mode 100644 storybook/src/app/globals.css create mode 100644 storybook/src/app/layout.tsx create mode 100644 storybook/src/app/page.tsx create mode 100644 storybook/stories/App.tsx create mode 100644 storybook/stories/BuyWrapper.stories.tsx create mode 100644 storybook/stories/CafeUnitTest.stories.tsx create mode 100644 storybook/stories/Checkout.stories.tsx create mode 100644 storybook/stories/Earn.stories.tsx create mode 100644 storybook/stories/Fund/FundButton.stories.tsx create mode 100644 storybook/stories/Fund/FundCard.stories.tsx create mode 100644 storybook/stories/Fund/FundWrapper.stories.tsx create mode 100644 storybook/stories/GithubRepoCard.stories.tsx create mode 100644 storybook/stories/Identity/Identity.stories.tsx create mode 100644 storybook/stories/Identity/IdentityAddress.stories.tsx create mode 100644 storybook/stories/Identity/IdentityAvatar.stories.tsx create mode 100644 storybook/stories/Identity/IdentityBadge.stories.tsx create mode 100644 storybook/stories/Identity/IdentityCard.stories.tsx create mode 100644 storybook/stories/Identity/IdentityName.stories.tsx create mode 100644 storybook/stories/Identity/IdentitySocials.stories.tsx create mode 100644 storybook/stories/NFT/NFTCard.stories.tsx create mode 100644 storybook/stories/NFT/NFTMintCard.stories.tsx create mode 100644 storybook/stories/SignatureComponents.stories.tsx create mode 100644 storybook/stories/SubAccount.stories.tsx create mode 100644 storybook/stories/Swap/Swap.stories.tsx create mode 100644 storybook/stories/Swap/SwapSettings.stories.tsx create mode 100644 storybook/stories/Swap/SwapWallet.stories.tsx rename docs/contexts/Theme.tsx => storybook/stories/ThemeProvider.tsx (61%) create mode 100644 storybook/stories/Token/TokenChip.stories.tsx create mode 100644 storybook/stories/Token/TokenImage.stories.tsx create mode 100644 storybook/stories/Token/TokenRow.stories.tsx create mode 100644 storybook/stories/Token/TokenSearch.stories.tsx create mode 100644 storybook/stories/Token/TokenSelectDropdown.stories.tsx create mode 100644 storybook/stories/Transaction.stories.tsx create mode 100644 storybook/stories/Wallet/Wallet.stories.tsx create mode 100644 storybook/stories/Wallet/WalletBasename.stories.tsx create mode 100644 storybook/stories/Wallet/WalletDisconnect.stories.tsx create mode 100644 storybook/stories/Wallet/WalletFundLink.stories.tsx create mode 100644 storybook/stories/Wallet/WalletIsland.stories.tsx create mode 100644 storybook/stories/Wallet/WalletLink.stories.tsx create mode 100644 storybook/stories/Wallet/WalletModal.stories.tsx create mode 100644 storybook/stories/components/App.tsx rename {docs => storybook/stories}/components/AppDemo.tsx (92%) rename {docs => storybook/stories}/components/AppWithWalletModal.tsx (88%) rename {docs => storybook/stories}/components/BrowseCard.tsx (100%) rename {docs => storybook/stories}/components/BrowseUseCaseCard.tsx (100%) rename {docs => storybook/stories}/components/Button/index.tsx (81%) rename {docs => storybook/stories}/components/Button/types.ts (100%) rename {docs => storybook/stories}/components/BuyWrapper.tsx (100%) rename {docs => storybook/stories}/components/CafeUnitTest/assets/deployments/base-goerli/ArraysUT.json (100%) rename {docs => storybook/stories}/components/CafeUnitTest/assets/deployments/base-goerli/BasicMathUnitTest.json (100%) rename {docs => storybook/stories}/components/CafeUnitTest/assets/deployments/base-goerli/ControlStructuresUT.json (100%) rename {docs => storybook/stories}/components/CafeUnitTest/assets/deployments/base-goerli/ERC20UT.json (100%) rename {docs => storybook/stories}/components/CafeUnitTest/assets/deployments/base-goerli/ERC721UT.json (100%) rename {docs => storybook/stories}/components/CafeUnitTest/assets/deployments/base-goerli/ErrorTriageUT.json (100%) rename {docs => storybook/stories}/components/CafeUnitTest/assets/deployments/base-goerli/ImportsUT.json (100%) rename {docs => storybook/stories}/components/CafeUnitTest/assets/deployments/base-goerli/InheritanceUnitTest.json (100%) rename {docs => storybook/stories}/components/CafeUnitTest/assets/deployments/base-goerli/MappingsUT.json (100%) rename {docs => storybook/stories}/components/CafeUnitTest/assets/deployments/base-goerli/MinimalTokenUT.json (100%) rename {docs => storybook/stories}/components/CafeUnitTest/assets/deployments/base-goerli/NewUT.json (100%) rename {docs => storybook/stories}/components/CafeUnitTest/assets/deployments/base-goerli/StorageUT.json (100%) rename {docs => storybook/stories}/components/CafeUnitTest/assets/deployments/base-goerli/StructsUT.json (100%) rename {docs => storybook/stories}/components/CafeUnitTest/assets/deployments/base-sepolia/ArraysUT.json (100%) rename {docs => storybook/stories}/components/CafeUnitTest/assets/deployments/base-sepolia/BasicMathUnitTest.json (100%) rename {docs => storybook/stories}/components/CafeUnitTest/assets/deployments/base-sepolia/ControlStructuresUT.json (100%) rename {docs => storybook/stories}/components/CafeUnitTest/assets/deployments/base-sepolia/ERC20UT.json (100%) rename {docs => storybook/stories}/components/CafeUnitTest/assets/deployments/base-sepolia/ERC721UT.json (100%) rename {docs => storybook/stories}/components/CafeUnitTest/assets/deployments/base-sepolia/ErrorTriageUT.json (100%) rename {docs => storybook/stories}/components/CafeUnitTest/assets/deployments/base-sepolia/ImportsUT.json (100%) rename {docs => storybook/stories}/components/CafeUnitTest/assets/deployments/base-sepolia/InheritanceUT.json (100%) rename {docs => storybook/stories}/components/CafeUnitTest/assets/deployments/base-sepolia/MappingsUT.json (100%) rename {docs => storybook/stories}/components/CafeUnitTest/assets/deployments/base-sepolia/MinimalTokenUT.json (100%) rename {docs => storybook/stories}/components/CafeUnitTest/assets/deployments/base-sepolia/NewUT.json (100%) rename {docs => storybook/stories}/components/CafeUnitTest/assets/deployments/base-sepolia/StorageUT.json (100%) rename {docs => storybook/stories}/components/CafeUnitTest/assets/deployments/base-sepolia/StructsUT.json (100%) rename {docs/public/images/learn/nft-pins => storybook/stories/components/CafeUnitTest/assets/images}/Base_Camp_NFT_01.png (100%) rename {docs/public/images/learn/nft-pins => storybook/stories/components/CafeUnitTest/assets/images}/Base_Camp_NFT_02.png (100%) rename {docs/public/images/learn/nft-pins => storybook/stories/components/CafeUnitTest/assets/images}/Base_Camp_NFT_03.png (100%) rename {docs/public/images/learn/nft-pins => storybook/stories/components/CafeUnitTest/assets/images}/Base_Camp_NFT_04.png (100%) rename {docs/public/images/learn/nft-pins => storybook/stories/components/CafeUnitTest/assets/images}/Base_Camp_NFT_05.png (100%) rename {docs/public/images/learn/nft-pins => storybook/stories/components/CafeUnitTest/assets/images}/Base_Camp_NFT_06.png (100%) rename {docs/public/images/learn/nft-pins => storybook/stories/components/CafeUnitTest/assets/images}/Base_Camp_NFT_07.png (100%) rename {docs/public/images/learn/nft-pins => storybook/stories/components/CafeUnitTest/assets/images}/Base_Camp_NFT_08.png (100%) rename {docs/public/images/learn/nft-pins => storybook/stories/components/CafeUnitTest/assets/images}/Base_Camp_NFT_09.png (100%) rename {docs/public/images/learn/nft-pins => storybook/stories/components/CafeUnitTest/assets/images}/Base_Camp_NFT_10.png (100%) rename {docs/public/images/learn/nft-pins => storybook/stories/components/CafeUnitTest/assets/images}/Base_Camp_NFT_11.png (100%) rename {docs/public/images/learn/nft-pins => storybook/stories/components/CafeUnitTest/assets/images}/Base_Camp_NFT_12.png (100%) rename {docs/public/images/learn/nft-pins => storybook/stories/components/CafeUnitTest/assets/images}/Base_Camp_NFT_13.png (100%) rename {docs/public/images/learn/nft-pins => storybook/stories/components/CafeUnitTest/assets/images}/Base_Camp_NFT_14.png (100%) rename {docs/public/images/learn/nft-pins => storybook/stories/components/CafeUnitTest/assets/images}/Base_Camp_NFT_15.png (100%) rename {docs/public/images/learn/nft-pins => storybook/stories/components/CafeUnitTest/assets/images}/Base_Camp_NFT_16.png (100%) rename {docs/public/images/learn/nft-pins => storybook/stories/components/CafeUnitTest/assets/images}/Base_Camp_NFT_17.png (100%) rename {docs/public/images/learn/nft-pins => storybook/stories/components/CafeUnitTest/assets/images}/Base_Camp_NFT_18.png (100%) rename {docs/public/images/learn/nft-pins => storybook/stories/components/CafeUnitTest/assets/images}/Base_Camp_NFT_19.png (100%) rename {docs/public/images/learn/nft-pins => storybook/stories/components/CafeUnitTest/assets/images}/TestPin.png (100%) rename {docs => storybook/stories}/components/CafeUnitTest/index.jsx (70%) rename {docs => storybook/stories}/components/CafeUnitTest/nft-exercise-data.js (100%) rename {docs => storybook/stories}/components/ClientAnalyticsScript/ClientAnalyticsScript.tsx (100%) rename {docs => storybook/stories}/components/ClientAnalyticsScript/initCCA.ts (100%) create mode 100644 storybook/stories/components/ConnectUI.tsx rename {docs => storybook/stories}/components/CookieManager/CookieManagerProvider.tsx (100%) rename {docs => storybook/stories}/components/CookieManager/cookieManagerConfig.ts (100%) rename {docs => storybook/stories}/components/EarnComponents.tsx (100%) rename {docs => storybook/stories}/components/FundWrapper.tsx (100%) rename {docs => storybook/stories}/components/GithubRepoCard.tsx (100%) rename {docs => storybook/stories}/components/HomePage/Hero.tsx (100%) rename {docs => storybook/stories}/components/HomePage/ProductCard.tsx (100%) rename {docs => storybook/stories}/components/HomePage/ProductsSection.tsx (100%) rename {docs => storybook/stories}/components/HomePage/QuickLink.tsx (100%) rename {docs => storybook/stories}/components/HomePage/QuickStartSection.tsx (100%) rename {docs => storybook/stories}/components/HomePage/ResourcesSection.tsx (100%) rename {docs => storybook/stories}/components/InstallationOptions.tsx (100%) rename {docs => storybook/stories}/components/NFTComponents.tsx (100%) rename {docs => storybook/stories}/components/SignatureComponents.tsx (98%) rename {docs => storybook/stories}/components/SmartWalletAITools.tsx (100%) rename {docs => storybook/stories}/components/SmartWalletQuickstartOptions.tsx (100%) rename {docs => storybook/stories}/components/StartBuilding.tsx (100%) rename {docs => storybook/stories}/components/SwapWrapper.tsx (100%) rename {docs => storybook/stories}/components/TokenSelectorContainer.tsx (100%) rename {docs => storybook/stories}/components/TransactionWrapper.tsx (100%) rename {docs => storybook/stories}/components/VideoPlayer.jsx (100%) rename {docs => storybook/stories}/components/WalletComponents.tsx (100%) rename {docs => storybook/stories}/components/base-org/Icon/Icon.tsx (100%) rename {docs => storybook/stories}/components/index.d.ts (100%) rename {docs => storybook/stories}/components/landing/BuyDemo.tsx (100%) rename {docs => storybook/stories}/components/landing/CheckoutDemo.tsx (100%) rename {docs => storybook/stories}/components/landing/ComponentPreview.tsx (100%) rename {docs => storybook/stories}/components/landing/FundDemo.tsx (100%) rename {docs => storybook/stories}/components/landing/IdentityCardDemo.tsx (100%) rename {docs => storybook/stories}/components/landing/LandingFooter.tsx (100%) rename {docs => storybook/stories}/components/landing/NavigationList.tsx (100%) rename {docs => storybook/stories}/components/landing/NftMintCardDemo.tsx (100%) rename {docs => storybook/stories}/components/landing/SwapDemo.tsx (100%) rename {docs => storybook/stories}/components/landing/TransactionDemo.tsx (100%) rename {docs => storybook/stories}/components/landing/Tweets.tsx (100%) rename {docs => storybook/stories}/components/landing/WalletDemo.tsx (100%) rename {docs => storybook/stories}/components/landing/getHighlightedCode.tsx (100%) rename {docs => storybook/stories}/components/smart-wallet/Illustration.tsx (100%) rename {docs => storybook/stories}/components/smart-wallet/SubAccount.tsx (72%) rename {docs => storybook/stories}/components/svg/AgentKitSvgSW.tsx (100%) rename {docs => storybook/stories}/components/svg/CopySvg.tsx (100%) rename {docs => storybook/stories}/components/svg/LLMsTxtSvg.tsx (100%) rename {docs => storybook/stories}/components/svg/McpSvg.tsx (100%) rename {docs => storybook/stories}/components/svg/NextjsSvgSW.tsx (100%) rename {docs => storybook/stories}/components/svg/OnchainKit.svg (100%) rename {docs => storybook/stories}/components/svg/OnchainKitSvgSW.tsx (100%) rename {docs => storybook/stories}/components/svg/ReactNativeSvg.tsx (100%) rename {docs => storybook/stories}/components/svg/agentKitSvg.tsx (100%) rename {docs => storybook/stories}/components/svg/agentSvg.tsx (100%) rename {docs => storybook/stories}/components/svg/appchainsSvg.tsx (100%) rename {docs => storybook/stories}/components/svg/astroSvg.tsx (100%) rename {docs => storybook/stories}/components/svg/checkSvg.tsx (100%) rename {docs => storybook/stories}/components/svg/closeSvg.tsx (100%) rename {docs => storybook/stories}/components/svg/coinbasePaySvg.tsx (100%) rename {docs => storybook/stories}/components/svg/depositSvg.tsx (100%) rename {docs => storybook/stories}/components/svg/fundSvg.tsx (100%) rename {docs => storybook/stories}/components/svg/gaslessSvg.tsx (100%) rename {docs => storybook/stories}/components/svg/identitySvg.tsx (100%) rename {docs => storybook/stories}/components/svg/miniKitSvg.tsx (100%) rename {docs => storybook/stories}/components/svg/nextjsSvg.tsx (100%) rename {docs => storybook/stories}/components/svg/onboardingSvg.tsx (100%) rename {docs => storybook/stories}/components/svg/onchainKitSvg.tsx (100%) rename {docs => storybook/stories}/components/svg/paymasterSvg.tsx (100%) rename {docs => storybook/stories}/components/svg/paymentsSvg.tsx (100%) rename {docs => storybook/stories}/components/svg/remixSvg.tsx (100%) rename {docs => storybook/stories}/components/svg/smartWalletSvg.tsx (100%) rename {docs => storybook/stories}/components/svg/socialSvg.tsx (100%) rename {docs => storybook/stories}/components/svg/swapSvg.tsx (100%) rename {docs => storybook/stories}/components/svg/tokensSvg.tsx (100%) rename {docs => storybook/stories}/components/svg/transactionSvg.tsx (100%) rename {docs => storybook/stories}/components/svg/verificationsSvg.tsx (100%) rename {docs => storybook/stories}/components/svg/viteSvg.tsx (100%) rename {docs => storybook/stories}/components/svg/walletDropdownLinkCustomBaseIconSvg.tsx (100%) rename {docs => storybook/stories}/components/svg/walletSvg.tsx (100%) create mode 100644 storybook/tsconfig.json delete mode 100644 styles/globals.css delete mode 100644 tailwind.config.js delete mode 100644 tsconfig.json delete mode 100644 utils/check-image-refs.js delete mode 100644 utils/check-image-refs.ts delete mode 100644 utils/use-check-image-refs.js delete mode 100644 vite-env.d.ts delete mode 100644 vocs.config.tsx delete mode 100644 yarn.lock diff --git a/.cursor/rules/mintlify.mdc b/.cursor/rules/mintlify.mdc new file mode 100644 index 00000000..63042356 --- /dev/null +++ b/.cursor/rules/mintlify.mdc @@ -0,0 +1,368 @@ +--- +description: Update anything with mintlify or style of a written article +globs: +alwaysApply: false +--- +--- +description: Mintlify writing assistant guidelines +type: always +--- +# Mintlify technical writing assistant + +You are an AI writing assistant specialized in creating exceptional technical documentation using Mintlify components and following industry-leading technical writing practices. + +## Core writing principles + +### Language and style requirements +- Use clear, direct language appropriate for technical audiences +- Write in second person ("you") for instructions and procedures +- Use active voice over passive voice +- Employ present tense for current states, future tense for outcomes +- Maintain consistent terminology throughout all documentation +- Keep sentences concise while providing necessary context +- Use parallel structure in lists, headings, and procedures + +### Content organization standards +- Lead with the most important information (inverted pyramid structure) +- Use progressive disclosure: basic concepts before advanced ones +- Break complex procedures into numbered steps +- Include prerequisites and context before instructions +- Provide expected outcomes for each major step +- End sections with next steps or related information +- Use descriptive, keyword-rich headings for navigation and SEO + +### User-centered approach +- Focus on user goals and outcomes rather than system features +- Anticipate common questions and address them proactively +- Include troubleshooting for likely failure points +- Provide multiple pathways when appropriate (beginner vs advanced), but offer an opinionated path for people to follow to avoid overwhelming with options + +## Mintlify component reference + +### Callout components + +#### Note - Additional helpful information + + +Supplementary information that supports the main content without interrupting flow + + +#### Tip - Best practices and pro tips + + +Expert advice, shortcuts, or best practices that enhance user success + + +#### Warning - Important cautions + + +Critical information about potential issues, breaking changes, or destructive actions + + +#### Info - Neutral contextual information + + +Background information, context, or neutral announcements + + +#### Check - Success confirmations + + +Positive confirmations, successful completions, or achievement indicators + + +### Code components + +#### Single code block + +```javascript config.js +const apiConfig = { +baseURL: 'https://api.example.com', +timeout: 5000, +headers: { + 'Authorization': `Bearer ${process.env.API_TOKEN}` +} +}; +``` + +#### Code group with multiple languages + + +```javascript Node.js +const response = await fetch('/api/endpoint', { + headers: { Authorization: `Bearer ${apiKey}` } +}); +``` + +```python Python +import requests +response = requests.get('/api/endpoint', + headers={'Authorization': f'Bearer {api_key}'}) +``` + +```curl cURL +curl -X GET '/api/endpoint' \ + -H 'Authorization: Bearer YOUR_API_KEY' +``` + + +#### Request/Response examples + + +```bash cURL +curl -X POST 'https://api.example.com/users' \ + -H 'Content-Type: application/json' \ + -d '{"name": "John Doe", "email": "john@example.com"}' +``` + + + +```json Success +{ + "id": "user_123", + "name": "John Doe", + "email": "john@example.com", + "created_at": "2024-01-15T10:30:00Z" +} +``` + + +### Structural components + +#### Steps for procedures + + + + Run `npm install` to install required packages. + + + Verify installation by running `npm list`. + + + + + Create a `.env` file with your API credentials. + + ```bash + API_KEY=your_api_key_here + ``` + + + Never commit API keys to version control. + + + + +#### Tabs for alternative content + + + + ```bash + brew install node + npm install -g package-name + ``` + + + + ```powershell + choco install nodejs + npm install -g package-name + ``` + + + + ```bash + sudo apt install nodejs npm + npm install -g package-name + ``` + + + +#### Accordions for collapsible content + + + + - **Firewall blocking**: Ensure ports 80 and 443 are open + - **Proxy configuration**: Set HTTP_PROXY environment variable + - **DNS resolution**: Try using 8.8.8.8 as DNS server + + + + ```javascript + const config = { + performance: { cache: true, timeout: 30000 }, + security: { encryption: 'AES-256' } + }; + ``` + + + +### API documentation components + +#### Parameter fields + + +Unique identifier for the user. Must be a valid UUID v4 format. + + + +User's email address. Must be valid and unique within the system. + + + +Maximum number of results to return. Range: 1-100. + + + +Bearer token for API authentication. Format: `Bearer YOUR_API_KEY` + + +#### Response fields + + +Unique identifier assigned to the newly created user. + + + +ISO 8601 formatted timestamp of when the user was created. + + + +List of permission strings assigned to this user. + + +#### Expandable nested fields + + +Complete user object with all associated data. + + + + User profile information including personal details. + + + + User's first name as entered during registration. + + + + URL to user's profile picture. Returns null if no avatar is set. + + + + + + +### Interactive components + +#### Cards for navigation + + +Complete walkthrough from installation to your first API call in under 10 minutes. + + + + + Learn how to authenticate requests using API keys or JWT tokens. + + + + Understand rate limits and best practices for high-volume usage. + + + +### Media and advanced components + +#### Frames for images + +Wrap all images in frames. + + +Main dashboard showing analytics overview + + + +Analytics dashboard with charts + + +#### Tooltips and updates + + +API + + + +## New features +- Added bulk user import functionality +- Improved error messages with actionable suggestions + +## Bug fixes +- Fixed pagination issue with large datasets +- Resolved authentication timeout problems + + +## Required page structure + +Every documentation page must begin with YAML frontmatter: + +```yaml +--- +title: "Clear, specific, keyword-rich title" +description: "Concise description explaining page purpose and value" +--- +``` + +## Content quality standards + +### Code examples requirements +- Always include complete, runnable examples that users can copy and execute +- Show proper error handling and edge case management +- Use realistic data instead of placeholder values +- Include expected outputs and results for verification +- Test all code examples thoroughly before publishing +- Specify language and include filename when relevant +- Add explanatory comments for complex logic + +### API documentation requirements +- Document all parameters including optional ones with clear descriptions +- Show both success and error response examples with realistic data +- Include rate limiting information with specific limits +- Provide authentication examples showing proper format +- Explain all HTTP status codes and error handling +- Cover complete request/response cycles + +### Accessibility requirements +- Include descriptive alt text for all images and diagrams +- Use specific, actionable link text instead of "click here" +- Ensure proper heading hierarchy starting with H2 +- Provide keyboard navigation considerations +- Use sufficient color contrast in examples and visuals +- Structure content for easy scanning with headers and lists + +## AI assistant instructions + +### Component selection logic +- Use **Steps** for procedures, tutorials, setup guides, and sequential instructions +- Use **Tabs** for platform-specific content or alternative approaches +- Use **CodeGroup** when showing the same concept in multiple languages +- Use **Accordions** for supplementary information that might interrupt flow +- Use **Cards and CardGroup** for navigation, feature overviews, and related resources +- Use **RequestExample/ResponseExample** specifically for API endpoint documentation +- Use **ParamField** for API parameters, **ResponseField** for API responses +- Use **Expandable** for nested object properties or hierarchical information + +### Quality assurance checklist +- Verify all code examples are syntactically correct and executable +- Test all links to ensure they are functional and lead to relevant content +- Validate Mintlify component syntax with all required properties +- Confirm proper heading hierarchy with H2 for main sections, H3 for subsections +- Ensure content flows logically from basic concepts to advanced topics +- Check for consistency in terminology, formatting, and component usage + +### Error prevention strategies +- Always include realistic error handling in code examples +- Provide dedicated troubleshooting sections for complex procedures +- Explain prerequisites clearly before beginning instructions +- Include verification and testing steps with expected outcomes +- Add appropriate warnings for destructive or security-sensitive actions +- Validate all technical information through testing before publication \ No newline at end of file diff --git a/.github/workflows/chromatic.yml b/.github/workflows/chromatic.yml new file mode 100644 index 00000000..d09b48c8 --- /dev/null +++ b/.github/workflows/chromatic.yml @@ -0,0 +1,19 @@ +name: "Chromatic Publish" + +on: push + +jobs: + test: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: 0 + - name: Install dependencies + run: cd storybook && yarn install + - uses: chromaui/action@latest + with: + workingDir: storybook + buildScriptName: build-storybook + projectToken: ${{ secrets.CHROMATIC_PROJECT_TOKEN }} + onlyChanged: true diff --git a/.gitignore b/.gitignore index 96c8d6e6..c69f085f 100644 --- a/.gitignore +++ b/.gitignore @@ -1,80 +1,47 @@ -.env -# Node stuff -node_modules -yarn-debug.log* -yarn-error.log* -docs/dist/ -docs/build/ -vocs.config.tsx.timestamp* - -# OS ignores -.DS_Store - -# Xcode -**/ios/build/ -**/ios/derived_data/ -*.pbxuser -!default.pbxuser -*.mode1v3 -!default.mode1v3 -*.mode2v3 -!default.mode2v3 -*.perspectivev3 -!default.perspectivev3 -xcuserdata -*.xccheckout -*.moved-aside -DerivedData -*.hmap -*.ipa -*.xcuserstate -*.xcworkspace -Pods/ - -# Android/IntelliJ -**/android/build/ -**/android/app/build/ -.idea -.gradle -local.properties -*.iml -*.hprof +# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. -# Nx/Builds -.docusaurus -.next -.nx -cjs/ -dts/ -esm/ -lib/ -mjs/ -out/ -*.tsbuildinfo - -# Yarn +# dependencies +/node_modules +/.pnp +.pnp.* .yarn/* !.yarn/patches -!.yarn/releases !.yarn/plugins -!.yarn/sdks +!.yarn/releases !.yarn/versions -.pnp.* -# prevent people from accidentally committing a package-lock -package-lock.json -# Env files -.env.local -.env.development.local -.env.test.local -.env.production.local +# testing +/coverage -# GraphQL -schema.graphql -persisted_queries.json -**/*.graphql.ts +# next.js +/.next/ +/out/ -# eslint -.eslintcache +# production +/build +# misc +.DS_Store +*.pem + +# debug +npm-debug.log* +yarn-debug.log* +yarn-error.log* +.pnpm-debug.log* + +# env files (can opt-in for committing if needed) +.env* + +# vercel .vercel + +# typescript +*.tsbuildinfo +next-env.d.ts + +*storybook.log + +*.py + +.mintlify-latest diff --git a/.nvmrc b/.nvmrc deleted file mode 100644 index 25bf17fc..00000000 --- a/.nvmrc +++ /dev/null @@ -1 +0,0 @@ -18 \ No newline at end of file diff --git a/.yarnrc.yml b/.yarnrc.yml deleted file mode 100644 index 8b757b29..00000000 --- a/.yarnrc.yml +++ /dev/null @@ -1 +0,0 @@ -nodeLinker: node-modules \ No newline at end of file diff --git a/README.md b/README.md index ec463b2e..6730885a 100644 --- a/README.md +++ b/README.md @@ -1,27 +1,30 @@ -This is a [Vocs](https://vocs.dev) project bootstrapped with the Vocs CLI. +### Development -# Creating New Docs +Install the [Mintlify CLI](https://www.npmjs.com/package/mintlify) to preview the documentation changes locally. To install, use the following command -You can create a new doc by adding a `.md` or `.mdx` file in -`apps/base-docs/docs/pages`. +``` +npm i -g mintlify +``` -The URL path for your doc will map to the file location. For instance, `bounty.mdx` -is found within `chain/security`. So the URL for this link will be: -`docs.base.org/chain/security/bounty`. +Run the following command at the root of your documentation (where docs.json is) +``` +mintlify dev +``` -# Running Docs Locally +### Publishing Changes -Follow these steps to run Base-Docs locally: +Install our Github App to auto propagate changes from your repo to your deployment. Changes will be deployed to production automatically after pushing to the default branch. Find the link to install on your dashboard. -1. Clone repo +#### Troubleshooting -2. Enable yarn by running `corepack enable` +- Mintlify dev isn't running - Run `mintlify install` it'll re-install dependencies. +- Page loads as a 404 - Make sure you are running in a folder with `docs.json` -3. Make sure you have installed all dependencies by running `yarn install` at -the top-level +### Storybook for hosting UI components -4. `yarn build` +Checkout the [storybook README](storybook/README.md) for more information. -4. Start development server by running `yarn dev` +### TODO +- [ ] Add github action to deploy storybook to chromatic whenever there is a push to the `main` branch and only changes in `storybook` folder diff --git a/docs/pages/arbitration.mdx b/_pages/arbitration.mdx similarity index 100% rename from docs/pages/arbitration.mdx rename to _pages/arbitration.mdx diff --git a/docs/pages/base-services-hub.mdx b/_pages/base-services-hub.mdx similarity index 100% rename from docs/pages/base-services-hub.mdx rename to _pages/base-services-hub.mdx diff --git a/docs/pages/buildathons/2025-02-flash.mdx b/_pages/buildathons/2025-02-flash.mdx similarity index 65% rename from docs/pages/buildathons/2025-02-flash.mdx rename to _pages/buildathons/2025-02-flash.mdx index 942e3f55..f5f48990 100644 --- a/docs/pages/buildathons/2025-02-flash.mdx +++ b/_pages/buildathons/2025-02-flash.mdx @@ -1,4 +1,7 @@ -# Buildathon: 2025-02-flash +--- +title: "Buildathon: 2025-02-flash" +--- + ## Flashblocks Builder Side Quest @@ -37,43 +40,43 @@ A total of **2 ETH** in prizes with the 1st place receiving 1 ETH. ## Start Building -:::info + Visit our [Flashblocks page](https://www.base.org/flashblocks) for comprehensive documentation on how to build with Flashblocks, including detailed examples and response formats. -::: - -Flashblocks is enabled for developers on Base Sepolia, providing ultra-fast 200-millisecond block times. You can integrate with Flashblocks in two ways: - -:::steps - -### Flashblock WebSocket endpoint - -Stream real-time block updates over a WebSocket connection at: - -``` -wss://sepolia.flashblocks.base.org/ws -``` - -This endpoint returns a stream of Flashblocks with differential data between blocks to minimize bandwidth usage. The initial block contains complete data while subsequent blocks only include changes. + -### Flashblock RPC endpoint -Query the Flashblocks-aware RPC endpoint at: - -``` -https://sepolia-preconf.base.org -``` - -This endpoint supports all standard Ethereum JSON-RPC methods plus Flashblocks-specific functionality. You can use the `pending` tag to retrieve the latest Flashblock: - -```bash -curl https://sepolia-preconf.base.org \ - -X POST \ - -H "Content-Type: application/json" \ - -d '{ - "jsonrpc": "2.0", - "method": "eth_getBlockByNumber", - "params": ["pending", true], - "id": 1 - }' -``` +Flashblocks is enabled for developers on Base Sepolia, providing ultra-fast 200-millisecond block times. You can integrate with Flashblocks in two ways: + + + Stream real-time block updates over a WebSocket connection at: + + ``` + wss://sepolia.flashblocks.base.org/ws + ``` + + This endpoint returns a stream of Flashblocks with differential data between blocks to minimize bandwidth usage. The initial block contains complete data while subsequent blocks only include changes. + + + + Query the Flashblocks-aware RPC endpoint at: + + ``` + https://sepolia-preconf.base.org + ``` + + This endpoint supports all standard Ethereum JSON-RPC methods plus Flashblocks-specific functionality. You can use the `pending` tag to retrieve the latest Flashblock: + + ```bash + curl https://sepolia-preconf.base.org \ + -X POST \ + -H "Content-Type: application/json" \ + -d '{ + "jsonrpc": "2.0", + "method": "eth_getBlockByNumber", + "params": ["pending", true], + "id": 1 + }' + ``` + + diff --git a/docs/pages/builderkits/agentkit/index.mdx b/_pages/builderkits/agentkit/index.mdx similarity index 100% rename from docs/pages/builderkits/agentkit/index.mdx rename to _pages/builderkits/agentkit/index.mdx diff --git a/docs/pages/builderkits/minikit/debugging.mdx b/_pages/builderkits/minikit/debugging.mdx similarity index 97% rename from docs/pages/builderkits/minikit/debugging.mdx rename to _pages/builderkits/minikit/debugging.mdx index 2845d387..e6d9eae5 100644 --- a/docs/pages/builderkits/minikit/debugging.mdx +++ b/_pages/builderkits/minikit/debugging.mdx @@ -1,4 +1,7 @@ -# Common Issues & Debugging +--- +title: "Common Issues & Debugging" +--- + This section outlines frequent issues encountered during the development of Mini Apps and how to resolve them. @@ -79,8 +82,7 @@ This is often caused by a farcaster.json file that was signed using the wrong wa To sign with the correct identity, import your Farcaster custody key into an external wallet: -:::info - + To sign with the correct identity, import your Farcaster custody key into an external wallet: 1. Open the Warpcast mobile app @@ -92,8 +94,8 @@ To sign with the correct identity, import your Farcaster custody key into an ext 4. Import the phrase into a compatible wallet (e.g., Coinbase Wallet Mobile App, MetaMask or Rabby) 5. Use this wallet for signing the `accountAssociation` payload + -::: ### Manifest Signing Utility @@ -105,9 +107,10 @@ Run the following to initiate the manifest signing workflow: This CLI will open the signing UI in your browser and update local .env values automatically. -:::info + This is required for generating valid signed manifests that link your domain to your Farcaster identity. -::: + + ## Developer Tools diff --git a/docs/pages/builderkits/minikit/overview.mdx b/_pages/builderkits/minikit/overview.mdx similarity index 95% rename from docs/pages/builderkits/minikit/overview.mdx rename to _pages/builderkits/minikit/overview.mdx index 4977ee8b..efd73d48 100644 --- a/docs/pages/builderkits/minikit/overview.mdx +++ b/_pages/builderkits/minikit/overview.mdx @@ -47,9 +47,10 @@ This command will: After running the command, follow the prompts to configure your project. -:::info + We recommend using [Vercel](https://vercel.com) to deploy your MiniKit app, as it integrates seamlessly with the upstash/redis backend required for frames, webhooks, and notifications. The CLI will guide you through setting up the necessary environment variables for your Redis database. -::: + + ## Provider @@ -160,9 +161,10 @@ const handleSendNotification = () => { }; ``` -:::info + Notifications require a backend proxy to avoid CORS restrictions. The CLI automatically sets up this proxy at `/api/notification`, but you can override this in the `MiniKitProvider`. -::: + + ### useOpenUrl @@ -234,9 +236,10 @@ const handleSignIn = async () => { }; ``` -:::info + Authentication requires additional setup utilizing an auth framework like next/auth or manually integrating session storage and route/component authentication. -::: + + ## CLI @@ -256,9 +259,10 @@ The CLI creates an application with: - Uses upstash/redis for data storage (compatible with Vercel) - Requires users to sign up for an upstash/redis account and add their key and URL to the .env file - :::info - The CLI creates both frontend and backend components to support adding frames, webhooks, and notifications. While a frontend-only option was considered, the ability to add frames and handle notifications requires backend support. If you don't need these features, you can easily remove the database and related routes after project creation. - ::: + + The CLI creates both frontend and backend components to support adding frames, webhooks, and notifications. While a frontend-only option was considered, the ability to add frames and handle notifications requires backend support. If you don't need these features, you can easily remove the database and related routes after project creation. + + 2. **Account Association Generation** diff --git a/docs/pages/builderkits/minikit/quickstart.mdx b/_pages/builderkits/minikit/quickstart.mdx similarity index 87% rename from docs/pages/builderkits/minikit/quickstart.mdx rename to _pages/builderkits/minikit/quickstart.mdx index 84dac4e8..f032da67 100644 --- a/docs/pages/builderkits/minikit/quickstart.mdx +++ b/_pages/builderkits/minikit/quickstart.mdx @@ -1,6 +1,6 @@ -import { Callout } from 'vocs/components' - -# MiniKit Quickstart +--- +title: "MiniKit Quickstart" +--- This guide shows you how to get started with MiniKit, the easist way to build mini apps on Base! It can also be used to update an exisitng standalone app to a mini app. We'll start by setting up the template project with the CLI tool and then explore both built-in and additional features of MiniKit. @@ -18,34 +18,31 @@ A mini app is a lightweight web app that runs directly inside [Farcaster Frames] ## Initial Setup -:::steps - -## Create a new MiniKit project using the CLI: - -```bash -npx create-onchain --mini -``` - -## When prompted, enter your CDP Client API key. - -You can get a CDP API key by going to the (CDP Portal)[portal.cdp.coinbase.com] and navigating API Keys -> Client API Key. + + + ```bash + npx create-onchain --mini + ``` + + + You can get a CDP API key by going to the (CDP Portal)[portal.cdp.coinbase.com] and navigating API Keys -> Client API Key. + + + You will be asked if you'd like to set up your manifest. You can skip the manifest setup step as we'll handle that separately once we know our project's URL. + + + ```bash [Terminal] + cd your-project-name + npm install + npm run dev + ``` + + + These docs are LLM-friendly—reference [llms.txt](https://docs.base.org/builderkits/minikit/llms.txt) in your code editor to streamline builds and prompt smarter. + + + -## Skip Frames Account Manifest Setup - -You will be asked if you'd like to set up your manifest. You can skip the manifest setup step as we'll handle that separately once we know our project's URL. - -## Navigate to your project directory and install dependencies: - -```bash [Terminal] -cd your-project-name -npm install -npm run dev -``` - - - These docs are LLM-friendly—reference [llms.txt](https://docs.base.org/builderkits/minikit/llms.txt) in your code editor to streamline builds and prompt smarter. - -::: ## Testing Your Mini App @@ -54,11 +51,15 @@ To test your Mini App in Warpcast, you'll need a live URL. We recommend using [Vercel](https://vercel.com) to deploy your MiniKit app, as it integrates seamlessly with the upstash/redis backend required for stateful frames, webhooks, and notifications. Alternatively, you can use ngrok to tunnel your localhost to a live url. -::::details[Using ngrok] -:::warning[Pitfalls] + + + +**Pitfalls** + To successfully test your app, you'll need the paid version of ngrok. The free veresion has an approval screen which can break the frame manifest. Also the url for the free version will change every time requiring you to update the manifest each time you start a new ngrok tunnel. -::: + + 1. Start your development server: @@ -82,25 +83,31 @@ ngrok http 3000 5. In the "Preview Frames" section, paste your ngrok URL to test your mini app. -:::: + ### Deploying to Vercel -:::steps - -#### Install Vercel CLI: `npm install -g vercel` - -#### Deploy with the command: `vercel` - -#### Set environment variables in your Vercel project settings (you can use `vercel env add` to set these up via CLI): - -- NEXT_PUBLIC_CDP_CLIENT_API_KEY (from [CDP Portal](https://portal.cdp.coinbase.com)) -- NEXT_PUBLIC_URL (deployed app URL) -- NEXT_PUBLIC_IMAGE_URL (optional) -- NEXT_PUBLIC_SPLASH_IMAGE_URL (optional) -- NEXT_PUBLIC_SPLASH_BACKGROUND_COLORs - -::: + + + ```sh + npm install -g vercel + ``` + + + ```sh + vercel + ``` + + + You can use `vercel env add` to set these up via CLI: + + - NEXT_PUBLIC_CDP_CLIENT_API_KEY (from [CDP Portal](https://portal.cdp.coinbase.com)) + - NEXT_PUBLIC_URL (deployed app URL) + - NEXT_PUBLIC_IMAGE_URL (optional) + - NEXT_PUBLIC_SPLASH_IMAGE_URL (optional) + - NEXT_PUBLIC_SPLASH_BACKGROUND_COLORs + + You can now test your mini app: @@ -206,9 +213,12 @@ const handleAddFrame = async () => { } ``` -:::warning[Not for Production] + +**Not for Production** + In production, you'll want to save the url and token associated with each user in a persistent database so that you can send them notifications over time. -::: + + ### useOpenUrl @@ -351,9 +361,10 @@ const handleSendNotification = async () => { )} ``` -:::info + Notice that we first check if the user has added the frame to their list of mini apps before displaying the button. This is using the `context` object provided by `useMiniKit()`. If you don't see the button to send the notification, its likely because mini app hasn't been saved. -::: + + ## Conclusion diff --git a/docs/pages/builderkits/minikit/thinking-social.mdx b/_pages/builderkits/minikit/thinking-social.mdx similarity index 99% rename from docs/pages/builderkits/minikit/thinking-social.mdx rename to _pages/builderkits/minikit/thinking-social.mdx index 2e8bcefb..4ca6f4d7 100644 --- a/docs/pages/builderkits/minikit/thinking-social.mdx +++ b/_pages/builderkits/minikit/thinking-social.mdx @@ -1,4 +1,7 @@ -# Thinking Social +--- +title: "Thinking Social" +--- + **Designing mini apps that people actually come back to.** diff --git a/docs/pages/builderkits/onchainkit/api/build-deposit-to-morpho-tx.mdx b/_pages/builderkits/onchainkit/api/build-deposit-to-morpho-tx.mdx similarity index 94% rename from docs/pages/builderkits/onchainkit/api/build-deposit-to-morpho-tx.mdx rename to _pages/builderkits/onchainkit/api/build-deposit-to-morpho-tx.mdx index 9223d0b4..c76d4db6 100644 --- a/docs/pages/builderkits/onchainkit/api/build-deposit-to-morpho-tx.mdx +++ b/_pages/builderkits/onchainkit/api/build-deposit-to-morpho-tx.mdx @@ -1,4 +1,7 @@ -# `buildDepositToMorphoTx` +--- +title: "`buildDepositToMorphoTx`" +--- + The `buildDepositToMorphoTx` function is used to build [Calls](/builderkits/onchainkit/transaction/types#calls) for depositing an asset to Morpho. These calls can be passed the `` component to send a transaction. diff --git a/docs/pages/builderkits/onchainkit/api/build-mint-transaction.mdx b/_pages/builderkits/onchainkit/api/build-mint-transaction.mdx similarity index 94% rename from docs/pages/builderkits/onchainkit/api/build-mint-transaction.mdx rename to _pages/builderkits/onchainkit/api/build-mint-transaction.mdx index 945c33e1..c4da29d8 100644 --- a/docs/pages/builderkits/onchainkit/api/build-mint-transaction.mdx +++ b/_pages/builderkits/onchainkit/api/build-mint-transaction.mdx @@ -1,4 +1,7 @@ -# `buildMintTransaction` +--- +title: "`buildMintTransaction`" +--- + The `buildMintTransaction` function is used to get an unsigned transaction for minting an NFT. @@ -6,8 +9,7 @@ Before using them, make sure to obtain a [Client API Key](https://portal.cdp.coi ## Usage -:::code-group - + ```tsx twoslash [code] import { setOnchainKitConfig } from '@coinbase/onchainkit'; import { buildMintTransaction } from '@coinbase/onchainkit/api'; @@ -31,8 +33,7 @@ const response = await buildMintTransaction({ } } ``` - -::: + ## Returns diff --git a/docs/pages/builderkits/onchainkit/api/build-swap-transaction.mdx b/_pages/builderkits/onchainkit/api/build-swap-transaction.mdx similarity index 98% rename from docs/pages/builderkits/onchainkit/api/build-swap-transaction.mdx rename to _pages/builderkits/onchainkit/api/build-swap-transaction.mdx index d2ef79cf..9d1a60ba 100644 --- a/docs/pages/builderkits/onchainkit/api/build-swap-transaction.mdx +++ b/_pages/builderkits/onchainkit/api/build-swap-transaction.mdx @@ -1,4 +1,7 @@ -# `buildSwapTransaction` +--- +title: "`buildSwapTransaction`" +--- + The `buildSwapTransaction` function is used to get an unsigned transaction for a swap between two Tokens. @@ -6,8 +9,7 @@ Before using this function, make sure to obtain a [Client API Key](https://porta ## Usage -:::code-group - + ```tsx twoslash [code] import { setOnchainKitConfig } from '@coinbase/onchainkit'; import { buildSwapTransaction } from '@coinbase/onchainkit/api'; @@ -112,8 +114,7 @@ const response = await buildSwapTransaction({ } } ``` - -::: + ## Returns diff --git a/docs/pages/builderkits/onchainkit/api/build-withdraw-from-morpho-tx.mdx b/_pages/builderkits/onchainkit/api/build-withdraw-from-morpho-tx.mdx similarity index 94% rename from docs/pages/builderkits/onchainkit/api/build-withdraw-from-morpho-tx.mdx rename to _pages/builderkits/onchainkit/api/build-withdraw-from-morpho-tx.mdx index d32d7fbd..bbd245a4 100644 --- a/docs/pages/builderkits/onchainkit/api/build-withdraw-from-morpho-tx.mdx +++ b/_pages/builderkits/onchainkit/api/build-withdraw-from-morpho-tx.mdx @@ -1,4 +1,7 @@ -# `buildWithdrawFromMorphoTx` +--- +title: "`buildWithdrawFromMorphoTx`" +--- + The `buildWithdrawFromMorphoTx` function is used to build [Calls](/builderkits/onchainkit/transaction/types#calls) for withdrawing an asset from Morpho. These calls can be passed the `` component to send a transaction. diff --git a/docs/pages/builderkits/onchainkit/api/get-mint-details.mdx b/_pages/builderkits/onchainkit/api/get-mint-details.mdx similarity index 96% rename from docs/pages/builderkits/onchainkit/api/get-mint-details.mdx rename to _pages/builderkits/onchainkit/api/get-mint-details.mdx index 2cb0632f..4c690d0d 100644 --- a/docs/pages/builderkits/onchainkit/api/get-mint-details.mdx +++ b/_pages/builderkits/onchainkit/api/get-mint-details.mdx @@ -1,4 +1,7 @@ -# `getMintDetails` +--- +title: "`getMintDetails`" +--- + The `getMintDetails` function returns data required to view an NFT to be minted @@ -6,8 +9,7 @@ Before using them, make sure to obtain a [Client API Key](https://portal.cdp.coi ## Usage -:::code-group - + ```tsx twoslash [code] import { setOnchainKitConfig } from '@coinbase/onchainkit'; import { getMintDetails } from '@coinbase/onchainkit/api'; @@ -45,8 +47,7 @@ const response = await getMintDetails({ "totalOwners": "200" } ``` - -::: + ## Returns diff --git a/docs/pages/builderkits/onchainkit/api/get-portfolios.mdx b/_pages/builderkits/onchainkit/api/get-portfolios.mdx similarity index 94% rename from docs/pages/builderkits/onchainkit/api/get-portfolios.mdx rename to _pages/builderkits/onchainkit/api/get-portfolios.mdx index 6e2d0ab4..fcc6bec4 100644 --- a/docs/pages/builderkits/onchainkit/api/get-portfolios.mdx +++ b/_pages/builderkits/onchainkit/api/get-portfolios.mdx @@ -1,24 +1,28 @@ -# `getPortfolios` +--- +title: "`getPortfolios`" +--- + The `getPortfolios` function returns an object containing an array of portfolios for the provided addresses. Each portfolio is an object with the address of the wallet, the fiat value of the portfolio, and an array of tokens held by the provided address. -:::info + Before using this endpoint, make sure to obtain a [Client API Key](https://portal.cdp.coinbase.com/projects/api-keys/client-key) from Coinbase Developer Platform. -::: + + -:::info + Please note: `getPortfolios` is only available for Base mainnet and Ethereum mainnet. You can control the network in the `OnchainKitProvider` by setting the `chain` prop. -::: + -## Usage -:::code-group +## Usage + ```tsx twoslash [code] import { setOnchainKitConfig } from '@coinbase/onchainkit'; import { getPortfolios } from '@coinbase/onchainkit/api'; @@ -46,8 +50,7 @@ const response = await getPortfolios({ } ] ``` - -::: + ## Returns diff --git a/docs/pages/builderkits/onchainkit/api/get-swap-quote.mdx b/_pages/builderkits/onchainkit/api/get-swap-quote.mdx similarity index 97% rename from docs/pages/builderkits/onchainkit/api/get-swap-quote.mdx rename to _pages/builderkits/onchainkit/api/get-swap-quote.mdx index 27e9009e..5434d955 100644 --- a/docs/pages/builderkits/onchainkit/api/get-swap-quote.mdx +++ b/_pages/builderkits/onchainkit/api/get-swap-quote.mdx @@ -1,4 +1,7 @@ -# `getSwapQuote` +--- +title: "`getSwapQuote`" +--- + The `getSwapQuote` function is used to get a quote for a swap between two Tokens. @@ -6,8 +9,7 @@ Before using them, make sure to obtain a [Client API Key](https://portal.cdp.coi ## Usage -:::code-group - + ```tsx twoslash [code] import { setOnchainKitConfig } from '@coinbase/onchainkit'; import { getSwapQuote } from '@coinbase/onchainkit/api'; @@ -73,8 +75,7 @@ const quote = await getSwapQuote({ "slippage": "3" } ``` - -::: + ## Returns diff --git a/docs/pages/builderkits/onchainkit/api/get-token-details.mdx b/_pages/builderkits/onchainkit/api/get-token-details.mdx similarity index 95% rename from docs/pages/builderkits/onchainkit/api/get-token-details.mdx rename to _pages/builderkits/onchainkit/api/get-token-details.mdx index 2be1feb2..7f1f943b 100644 --- a/docs/pages/builderkits/onchainkit/api/get-token-details.mdx +++ b/_pages/builderkits/onchainkit/api/get-token-details.mdx @@ -1,4 +1,7 @@ -# `getTokenDetails` +--- +title: "`getTokenDetails`" +--- + The `getTokenDetails` function returns data required to view an NFT @@ -6,8 +9,7 @@ Before using them, make sure to obtain a [Client API Key](https://portal.cdp.coi ## Usage -:::code-group - + ```tsx twoslash [code] import { setOnchainKitConfig } from '@coinbase/onchainkit'; import { getTokenDetails } from '@coinbase/onchainkit/api'; @@ -34,8 +36,7 @@ const response = await getTokenDetails({ "mimeType": "image/png", "contractType": "ERC721" ``` - -::: + ## Returns diff --git a/docs/pages/builderkits/onchainkit/api/get-tokens.mdx b/_pages/builderkits/onchainkit/api/get-tokens.mdx similarity index 96% rename from docs/pages/builderkits/onchainkit/api/get-tokens.mdx rename to _pages/builderkits/onchainkit/api/get-tokens.mdx index 5edad702..836c4447 100644 --- a/docs/pages/builderkits/onchainkit/api/get-tokens.mdx +++ b/_pages/builderkits/onchainkit/api/get-tokens.mdx @@ -1,4 +1,7 @@ -# `getTokens` +--- +title: "`getTokens`" +--- + The `getTokens` function retrieves a list of tokens on Base by searching for the name, symbol, or address of a token. @@ -8,8 +11,7 @@ Before using them, make sure to obtain a [Client API Key](https://portal.cdp.coi Search by symbol -:::code-group - + ```tsx twoslash [code] import { setOnchainKitConfig } from '@coinbase/onchainkit'; import { getTokens } from '@coinbase/onchainkit/api'; // [!code focus] @@ -32,13 +34,11 @@ const tokens = await getTokens({ limit: '1', search: 'degen' }); // [!code focus }, ]; ``` - -::: + Search by name -:::code-group - + ```tsx twoslash [code] import { setOnchainKitConfig } from '@coinbase/onchainkit'; import { getTokens } from '@coinbase/onchainkit/api'; // [!code focus] @@ -61,13 +61,11 @@ const tokens = await getTokens({ limit: '1', search: 'Wrapped Ether' }); // [!co }, ]; ``` - -::: + Search by address -:::code-group - + ```tsx twoslash [code] import { setOnchainKitConfig } from '@coinbase/onchainkit'; import { getTokens } from '@coinbase/onchainkit/api'; // [!code focus] @@ -93,8 +91,7 @@ const tokens = await getTokens({ }, ]; ``` - -::: + ## Returns diff --git a/docs/pages/builderkits/onchainkit/api/types.mdx b/_pages/builderkits/onchainkit/api/types.mdx similarity index 100% rename from docs/pages/builderkits/onchainkit/api/types.mdx rename to _pages/builderkits/onchainkit/api/types.mdx diff --git a/docs/pages/builderkits/onchainkit/appchain/bridge.mdx b/_pages/builderkits/onchainkit/appchain/bridge.mdx similarity index 98% rename from docs/pages/builderkits/onchainkit/appchain/bridge.mdx rename to _pages/builderkits/onchainkit/appchain/bridge.mdx index e525598e..6aca34f3 100644 --- a/docs/pages/builderkits/onchainkit/appchain/bridge.mdx +++ b/_pages/builderkits/onchainkit/appchain/bridge.mdx @@ -3,11 +3,16 @@ title: · OnchainKit description: Bridge to appchains with OnchainKit --- +import { Danger } from "/snippets/danger.mdx"; + # `` -:::danger[⚠️ NOTE] + +**⚠️ NOTE** + The `AppchainBridge` component is alpha release software and is provided AS-IS. Use at your own risk. -::: + + The `AppchainBridge` component provides a simple interface for implementing bridging to appchains with OnchainKit. @@ -27,8 +32,7 @@ npm create onchain@latest If you're adding `AppchainBridge` to an existing project, simply install OnchainKit. -:::code-group - + ```bash [npm] npm install @coinbase/onchainkit ``` @@ -44,8 +48,7 @@ pnpm add @coinbase/onchainkit ```bash [bun] bun add @coinbase/onchainkit ``` - -::: + Wrap the `` around your app, following the steps in [Getting Started](/builderkits/onchainkit/installation/nextjs#add-providers). @@ -57,8 +60,7 @@ You can retrieve the chain ID and your RPC URL from your appchain's dashboard in Once successfully created, add the custom chain to your Wagmi configuration, and provide it as a child component to `OnchainKitProvider`. -:::code-group - + ```tsx twoslash [chain.ts] // @noErrors: 2554 import { defineChain } from 'viem'; @@ -135,8 +137,7 @@ export function Providers(props: { children: ReactNode }) { ); } ``` - -::: + Use the custom chain to create an `Appchain` object. You can also render an icon in the UI using the `icon` prop. @@ -252,13 +253,16 @@ const customBridgeableTokens: BridgeableToken[] = [ ]; ``` -:::warning[⚠️ What is remoteToken?] + +**⚠️ What is remoteToken?** + The `remoteToken` field represents the token address on the appchain you're bridging to. ERC-20 tokens on the appchain must comply to the `IOptimismMintableERC20` interface to be bridgeable. Follow the [Optimism documentation](https://docs.optimism.io/app-developers/tutorials/bridging/standard-bridge-standard-token#create-an-l2-erc-20-token) to retrieve the `remoteToken` address for your ERC-20 token. -::: + + You can then plug the `customBridgeableTokens` into the `AppchainBridge` component with the `bridgeableTokens` prop. diff --git a/docs/pages/builderkits/onchainkit/appchain/types.mdx b/_pages/builderkits/onchainkit/appchain/types.mdx similarity index 100% rename from docs/pages/builderkits/onchainkit/appchain/types.mdx rename to _pages/builderkits/onchainkit/appchain/types.mdx diff --git a/docs/pages/builderkits/onchainkit/buy/buy.mdx b/_pages/builderkits/onchainkit/buy/buy.mdx similarity index 97% rename from docs/pages/builderkits/onchainkit/buy/buy.mdx rename to _pages/builderkits/onchainkit/buy/buy.mdx index c688b418..450ec44a 100644 --- a/docs/pages/builderkits/onchainkit/buy/buy.mdx +++ b/_pages/builderkits/onchainkit/buy/buy.mdx @@ -3,6 +3,7 @@ title: · OnchainKit description: Buy components & utilities --- +import { Danger } from "/snippets/danger.mdx"; import { Avatar, Name } from '@coinbase/onchainkit/identity'; import { Swap, SwapAmountInput, SwapButton, SwapDefault, SwapMessage, SwapToggleButton, SwapToast } from '@coinbase/onchainkit/swap'; import { Buy } from '@coinbase/onchainkit/buy'; @@ -21,15 +22,17 @@ The `Buy` components provide a comprehensive interface for users to purchase [To The `Buy` component supports token swaps from USDC and ETH by default with the option to provide an additional token of choice using the `fromToken` prop. In addition, users are able to purchase tokens using their Coinbase account, Apple Pay, or debit card. -:::info + The Apple Pay and Debit Card onramp options are only available for Coinbase supported assets. -::: + + Before using, ensure you've completed all [Getting Started steps](/builderkits/onchainkit/getting-started). -:::info + This component requires a `projectId` to be set in the `OnchainKitProvider`. You can find your `projectId` on [Coinbase Developer Platform](https://portal.cdp.coinbase.com/products/onchainkit). -::: + + ## Usage @@ -67,11 +70,12 @@ export default function BuyComponents() { // [!code focus] -:::danger + **Note: This interface is for demonstration purposes only.** Swap and Onramp flows will execute and work out of the box when you implement the component in your own app. -::: + + ### Sponsor gas with Paymaster diff --git a/docs/pages/builderkits/onchainkit/buy/types.mdx b/_pages/builderkits/onchainkit/buy/types.mdx similarity index 100% rename from docs/pages/builderkits/onchainkit/buy/types.mdx rename to _pages/builderkits/onchainkit/buy/types.mdx diff --git a/docs/pages/builderkits/onchainkit/checkout/checkout.mdx b/_pages/builderkits/onchainkit/checkout/checkout.mdx similarity index 86% rename from docs/pages/builderkits/onchainkit/checkout/checkout.mdx rename to _pages/builderkits/onchainkit/checkout/checkout.mdx index 5fc7fdd5..6a79df5c 100644 --- a/docs/pages/builderkits/onchainkit/checkout/checkout.mdx +++ b/_pages/builderkits/onchainkit/checkout/checkout.mdx @@ -3,6 +3,7 @@ title: · OnchainKit description: One-click checkout for onchain commerce --- +import { Danger } from "/snippets/danger.mdx"; import { Checkout, CheckoutButton } from '@coinbase/onchainkit/checkout'; import App from '@/components/App'; @@ -27,9 +28,10 @@ Our all-in-one solution simplifies payment processing for onchain developers, re Before using the `Checkout` component, ensure you've completed the [Getting Started](/builderkits/onchainkit/getting-started) steps. -::::tip + To use the `Checkout` component, you'll need to provide a Client API Key in `OnchainKitProvider`. You can get one following our [Getting Started](/builderkits/onchainkit/getting-started#get-your-client-api-key) steps. -::::: + + ### Starting a new project @@ -43,8 +45,7 @@ npm create onchain@latest If you're adding `Checkout` to an existing project, simply install OnchainKit. -:::code-group - + ```bash [npm] npm install @coinbase/onchainkit ``` @@ -60,8 +61,7 @@ pnpm add @coinbase/onchainkit ```bash [bun] bun add @coinbase/onchainkit ``` - -::: + Wrap the `` around your app, following the steps in [Getting Started](/builderkits/onchainkit/getting-started#add-providers). @@ -71,62 +71,54 @@ Wrap the `` around your app, following the steps in [Getti Ideal for fixed-price items. Get started with minimal setup. -::::steps - -### Sign up for a Coinbase Commerce account - -Head to [Coinbase Commerce](https://beta.commerce.coinbase.com/) and sign up. This is where you’ll manage transactions, view reports, and configure payments. - -### Create a product and copy the `productId` - -In the Coinbase Commerce dashboard, create a new product and copy the `productId`. - -### Import the component - -```tsx twoslash -import { Checkout, CheckoutButton, CheckoutStatus } from '@coinbase/onchainkit/checkout'; - - - // set coinbaseBranded for branding - - -``` + + + Head to [Coinbase Commerce](https://beta.commerce.coinbase.com/) and sign up. This is where you’ll manage transactions, view reports, and configure payments. + + + In the Coinbase Commerce dashboard, create a new product and copy the `productId`. + + + ```tsx twoslash + import { Checkout, CheckoutButton, CheckoutStatus } from '@coinbase/onchainkit/checkout'; + + + // set coinbaseBranded for branding + + + ``` + + -:::: ### Option 2: Dynamic Charges For variable pricing, custom metadata, or multi-product checkouts, use backend-generated charges. -::::steps - -### Sign up for a Coinbase Commerce account - -Head to [Coinbase Commerce](https://beta.commerce.coinbase.com/) and sign up. This is where you’ll manage transactions, view reports, and configure payments. - -### Create a Coinbase Commerce API Key - -In the [Coinbase Commerce dashboard](https://beta.commerce.coinbase.com/settings/security), create a new API Key under `Security` in `Settings`. - -### Set up a backend to create charges dynamically using the Coinbase Commerce API. - -See [Using chargeHandler](/builderkits/onchainkit/checkout/checkout#using-chargehandler) for a code example. - -### Pass the chargeID into Checkout via the chargeHandler prop. - -```tsx -const chargeHandler = async () => { - const response = await fetch('/createCharge', { method: 'POST' }); - const { id } = await response.json(); - return id; // Return charge ID -}; - - - - -``` + + + Head to [Coinbase Commerce](https://beta.commerce.coinbase.com/) and sign up. This is where you’ll manage transactions, view reports, and configure payments. + + + In the [Coinbase Commerce dashboard](https://beta.commerce.coinbase.com/settings/security), create a new API Key under `Security` in `Settings`. + + + See [Using chargeHandler](/builderkits/onchainkit/checkout/checkout#using-chargehandler) for a code example. + + + ```tsx + const chargeHandler = async () => { + const response = await fetch('/createCharge', { method: 'POST' }); + const { id } = await response.json(); + return id; // Return charge ID + }; -:::: + + + + ``` + + That's it! Start selling onchain with just a few lines of code. @@ -164,16 +156,19 @@ Alternatively, you can create charges dynamically using the Coinbase Commerce AP This function must have the signature `() => Promise` and must return a valid chargeId created by the create charge endpoint. -:::tip + To create charges, you'll need a Coinbase Commerce [API Key](https://docs.cdp.coinbase.com/commerce-onchain/docs/getting-started). -::: + + + + +**⚠️ Warning** -:::danger[⚠️ Warning] You should protect your Coinbase Commerce API Key by only creating charges server-side. -::: + -:::code-group + ```ts [backend.ts] // This backend endpoint should create a charge and return the response. app.post('/createCharge', async (req: Request, res: Response) => { @@ -212,8 +207,7 @@ const chargeHandler = async () => { ``` - -::: + Note that `productId` and `chargeHandler` are mutually exclusive and only one can be provided as a prop to Checkout. @@ -260,13 +254,17 @@ const statusHandler = async (status: LifecycleStatus) => { // [!code focus] // ---cut-after--- ``` -:::tip + To verify charges, you'll need a Coinbase Commerce [API Key](https://docs.cdp.coinbase.com/commerce-onchain/docs/getting-started). -::: + + + + +**⚠️ Warning** -:::danger[⚠️ Warning] You should protect your Coinbase Commerce API Key by verifying charges server-side. This client-side code is only provided as an example. -::: + + ### Viewing successful checkouts diff --git a/docs/pages/builderkits/onchainkit/checkout/types.mdx b/_pages/builderkits/onchainkit/checkout/types.mdx similarity index 100% rename from docs/pages/builderkits/onchainkit/checkout/types.mdx rename to _pages/builderkits/onchainkit/checkout/types.mdx diff --git a/_pages/builderkits/onchainkit/config/is-base.mdx b/_pages/builderkits/onchainkit/config/is-base.mdx new file mode 100644 index 00000000..62236ea3 --- /dev/null +++ b/_pages/builderkits/onchainkit/config/is-base.mdx @@ -0,0 +1,37 @@ +--- +title: "`isBase`" +--- + + +The `isBase` utility is designed to verify if the chain id is a valid Base or Base Sepolia chain id. + +## Usage + + +```tsx twoslash [code] +import { isBase } from '@coinbase/onchainkit'; + +// Base Mainnet (chain ID: 8453) +isBase({ chainId: 8453 }); // returns true + +// Base Sepolia (chain ID: 84532) +isBase({ chainId: 84532 }); // returns true + +// Ethereum (chain ID: 1) +isBase({ chainId: 1 }); // returns false +``` + +```ts [return value] +true; // When chainId is 8453 (Base Mainnet) or 84532 (Base Sepolia) +false; // For all other chain IDs +``` + + +## Returns + +`boolean` - Returns `true` if the chain id is Base or Base Sepolia, otherwise `false`. + +## Parameters + +[`IsBaseOptions`](./types#isbaseoptions) - See [`IsBaseOptions`](./types#isbaseoptions) for more details. + diff --git a/_pages/builderkits/onchainkit/config/is-ethereum.mdx b/_pages/builderkits/onchainkit/config/is-ethereum.mdx new file mode 100644 index 00000000..ea4c45b8 --- /dev/null +++ b/_pages/builderkits/onchainkit/config/is-ethereum.mdx @@ -0,0 +1,37 @@ +--- +title: "`isEthereum`" +--- + + +The `isEthereum` utility is designed to verify if the chain id is a valid Ethereum Mainnet or Ethereum Sepolia chain id. + +## Usage + + +```tsx twoslash [code] +import { isEthereum } from '@coinbase/onchainkit'; + +// Ethereum Mainnet (chain ID: 1) +isEthereum({ chainId: 1 }); // returns true + +// Ethereum Sepolia (chain ID: 11155111) +isEthereum({ chainId: 11155111 }); // returns true + +// Base (chain ID: 8453) +isEthereum({ chainId: 8453 }); // returns false +``` + +```ts [return value] +true; // When chainId is 1 (Ethereum Mainnet) or 11155111 (Ethereum Sepolia) +false; // For all other chain IDs +``` + + +## Returns + +`boolean` - Returns `true` if the chain id is Ethereum Mainnet or Ethereum Sepolia, otherwise `false`. + +## Parameters + +[`IsEthereumOptions`]: ./types#isethereumoptions + diff --git a/docs/pages/builderkits/onchainkit/config/onchainkit-provider.mdx b/_pages/builderkits/onchainkit/config/onchainkit-provider.mdx similarity index 99% rename from docs/pages/builderkits/onchainkit/config/onchainkit-provider.mdx rename to _pages/builderkits/onchainkit/config/onchainkit-provider.mdx index 5512a297..046f45ea 100644 --- a/docs/pages/builderkits/onchainkit/config/onchainkit-provider.mdx +++ b/_pages/builderkits/onchainkit/config/onchainkit-provider.mdx @@ -1,4 +1,7 @@ -# `` +--- +title: "``" +--- + Provides the OnchainKit React Context to the app. diff --git a/docs/pages/builderkits/onchainkit/config/supplemental-providers.mdx b/_pages/builderkits/onchainkit/config/supplemental-providers.mdx similarity index 96% rename from docs/pages/builderkits/onchainkit/config/supplemental-providers.mdx rename to _pages/builderkits/onchainkit/config/supplemental-providers.mdx index 3e80f9fd..db63dbc6 100644 --- a/docs/pages/builderkits/onchainkit/config/supplemental-providers.mdx +++ b/_pages/builderkits/onchainkit/config/supplemental-providers.mdx @@ -3,7 +3,7 @@ title: Supplemental Providers · OnchainKit description: Customize the Wagmi and QueryClient providers --- -import StartBuilding from '@/components/StartBuilding'; +import StartBuilding from "/snippets/start-building.mdx"; # Custom Supplemental Providers @@ -13,8 +13,7 @@ these providers with your own configuration. For example, the following code creates custom Wagmi and QueryClient providers: -:::code-group - + ```tsx twoslash [wagmi.ts] // @noErrors: 2554 import { http, cookieStorage, createConfig, createStorage } from 'wagmi'; @@ -83,7 +82,6 @@ export function Providers(props: { ); } ``` - -::: + diff --git a/docs/pages/builderkits/onchainkit/config/types.mdx b/_pages/builderkits/onchainkit/config/types.mdx similarity index 100% rename from docs/pages/builderkits/onchainkit/config/types.mdx rename to _pages/builderkits/onchainkit/config/types.mdx diff --git a/docs/pages/builderkits/onchainkit/create-a-basename-profile-component.mdx b/_pages/builderkits/onchainkit/create-a-basename-profile-component.mdx similarity index 99% rename from docs/pages/builderkits/onchainkit/create-a-basename-profile-component.mdx rename to _pages/builderkits/onchainkit/create-a-basename-profile-component.mdx index b1fc6ceb..7e08d16f 100644 --- a/docs/pages/builderkits/onchainkit/create-a-basename-profile-component.mdx +++ b/_pages/builderkits/onchainkit/create-a-basename-profile-component.mdx @@ -166,7 +166,8 @@ const IdentityWrapper: React.FC<{ address: string }> = ({ address }) => { export default IdentityWrapper; ``` -:::info[Possible Basename Text Records:] + +**Possible Basename Text Records:** The full list of existing text records for a basename: @@ -184,8 +185,8 @@ The full list of existing text records for a basename: Discord, Avatar ``` + -::: ## Implementing the Render Logic diff --git a/docs/pages/builderkits/onchainkit/earn/earn.mdx b/_pages/builderkits/onchainkit/earn/earn.mdx similarity index 99% rename from docs/pages/builderkits/onchainkit/earn/earn.mdx rename to _pages/builderkits/onchainkit/earn/earn.mdx index b6caa876..eba3ae12 100644 --- a/docs/pages/builderkits/onchainkit/earn/earn.mdx +++ b/_pages/builderkits/onchainkit/earn/earn.mdx @@ -25,8 +25,7 @@ npm create onchain@latest If you're adding `Earn` to an existing project, simply install OnchainKit. -:::code-group - + ```bash [npm] npm install @coinbase/onchainkit ``` @@ -42,8 +41,7 @@ pnpm add @coinbase/onchainkit ```bash [bun] bun add @coinbase/onchainkit ``` - -::: + Wrap the `` around your app, following the steps in [Getting Started](/builderkits/onchainkit/getting-started#add-providers). @@ -115,8 +113,7 @@ You can find the full interface for `EarnContextType` on the [Types page](/build Below, we use `useEarnContext` to implement a custom deposit interface by using `useEarnContext` to access the `depositAmount` and `setDepositAmount` context values. -:::code-group - + ```tsx twoslash [index.tsx] // @noErrors: 2307 import { Earn, useEarnContext } from '@coinbase/onchainkit/earn'; @@ -164,8 +161,7 @@ function CustomDepositButtons() { ); } ``` - -::: + @@ -193,13 +189,14 @@ Ensure that your `OnchainKitProvider` has a `paymaster` configured: > ``` -:::tip + If you have a contract allowlist set on Coinbase Developer Platform, you'll need to ensure that the following contract functions are allowed: - `deposit` on the Morpho vault - `redeem` on the Morpho vault - `approve` on the token being deposited - ::: + + ## Components diff --git a/docs/pages/builderkits/onchainkit/earn/types.mdx b/_pages/builderkits/onchainkit/earn/types.mdx similarity index 100% rename from docs/pages/builderkits/onchainkit/earn/types.mdx rename to _pages/builderkits/onchainkit/earn/types.mdx diff --git a/docs/pages/builderkits/onchainkit/fund/fetch-onramp-config.mdx b/_pages/builderkits/onchainkit/fund/fetch-onramp-config.mdx similarity index 96% rename from docs/pages/builderkits/onchainkit/fund/fetch-onramp-config.mdx rename to _pages/builderkits/onchainkit/fund/fetch-onramp-config.mdx index 9ebecf18..f9786533 100644 --- a/docs/pages/builderkits/onchainkit/fund/fetch-onramp-config.mdx +++ b/_pages/builderkits/onchainkit/fund/fetch-onramp-config.mdx @@ -1,11 +1,13 @@ -# `fetchOnrampConfig` +--- +title: "`fetchOnrampConfig`" +--- + The `fetchOnrampConfig` utility fetches the list of countries supported by Coinbase Onramp and their available payment methods. This is useful when you need to validate user eligibility or display available payment options. ## Usage -:::code-group - + ```tsx twoslash [code] import { fetchOnrampConfig } from '@coinbase/onchainkit/fund'; @@ -36,8 +38,7 @@ const config2 = await fetchOnrampConfig('your-api-key'); ] } ``` - -::: + ## Parameters diff --git a/docs/pages/builderkits/onchainkit/fund/fetch-onramp-options.mdx b/_pages/builderkits/onchainkit/fund/fetch-onramp-options.mdx similarity index 96% rename from docs/pages/builderkits/onchainkit/fund/fetch-onramp-options.mdx rename to _pages/builderkits/onchainkit/fund/fetch-onramp-options.mdx index 037ac702..d692e6ee 100644 --- a/docs/pages/builderkits/onchainkit/fund/fetch-onramp-options.mdx +++ b/_pages/builderkits/onchainkit/fund/fetch-onramp-options.mdx @@ -1,11 +1,13 @@ -# `fetchOnrampOptions` +--- +title: "`fetchOnrampOptions`" +--- + The `fetchOnrampOptions` utility retrieves supported fiat currencies and available crypto assets for a specific country. This information is essential for determining which assets can be purchased in the user's jurisdiction. ## Usage -:::code-group - + ```tsx twoslash [code] import { fetchOnrampOptions } from '@coinbase/onchainkit/fund'; @@ -42,8 +44,7 @@ const options = await fetchOnrampOptions({ ] } ``` - -::: + ## Parameters diff --git a/docs/pages/builderkits/onchainkit/fund/fetch-onramp-quote.mdx b/_pages/builderkits/onchainkit/fund/fetch-onramp-quote.mdx similarity index 97% rename from docs/pages/builderkits/onchainkit/fund/fetch-onramp-quote.mdx rename to _pages/builderkits/onchainkit/fund/fetch-onramp-quote.mdx index d6a2781c..9b812d17 100644 --- a/docs/pages/builderkits/onchainkit/fund/fetch-onramp-quote.mdx +++ b/_pages/builderkits/onchainkit/fund/fetch-onramp-quote.mdx @@ -1,11 +1,13 @@ -# `fetchOnrampQuote` +--- +title: "`fetchOnrampQuote`" +--- + The `fetchOnrampQuote` utility provides a quote based on the asset the user would like to purchase, plus the network, fiat payment, payment currency, payment method, and country. This is useful for getting pricing information and fees before initiating a transaction. ## Usage -:::code-group - + ```tsx twoslash [code] import { fetchOnrampQuote } from '@coinbase/onchainkit/fund'; @@ -46,8 +48,7 @@ const quote = await fetchOnrampQuote({ "quoteId": "quote_123" } ``` - -::: + ## Parameters diff --git a/docs/pages/builderkits/onchainkit/fund/fetch-onramp-transaction-status.mdx b/_pages/builderkits/onchainkit/fund/fetch-onramp-transaction-status.mdx similarity index 96% rename from docs/pages/builderkits/onchainkit/fund/fetch-onramp-transaction-status.mdx rename to _pages/builderkits/onchainkit/fund/fetch-onramp-transaction-status.mdx index 80c7b71b..0b1bf298 100644 --- a/docs/pages/builderkits/onchainkit/fund/fetch-onramp-transaction-status.mdx +++ b/_pages/builderkits/onchainkit/fund/fetch-onramp-transaction-status.mdx @@ -1,11 +1,13 @@ -# `fetchOnrampTransactionStatus` +--- +title: "`fetchOnrampTransactionStatus`" +--- + The `fetchOnrampTransactionStatus` utility retrieves the status of onramp transactions for a specific user. This is useful for tracking the progress of crypto purchases and displaying transaction history. ## Usage -:::code-group - + ```tsx twoslash [code] import { fetchOnrampTransactionStatus } from '@coinbase/onchainkit/fund'; @@ -33,8 +35,7 @@ const transactions = await fetchOnrampTransactionStatus({ "totalCount": "1" } ``` - -::: + ## Parameters diff --git a/docs/pages/builderkits/onchainkit/fund/fund-button.mdx b/_pages/builderkits/onchainkit/fund/fund-button.mdx similarity index 78% rename from docs/pages/builderkits/onchainkit/fund/fund-button.mdx rename to _pages/builderkits/onchainkit/fund/fund-button.mdx index 663bf3f2..0f22e0cd 100644 --- a/docs/pages/builderkits/onchainkit/fund/fund-button.mdx +++ b/_pages/builderkits/onchainkit/fund/fund-button.mdx @@ -27,71 +27,71 @@ Before using it, ensure you've completed all [Getting Started steps](/builderkit ## Walkthrough -::::steps + + + 1. Get your Project ID from the [Coinbase Developer Platform Dashboard](https://portal.cdp.coinbase.com/). + + OnchainKit copy Project Id + + 2. Add your Project ID to your `.env` file. + + ```tsx twoslash [.env] + // @noErrors + NEXT_PUBLIC_ONCHAINKIT_API_KEY=YOUR_PUBLIC_API_KEY + NEXT_PUBLIC_CDP_PROJECT_ID=YOUR_CDP_PROJECT_ID // [!code ++] + ``` + + + ```tsx twoslash + // @noErrors + + {props.children} + + ``` + + + ```tsx + import { FundButton } from '@coinbase/onchainkit/fund'; + + + ``` + + + + {({ address }) => { + if (address) { + return ( + + ) + } + return <> + + + + + + + ; + }} + + + + + + + +**Troubleshooting** -### Get your Project ID - -1. Get your Project ID from the [Coinbase Developer Platform Dashboard](https://portal.cdp.coinbase.com/). - -OnchainKit copy Project Id - -2. Add your Project ID to your `.env` file. - -```tsx twoslash [.env] -// @noErrors -NEXT_PUBLIC_ONCHAINKIT_API_KEY=YOUR_PUBLIC_API_KEY -NEXT_PUBLIC_CDP_PROJECT_ID=YOUR_CDP_PROJECT_ID // [!code ++] -``` - -### Add Project ID to OnchainKitProvider - -```tsx twoslash -// @noErrors - - {props.children} - -``` - -### Drop in the `````` component - -```tsx -import { FundButton } from '@coinbase/onchainkit/fund'; - - -``` - - - - {({ address }) => { - if (address) { - return ( - - ) - } - return <> - - - - - - - ; - }} - - - -:::: - -:::tip[Troubleshooting] If you see a "something went wrong" error message when navigating to pay.coinbase.com, make sure you have "enforce secure initialization" disabled on the [Onramp config page in Coinbase Developer Platform Dashboard](https://portal.cdp.coinbase.com/products/onramp). OnchainKit require secure init -::: + + ## Customizing the funding experience diff --git a/docs/pages/builderkits/onchainkit/fund/fund-card.mdx b/_pages/builderkits/onchainkit/fund/fund-card.mdx similarity index 98% rename from docs/pages/builderkits/onchainkit/fund/fund-card.mdx rename to _pages/builderkits/onchainkit/fund/fund-card.mdx index 4fd727f7..97bdfee7 100644 --- a/docs/pages/builderkits/onchainkit/fund/fund-card.mdx +++ b/_pages/builderkits/onchainkit/fund/fund-card.mdx @@ -22,21 +22,24 @@ The `` component provides a complete fiat onramp experience within y - Automatic exchange rate updates - Smart handling of payment method restrictions (based on country and subdivision) -:::info + The Apple Pay and Debit Card onramp options are only available for Coinbase supported assets. -::: + + ## Prerequisites Before using the `FundCard` component, ensure you've completed the [Getting Started](/builderkits/onchainkit/installation/nextjs#get-your-client-api-key) steps. -::::tip + To use the `FundCard` component, you'll need to provide a Client API Key in `OnchainKitProvider`. You can get one following our [Getting Started](/builderkits/onchainkit/installation/nextjs#get-your-client-api-key) steps. -::::: + + -:::info + This component requires a `projectId` to be set in the `OnchainKitProvider`. You can find your `projectId` on [Coinbase Developer Platform](https://portal.cdp.coinbase.com/products/onchainkit). -::: + + ## Usage @@ -143,9 +146,10 @@ const presetAmountInputs = ['10', '20', '50'] as const; />; ``` -:::info + **Note: 3 preset amount inputs are required in order to show the preset amount buttons.** -::: + + ### Custom Content @@ -197,9 +201,10 @@ import { ``` -:::info + **Note:** If you are using the custom components then you are going to need to access the state of the `FundCard` component. You can do this by using the `useFundContext` hook. -::: + + ```tsx const { diff --git a/docs/pages/builderkits/onchainkit/fund/get-onramp-buy-url.mdx b/_pages/builderkits/onchainkit/fund/get-onramp-buy-url.mdx similarity index 95% rename from docs/pages/builderkits/onchainkit/fund/get-onramp-buy-url.mdx rename to _pages/builderkits/onchainkit/fund/get-onramp-buy-url.mdx index e08b6dec..27ff06b3 100644 --- a/docs/pages/builderkits/onchainkit/fund/get-onramp-buy-url.mdx +++ b/_pages/builderkits/onchainkit/fund/get-onramp-buy-url.mdx @@ -1,4 +1,7 @@ -# `getOnrampBuyUrl` +--- +title: "`getOnrampBuyUrl`" +--- + The `getOnrampBuyUrl` utility is a helper method to generate a Coinbase Onramp URL. It helps you customize the funding experience for your users. For example: @@ -10,8 +13,7 @@ experience for your users. For example: ## Usage -:::code-group - + ```tsx twoslash [code] import { getOnrampBuyUrl } from '@coinbase/onchainkit/fund'; @@ -29,8 +31,7 @@ const onrampBuyUrl = getOnrampBuyUrl({ ```json [return value] 'https://pay.coinbase.com/buy?addresses=%7B%220x1%22%3A%5B%22base%22%5D%7D&appId=project-id&assets=%5B%22USDC%22%5D&fiatCurrency=USD&presetFiatAmount=20&redirectUrl=https%3A%2F%2Fyourapp.com%2Fonramp-return%3Fparam%3Dfoo' ``` - -::: + ## Returns diff --git a/docs/pages/builderkits/onchainkit/fund/setup-onramp-event-listeners.mdx b/_pages/builderkits/onchainkit/fund/setup-onramp-event-listeners.mdx similarity index 95% rename from docs/pages/builderkits/onchainkit/fund/setup-onramp-event-listeners.mdx rename to _pages/builderkits/onchainkit/fund/setup-onramp-event-listeners.mdx index d9c69a8e..2272aad5 100644 --- a/docs/pages/builderkits/onchainkit/fund/setup-onramp-event-listeners.mdx +++ b/_pages/builderkits/onchainkit/fund/setup-onramp-event-listeners.mdx @@ -1,11 +1,13 @@ -# `setupOnrampEventListeners` +--- +title: "`setupOnrampEventListeners`" +--- + The `setupOnrampEventListeners` utility sets up event listeners for the Coinbase Onramp widget. It helps you handle various events like successful purchases, exits, and other user interactions. ## Usage -:::code-group - + ```tsx twoslash [code] // @errors: 2305 import { setupOnrampEventListeners } from '@coinbase/onchainkit/fund'; @@ -32,8 +34,7 @@ unsubscribe(); // Returns an unsubscribe function () => void ``` - -::: + ## Parameters diff --git a/docs/pages/builderkits/onchainkit/fund/types.mdx b/_pages/builderkits/onchainkit/fund/types.mdx similarity index 100% rename from docs/pages/builderkits/onchainkit/fund/types.mdx rename to _pages/builderkits/onchainkit/fund/types.mdx diff --git a/docs/pages/builderkits/onchainkit/getting-started.mdx b/_pages/builderkits/onchainkit/getting-started.mdx similarity index 89% rename from docs/pages/builderkits/onchainkit/getting-started.mdx rename to _pages/builderkits/onchainkit/getting-started.mdx index 88b0dc00..944e0610 100644 --- a/docs/pages/builderkits/onchainkit/getting-started.mdx +++ b/_pages/builderkits/onchainkit/getting-started.mdx @@ -1,8 +1,10 @@ -import StartBuilding from '@/components/StartBuilding'; -import InstallationOptions from '@/components/InstallationOptions'; -import { Callout } from 'vocs/components' +--- +title: "Getting Started" +--- + +import StartBuilding from "/snippets/start-building.mdx"; +import InstallationOptions from '/snippets/installation-options.mdx'; -# Getting Started OnchainKit is your go-to SDK for building beautiful onchain applications. Ship in minutes, not weeks. @@ -41,9 +43,9 @@ You can also checkout our pre-built templates: - [Funding flow](https://github.com/fakepixels/fund-component) - [Social profile](https://github.com/fakepixels/ock-identity) - + These docs are LLM-friendly—reference [llms.txt](https://docs.base.org/builderkits/onchainkit/llms.txt) in your code editor to streamline builds and prompt smarter. - + ## Manual Installation diff --git a/docs/pages/builderkits/onchainkit/guides/ai-prompting-guide.mdx b/_pages/builderkits/onchainkit/guides/ai-prompting-guide.mdx similarity index 99% rename from docs/pages/builderkits/onchainkit/guides/ai-prompting-guide.mdx rename to _pages/builderkits/onchainkit/guides/ai-prompting-guide.mdx index 0d10f404..b0f6505c 100644 --- a/docs/pages/builderkits/onchainkit/guides/ai-prompting-guide.mdx +++ b/_pages/builderkits/onchainkit/guides/ai-prompting-guide.mdx @@ -4,7 +4,7 @@ description: Learn practical AI prompting techniques to enhance your coding work author: sohey --- -# Developer's Guide to Effective AI Prompting +# Developer's Guide to Effective AI Prompting This guide helps developers leverage AI tools effectively in their coding workflow. Whether you're using Cursor, GitHub Copilot, or other AI assistants, these strategies will help you get better results and integrate AI smoothly into your development process. @@ -80,9 +80,10 @@ Create a detailed instructions.md file for my project with the following section 6. APIs and Integrations: External services and how they connect. ``` -:::info + Note: When planning architecture or making complex design decisions, use AI models with strong reasoning—like o4 mini or Claude 3.7 Sonnet. They excel at thinking through tradeoffs, edge cases, and long-term planning. -::: + + ## **Effective Prompting Strategies** diff --git a/_pages/builderkits/onchainkit/guides/build-onchain-apps.mdx b/_pages/builderkits/onchainkit/guides/build-onchain-apps.mdx new file mode 100644 index 00000000..4bf59cfe --- /dev/null +++ b/_pages/builderkits/onchainkit/guides/build-onchain-apps.mdx @@ -0,0 +1,98 @@ +--- +title: Build Onchain Apps · OnchainKit +description: Our onchain app template streamlines your initial app setup and seamlessly integrates onchain components with web2 infrastructure, saving you weeks of effort. +--- + +# Build Onchain Apps with OnchainKit ⛵️ 🌊 + +Build your first onchain app effortlessly with OnchainKit's **app template**. Save weeks of initial setup +and easily integrate onchain components with web2 infrastructure. + +Our opinionated approach streamlines early decisions, making your development process smoother. + +Whether you're a hackathon participant or an ambitious entrepreneur aiming to build the next big thing, this template is tailored for you. + +Build Onchain Apps with OnchainKit + +Play with it live [here](https://onchain-app-template.vercel.app). + +## Out of the box + +- Next.js v14 with App routing 🏗️ +- Ethereum L2 support through Base 🔵 +- Easy account creation with Smart Wallet +- Live examples for Minting and Paymaster experiences with wagmi and Viem 🚀 +- Latest styling best practices with Tailwind CSS 💅 +- Easy maintenance with linting, formatting, and tests ✅ + +## Getting Started + + + + Go to https://github.com/coinbase/onchain-app-template and click on the "Use this template" button to create a new repository based on the template. + + Use OnchainKit template + + + Get your [Client API Key](https://portal.cdp.coinbase.com/projects/api-keys/client-key) from Coinbase Developer Platform. + + OnchainKit copy Client API Key + + In order to use RainbowKit, you'd also need to obtain a Wallet Connector project ID at [WalletConnect](https://cloud.reown.com/app). + + + + Create a new file in your project's root directory and name it `.env`. + + OnchainKit define Client API Key + + ```tsx [.env] + NEXT_PUBLIC_CDP_API_KEY=YOUR_PUBLIC_API_KEY + NEXT_PUBLIC_WC_PROJECT_ID=YOUR_WALLETCONNECT_PROJECT_ID + ``` + + + In your new onchain app repository, run the following commands to install the dependencies: + + ```bash + # Install bun in case you don't have it + curl -fsSL https://bun.sh/install | bash + + # Install packages + bun i + ``` + + + Now you are ready to run the app and start building onchain experiences! + + ```bash + # Run Next app + bun run dev + ``` + + + +## Need more help? + +If you have any questions or need help, feel free to reach out to us on [Discord](https://discord.gg/invite/cdp) +or open a [Github issue](https://github.com/coinbase/onchainkit/issues) or DM us +on X at [@onchainkit](https://x.com/onchainkit), [@zizzamia](https://x.com/zizzamia), [@fkpxls](https://x.com/fkpxls). diff --git a/docs/pages/builderkits/onchainkit/guides/contribution.mdx b/_pages/builderkits/onchainkit/guides/contribution.mdx similarity index 100% rename from docs/pages/builderkits/onchainkit/guides/contribution.mdx rename to _pages/builderkits/onchainkit/guides/contribution.mdx diff --git a/docs/pages/builderkits/onchainkit/guides/lifecycle-status.mdx b/_pages/builderkits/onchainkit/guides/lifecycle-status.mdx similarity index 100% rename from docs/pages/builderkits/onchainkit/guides/lifecycle-status.mdx rename to _pages/builderkits/onchainkit/guides/lifecycle-status.mdx diff --git a/docs/pages/builderkits/onchainkit/guides/reporting-bug.mdx b/_pages/builderkits/onchainkit/guides/reporting-bug.mdx similarity index 61% rename from docs/pages/builderkits/onchainkit/guides/reporting-bug.mdx rename to _pages/builderkits/onchainkit/guides/reporting-bug.mdx index ccf9d06e..25c7ddc0 100644 --- a/docs/pages/builderkits/onchainkit/guides/reporting-bug.mdx +++ b/_pages/builderkits/onchainkit/guides/reporting-bug.mdx @@ -7,17 +7,17 @@ description: Help us make OnchainKit better We look at all of your bug reports and will do our best to fix them as quickly as possible. -::::steps - -### Create a new issue -Navigate to [Issues tab](https://github.com/coinbase/onchainkit/issues) on Github and click the "New issue" button. - -### Select "Bug Report" -Pick the "Bug Report" option and fill out the form to the best of your ability. - -### We'll be in touch -We'll do our best to respond to your issue on Github as soon as possible. -:::: + + + Navigate to [Issues tab](https://github.com/coinbase/onchainkit/issues) on Github and click the "New issue" button. + + + Pick the "Bug Report" option and fill out the form to the best of your ability. + + + We'll do our best to respond to your issue on Github as soon as possible. + + ### Have a special request? You can tag us on [Discord](https://discord.com/channels/1220414409550336183/1253768005863739565) or DM us on [X](https://x.com/Onchainkit). diff --git a/_pages/builderkits/onchainkit/guides/tailwind.mdx b/_pages/builderkits/onchainkit/guides/tailwind.mdx new file mode 100644 index 00000000..37c5cc7e --- /dev/null +++ b/_pages/builderkits/onchainkit/guides/tailwind.mdx @@ -0,0 +1,100 @@ +--- +title: Tailwind CSS Integration Guide · OnchainKit +description: Learn how to integrate Tailwind CSS with OnchainKit +--- + +# Tailwind CSS Integration Guide + +OnchainKit comes with first class support for `tailwindcss`. + + + + You can use the default styles without any customization. + Just place this at the top of your application's entry point to have the components work out of the box. + + ```javascript + import '@coinbase/onchainkit/styles.css'; + ``` + + + Depending on your dark mode setup, you may have to add `safelist: ['dark']` to your Tailwind config. + + ```javascript filename="tailwind.config.js" + /** @type {import('tailwindcss').Config} */ + export default { + content: ['./src/**/*.{ts,tsx}'], + darkMode: ['class'], // [!code focus] + safelist: ['dark'], // [!code focus] + theme: { + fontFamily: { + sans: ['Inter', 'sans-serif'], + }, + }, + plugins: [], + }; + ``` + + + There are many ways to handle color mode. + + In OnchainKit, toggling color mode works by adding / removing class name `dark` to the root html tag. + + + To override default colorscheme, you need to modify the following css variables: + + ```css + @tailwind base; + + @layer base { + :root { + --ock-font-family: 'your-custom-value'; + --ock-border-radius: 'your-custom-value'; + --ock-border-radius-inner: 'your-custom-value'; + --ock-text-inverse: 'your-custom-value'; + --ock-text-foreground: 'your-custom-value'; + --ock-text-foreground-muted: 'your-custom-value'; + --ock-text-error: 'your-custom-value'; + --ock-text-primary: 'your-custom-value'; + --ock-text-success: 'your-custom-value'; + --ock-text-warning: 'your-custom-value'; + --ock-text-disabled: 'your-custom-value'; + + --ock-bg-default: 'your-custom-value'; + --ock-bg-default-hover: 'your-custom-value'; + --ock-bg-default-active: 'your-custom-value'; + --ock-bg-alternate: 'your-custom-value'; + --ock-bg-alternate-hover: 'your-custom-value'; + --ock-bg-alternate-active: 'your-custom-value'; + --ock-bg-inverse: 'your-custom-value'; + --ock-bg-inverse-hover: 'your-custom-value'; + --ock-bg-inverse-active: 'your-custom-value'; + --ock-bg-primary: 'your-custom-value'; + --ock-bg-primary-hover: 'your-custom-value'; + --ock-bg-primary-active: 'your-custom-value'; + --ock-bg-primary-washed: 'your-custom-value'; + --ock-bg-primary-disabled: 'your-custom-value'; + --ock-bg-secondary: 'your-custom-value'; + --ock-bg-secondary-hover: 'your-custom-value'; + --ock-bg-secondary-active: 'your-custom-value'; + --ock-bg-error: 'your-custom-value'; + --ock-bg-warning: 'your-custom-value'; + --ock-bg-success: 'your-custom-value'; + --ock-bg-default-reverse: 'your-custom-value'; + + --ock-icon-color-primary: 'your-custom-value'; + --ock-icon-color-foreground: 'your-custom-value'; + --ock-icon-color-foreground-muted: 'your-custom-value'; + --ock-icon-color-inverse: 'your-custom-value'; + --ock-icon-color-error: 'your-custom-value'; + --ock-icon-color-success: 'your-custom-value'; + --ock-icon-color-warning: 'your-custom-value'; + + --ock-line-primary: 'your-custom-value'; + --ock-line-default: 'your-custom-value'; + --ock-line-heavy: 'your-custom-value'; + --ock-line-inverse: 'your-custom-value'; + } + } + ``` + + diff --git a/docs/pages/builderkits/onchainkit/guides/telemetry.mdx b/_pages/builderkits/onchainkit/guides/telemetry.mdx similarity index 100% rename from docs/pages/builderkits/onchainkit/guides/telemetry.mdx rename to _pages/builderkits/onchainkit/guides/telemetry.mdx diff --git a/docs/pages/builderkits/onchainkit/guides/themes.mdx b/_pages/builderkits/onchainkit/guides/themes.mdx similarity index 100% rename from docs/pages/builderkits/onchainkit/guides/themes.mdx rename to _pages/builderkits/onchainkit/guides/themes.mdx diff --git a/docs/pages/builderkits/onchainkit/guides/troubleshooting.mdx b/_pages/builderkits/onchainkit/guides/troubleshooting.mdx similarity index 99% rename from docs/pages/builderkits/onchainkit/guides/troubleshooting.mdx rename to _pages/builderkits/onchainkit/guides/troubleshooting.mdx index 29a48c57..3b45fe27 100644 --- a/docs/pages/builderkits/onchainkit/guides/troubleshooting.mdx +++ b/_pages/builderkits/onchainkit/guides/troubleshooting.mdx @@ -1,4 +1,7 @@ -# Troubleshooting +--- +title: "Troubleshooting" +--- + This guide covers common issues you may encounter while using OnchainKit. If you don't find your issue here, try searching our [GitHub Issues](https://github.com/coinbase/onchainkit/issues) or joining our [Discord Community](https://discord.gg/invite/cdp). diff --git a/docs/pages/builderkits/onchainkit/guides/use-basename-in-onchain-app.mdx b/_pages/builderkits/onchainkit/guides/use-basename-in-onchain-app.mdx similarity index 95% rename from docs/pages/builderkits/onchainkit/guides/use-basename-in-onchain-app.mdx rename to _pages/builderkits/onchainkit/guides/use-basename-in-onchain-app.mdx index 22b6d174..833afc8b 100644 --- a/docs/pages/builderkits/onchainkit/guides/use-basename-in-onchain-app.mdx +++ b/_pages/builderkits/onchainkit/guides/use-basename-in-onchain-app.mdx @@ -14,17 +14,15 @@ They operate entirely onchain, utilizing the same technology as ENS names, and a You can integrate [Basenames](https://www.base.org/names) into your app with these few steps. -::::steps + + + Follow the [Getting Started](/builderkits/onchainkit/getting-started) guide to install the package. + + + Update to the latest version and choose from the following steps: a React component approach, a React hook, or a pure TypeScript utility function. + + -### New to OnchainKit? - -Follow the [Getting Started](/builderkits/onchainkit/getting-started) guide to install the package. - -### Already using OnchainKit? - -Update to the latest version and choose from the following steps: a React component approach, a React hook, or a pure TypeScript utility function. - -:::: ## React components with `` and `` @@ -55,8 +53,7 @@ Use the [`useAvatar`](/builderkits/onchainkit/identity/use-avatar) and [`useName The hooks are incredibly useful for building custom components while leveraging OnchainKit for efficient data fetching. -:::code-group - + ```tsx twoslash [code] import { useAvatar, useName } from '@coinbase/onchainkit/identity'; import { base } from 'viem/chains'; @@ -71,8 +68,7 @@ const { data: name, isLoading: nameIsLoading } = await useName({ address, chain: { data: 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzAwMCIgaGVpZ2h0PSIzMDAwIiB2aWV3Qm94PSIwIDAgMzAwMCAzMDAwIiBmaWxsPSJub25lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxnIGNsaXAtcGF0aD0idXJsKCNjbGlwMF81NTY5XzcyODM1KSI+PHJlY3Qgd2lkdGg9IjMwMDAiIGhlaWdodD0iMzAwMCIgZmlsbD0iIzE1NURGRCIvPjxjaXJjbGUgY3g9IjE1MDAiIGN5PSIxNTAwIiByPSIxNTAwIiBmaWxsPSIjMTU1REZEIi8+PHBhdGggZD0iTTI3MTMuMTMgMTUwMEMyNzMxLjIgMTY4MC45MiAyNjE1LjEzIDE4MTguMTUgMjUwNy43OCAxOTI0LjQyQzIzOTQuNyAyMDMyLjEzIDIyOTAuNDQgMjEwOC44OCAyMjAwLjg4IDIyMDAuNjFDMjEwOS4xNSAyMjkwLjE2IDIwMzIuMjIgMjM5NC42MSAxOTI0LjUxIDI1MDcuNjhDMTgxOC4xNSAyNjE1LjA0IDE2ODAuOTIgMjczMS4xMSAxNTAwIDI3MTMuMTNDMTMxOS4wOCAyNzMxLjIgMTE4MS44NSAyNjE1LjEzIDEwNzUuNTggMjUwNy43OEM5NjcuODY2IDIzOTQuNyA4OTEuMTIgMjI5MC40NCA3OTkuMzg5IDIyMDAuODhDNzA5LjgzNyAyMTA5LjE1IDYwNS4zOSAyMDMyLjIyIDQ5Mi4zMTUgMTkyNC41MUMzODQuOTYyIDE4MTguMTUgMjY4Ljg5IDE2ODAuOTIgMjg2Ljg3MyAxNTAwQzI2OC43OTkgMTMxOS4wOCAzODQuODcxIDExODEuODUgNDkyLjIyNCAxMDc1LjU4QzYwNS4yOTkgOTY3Ljg2NiA3MDkuNTY0IDg5MS4xMiA3OTkuMTE2IDc5OS4zODlDODkwLjg0OCA3MDkuODM3IDk2Ny43NzUgNjA1LjM5IDEwNzUuNDkgNDkyLjMxNUMxMTgxLjg1IDM4NC44NzEgMTMxOS4wOCAyNjguNzk5IDE1MDAgMjg2Ljg3M0MxNjgwLjkyIDI2OC43OTkgMTgxOC4xNSAzODQuODcxIDE5MjQuNDIgNDkyLjIyNEMyMDMyLjEzIDYwNS4yOTkgMjEwOC44OCA3MDkuNTY0IDIyMDAuNjEgNzk5LjExNkMyMjkwLjE2IDg5MC44NDggMjM5NC42MSA5NjcuNzc1IDI1MDcuNjggMTA3NS40OUMyNjE1LjA0IDExODEuODUgMjczMS4xMSAxMzE5LjA4IDI3MTMuMTMgMTUwMFoiIGZpbGw9IndoaXRlIi8+PHBhdGggZD0iTTEzOTEuMDYgMTUwMEMxMzkxLjA2IDE2NDcuODkgMTM1OC40IDE3ODEuNjIgMTMwNS43NCAxODc4LjI4QzEyNTMuMDMgMTk3NS4wNSAxMTgwLjY5IDIwMzQgMTEwMS41MyAyMDM0QzEwMjIuMzYgMjAzNCA5NTAuMDMxIDE5NzUuMDUgODk3LjMxNCAxODc4LjI4Qzg0NC42NiAxNzgxLjYyIDgxMiAxNjQ3Ljg5IDgxMiAxNTAwQzgxMiAxMzUyLjExIDg0NC42NiAxMjE4LjM4IDg5Ny4zMTQgMTEyMS43MkM5NTAuMDMxIDEwMjQuOTUgMTAyMi4zNiA5NjYgMTEwMS41MyA5NjZDMTE4MC42OSA5NjYgMTI1My4wMyAxMDI0Ljk1IDEzMDUuNzQgMTEyMS43MkMxMzU4LjQgMTIxOC4zOCAxMzkxLjA2IDEzNTIuMTEgMTM5MS4wNiAxNTAwWiIgZmlsbD0iIzE1NURGRCIgc3Ryb2tlPSJ3aGl0ZSIgc3Ryb2tlLXdpZHRoPSI2Ii8+PGVsbGlwc2UgY3g9IjExMDIuNTciIGN5PSIxMTk0LjkzIiByeD0iMTI2LjQxNCIgcnk9IjIzMS45MzQiIGZpbGw9IndoaXRlIi8+PHBhdGggZD0iTTIxODcuMTYgMTUwMEMyMTg3LjE2IDE2NDcuODkgMjE1NC41IDE3ODEuNjIgMjEwMS44NCAxODc4LjI4QzIwNDkuMTIgMTk3NS4wNSAxOTc2Ljc5IDIwMzQgMTg5Ny42MyAyMDM0QzE4MTguNDYgMjAzNCAxNzQ2LjEzIDE5NzUuMDUgMTY5My40MSAxODc4LjI4QzE2NDAuNzYgMTc4MS42MiAxNjA4LjEgMTY0Ny44OSAxNjA4LjEgMTUwMEMxNjA4LjEgMTM1Mi4xMSAxNjQwLjc2IDEyMTguMzggMTY5My40MSAxMTIxLjcyQzE3NDYuMTMgMTAyNC45NSAxODE4LjQ2IDk2NiAxODk3LjYzIDk2NkMxOTc2Ljc5IDk2NiAyMDQ5LjEyIDEwMjQuOTUgMjEwMS44NCAxMTIxLjcyQzIxNTQuNSAxMjE4LjM4IDIxODcuMTYgMTM1Mi4xMSAyMTg3LjE2IDE1MDBaIiBmaWxsPSIjMTU1REZEIiBzdHJva2U9IndoaXRlIiBzdHJva2Utd2lkdGg9IjYiLz48ZWxsaXBzZSBjeD0iMTg5Ni41OCIgY3k9IjExOTQuOTMiIHJ4PSIxMjYuNDE0IiByeT0iMjMxLjkzNCIgZmlsbD0id2hpdGUiLz48L2c+PGRlZnM+PGNsaXBQYXRoIGlkPSJjbGlwMF81NTY5XzcyODM1Ij48cmVjdCB3aWR0aD0iMzAwMCIgaGVpZ2h0PSIzMDAwIiBmaWxsPSJ3aGl0ZSIvPjwvY2xpcFBhdGg+PC9kZWZzPjwvc3ZnPg==', isLoading: false } { data: 'zizzamia.base.eth', isLoading: false } ``` - -::: + ## Typescript utility with `getAvatar` and `getName` @@ -80,8 +76,7 @@ Use the [`getAvatar`](/builderkits/onchainkit/identity/get-avatar) and [`getName Being pure functions, it seamlessly integrates into any TypeScript project, including Vue, Angular, Svelte, or Node.js. -:::code-group - + ```tsx twoslash [code] import { getAvatar, getName } from '@coinbase/onchainkit/identity'; import { base } from 'viem/chains'; @@ -96,5 +91,5 @@ const name = await getName({ address, chain: base }); data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzAwMCIgaGVpZ2h0PSIzMDAwIiB2aWV3Qm94PSIwIDAgMzAwMCAzMDAwIiBmaWxsPSJub25lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxnIGNsaXAtcGF0aD0idXJsKCNjbGlwMF81NTY5XzcyODM1KSI+PHJlY3Qgd2lkdGg9IjMwMDAiIGhlaWdodD0iMzAwMCIgZmlsbD0iIzE1NURGRCIvPjxjaXJjbGUgY3g9IjE1MDAiIGN5PSIxNTAwIiByPSIxNTAwIiBmaWxsPSIjMTU1REZEIi8+PHBhdGggZD0iTTI3MTMuMTMgMTUwMEMyNzMxLjIgMTY4MC45MiAyNjE1LjEzIDE4MTguMTUgMjUwNy43OCAxOTI0LjQyQzIzOTQuNyAyMDMyLjEzIDIyOTAuNDQgMjEwOC44OCAyMjAwLjg4IDIyMDAuNjFDMjEwOS4xNSAyMjkwLjE2IDIwMzIuMjIgMjM5NC42MSAxOTI0LjUxIDI1MDcuNjhDMTgxOC4xNSAyNjE1LjA0IDE2ODAuOTIgMjczMS4xMSAxNTAwIDI3MTMuMTNDMTMxOS4wOCAyNzMxLjIgMTE4MS44NSAyNjE1LjEzIDEwNzUuNTggMjUwNy43OEM5NjcuODY2IDIzOTQuNyA4OTEuMTIgMjI5MC40NCA3OTkuMzg5IDIyMDAuODhDNzA5LjgzNyAyMTA5LjE1IDYwNS4zOSAyMDMyLjIyIDQ5Mi4zMTUgMTkyNC41MUMzODQuOTYyIDE4MTguMTUgMjY4Ljg5IDE2ODAuOTIgMjg2Ljg3MyAxNTAwQzI2OC43OTkgMTMxOS4wOCAzODQuODcxIDExODEuODUgNDkyLjIyNCAxMDc1LjU4QzYwNS4yOTkgOTY3Ljg2NiA3MDkuNTY0IDg5MS4xMiA3OTkuMTE2IDc5OS4zODlDODkwLjg0OCA3MDkuODM3IDk2Ny43NzUgNjA1LjM5IDEwNzUuNDkgNDkyLjMxNUMxMTgxLjg1IDM4NC44NzEgMTMxOS4wOCAyNjguNzk5IDE1MDAgMjg2Ljg3M0MxNjgwLjkyIDI2OC43OTkgMTgxOC4xNSAzODQuODcxIDE5MjQuNDIgNDkyLjIyNEMyMDMyLjEzIDYwNS4yOTkgMjEwOC44OCA3MDkuNTY0IDIyMDAuNjEgNzk5LjExNkMyMjkwLjE2IDg5MC44NDggMjM5NC42MSA5NjcuNzc1IDI1MDcuNjggMTA3NS40OUMyNjE1LjA0IDExODEuODUgMjczMS4xMSAxMzE5LjA4IDI3MTMuMTMgMTUwMFoiIGZpbGw9IndoaXRlIi8+PHBhdGggZD0iTTEzOTEuMDYgMTUwMEMxMzkxLjA2IDE2NDcuODkgMTM1OC40IDE3ODEuNjIgMTMwNS43NCAxODc4LjI4QzEyNTMuMDMgMTk3NS4wNSAxMTgwLjY5IDIwMzQgMTEwMS41MyAyMDM0QzEwMjIuMzYgMjAzNCA5NTAuMDMxIDE5NzUuMDUgODk3LjMxNCAxODc4LjI4Qzg0NC42NiAxNzgxLjYyIDgxMiAxNjQ3Ljg5IDgxMiAxNTAwQzgxMiAxMzUyLjExIDg0NC42NiAxMjE4LjM4IDg5Ny4zMTQgMTEyMS43MkM5NTAuMDMxIDEwMjQuOTUgMTAyMi4zNiA5NjYgMTEwMS41MyA5NjZDMTE4MC42OSA5NjYgMTI1My4wMyAxMDI0Ljk1IDEzMDUuNzQgMTEyMS43MkMxMzU4LjQgMTIxOC4zOCAxMzkxLjA2IDEzNTIuMTEgMTM5MS4wNiAxNTAwWiIgZmlsbD0iIzE1NURGRCIgc3Ryb2tlPSJ3aGl0ZSIgc3Ryb2tlLXdpZHRoPSI2Ii8+PGVsbGlwc2UgY3g9IjExMDIuNTciIGN5PSIxMTk0LjkzIiByeD0iMTI2LjQxNCIgcnk9IjIzMS45MzQiIGZpbGw9IndoaXRlIi8+PHBhdGggZD0iTTIxODcuMTYgMTUwMEMyMTg3LjE2IDE2NDcuODkgMjE1NC41IDE3ODEuNjIgMjEwMS44NCAxODc4LjI4QzIwNDkuMTIgMTk3NS4wNSAxOTc2Ljc5IDIwMzQgMTg5Ny42MyAyMDM0QzE4MTguNDYgMjAzNCAxNzQ2LjEzIDE5NzUuMDUgMTY5My40MSAxODc4LjI4QzE2NDAuNzYgMTc4MS42MiAxNjA4LjEgMTY0Ny44OSAxNjA4LjEgMTUwMEMxNjA4LjEgMTM1Mi4xMSAxNjQwLjc2IDEyMTguMzggMTY5My40MSAxMTIxLjcyQzE3NDYuMTMgMTAyNC45NSAxODE4LjQ2IDk2NiAxODk3LjYzIDk2NkMxOTc2Ljc5IDk2NiAyMDQ5LjEyIDEwMjQuOTUgMjEwMS44NCAxMTIxLjcyQzIxNTQuNSAxMjE4LjM4IDIxODcuMTYgMTM1Mi4xMSAyMTg3LjE2IDE1MDBaIiBmaWxsPSIjMTU1REZEIiBzdHJva2U9IndoaXRlIiBzdHJva2Utd2lkdGg9IjYiLz48ZWxsaXBzZSBjeD0iMTg5Ni41OCIgY3k9IjExOTQuOTMiIHJ4PSIxMjYuNDE0IiByeT0iMjMxLjkzNCIgZmlsbD0id2hpdGUiLz48L2c+PGRlZnM+PGNsaXBQYXRoIGlkPSJjbGlwMF81NTY5XzcyODM1Ij48cmVjdCB3aWR0aD0iMzAwMCIgaGVpZ2h0PSIzMDAwIiBmaWxsPSJ3aGl0ZSIvPjwvY2xpcFBhdGg+PC9kZWZzPjwvc3ZnPg== zizzamia.base.eth; ``` + -::: diff --git a/docs/pages/builderkits/onchainkit/guides/using-ai-powered-ides.mdx b/_pages/builderkits/onchainkit/guides/using-ai-powered-ides.mdx similarity index 100% rename from docs/pages/builderkits/onchainkit/guides/using-ai-powered-ides.mdx rename to _pages/builderkits/onchainkit/guides/using-ai-powered-ides.mdx diff --git a/docs/pages/builderkits/onchainkit/hooks/use-build-deposit-to-morpho-tx.mdx b/_pages/builderkits/onchainkit/hooks/use-build-deposit-to-morpho-tx.mdx similarity index 94% rename from docs/pages/builderkits/onchainkit/hooks/use-build-deposit-to-morpho-tx.mdx rename to _pages/builderkits/onchainkit/hooks/use-build-deposit-to-morpho-tx.mdx index 3cb832b0..f3726718 100644 --- a/docs/pages/builderkits/onchainkit/hooks/use-build-deposit-to-morpho-tx.mdx +++ b/_pages/builderkits/onchainkit/hooks/use-build-deposit-to-morpho-tx.mdx @@ -1,4 +1,7 @@ -# `useBuildDepositToMorphoTx` +--- +title: "`useBuildDepositToMorphoTx`" +--- + The `useBuildDepositToMorphoTx` hook is used to build a deposit transaction to Morpho from within a React component. diff --git a/docs/pages/builderkits/onchainkit/hooks/use-build-withdraw-from-morpho-tx.mdx b/_pages/builderkits/onchainkit/hooks/use-build-withdraw-from-morpho-tx.mdx similarity index 94% rename from docs/pages/builderkits/onchainkit/hooks/use-build-withdraw-from-morpho-tx.mdx rename to _pages/builderkits/onchainkit/hooks/use-build-withdraw-from-morpho-tx.mdx index c72dec4c..42a9b9f5 100644 --- a/docs/pages/builderkits/onchainkit/hooks/use-build-withdraw-from-morpho-tx.mdx +++ b/_pages/builderkits/onchainkit/hooks/use-build-withdraw-from-morpho-tx.mdx @@ -1,4 +1,7 @@ -# `useBuildWithdrawFromMorphoTx` +--- +title: "`useBuildWithdrawFromMorphoTx`" +--- + The `useBuildWithdrawFromMorphoTx` hook is used to build a withdraw transaction from Morpho from within a React component. diff --git a/docs/pages/builderkits/onchainkit/hooks/use-earn-context.mdx b/_pages/builderkits/onchainkit/hooks/use-earn-context.mdx similarity index 95% rename from docs/pages/builderkits/onchainkit/hooks/use-earn-context.mdx rename to _pages/builderkits/onchainkit/hooks/use-earn-context.mdx index a9a313e3..af1aa8f1 100644 --- a/docs/pages/builderkits/onchainkit/hooks/use-earn-context.mdx +++ b/_pages/builderkits/onchainkit/hooks/use-earn-context.mdx @@ -1,4 +1,7 @@ -# `useEarnContext` +--- +title: "`useEarnContext`" +--- + The `useEarnContext` hook is used to access the context values of the `Earn` component. diff --git a/docs/pages/builderkits/onchainkit/hooks/use-mint-details.mdx b/_pages/builderkits/onchainkit/hooks/use-mint-details.mdx similarity index 97% rename from docs/pages/builderkits/onchainkit/hooks/use-mint-details.mdx rename to _pages/builderkits/onchainkit/hooks/use-mint-details.mdx index e6cb906e..579a97bc 100644 --- a/docs/pages/builderkits/onchainkit/hooks/use-mint-details.mdx +++ b/_pages/builderkits/onchainkit/hooks/use-mint-details.mdx @@ -1,4 +1,7 @@ -# `useMintDetails` +--- +title: "`useMintDetails`" +--- + The `useMintDetails` hook implements the `getMintDetails` API, returning the data required to view an NFT to be minted. @@ -8,8 +11,7 @@ Before using them, make sure to obtain a [Client API Key](https://portal.cdp.coi ## Usage -:::code-group - + ```tsx twoslash [code] import { useMintDetails } from '@coinbase/onchainkit/nft'; @@ -72,8 +74,7 @@ const queryClient = new QueryClient(); } } ``` - -::: + ## Returns diff --git a/docs/pages/builderkits/onchainkit/hooks/use-morpho-vault.mdx b/_pages/builderkits/onchainkit/hooks/use-morpho-vault.mdx similarity index 94% rename from docs/pages/builderkits/onchainkit/hooks/use-morpho-vault.mdx rename to _pages/builderkits/onchainkit/hooks/use-morpho-vault.mdx index c215cab3..8ef23b06 100644 --- a/docs/pages/builderkits/onchainkit/hooks/use-morpho-vault.mdx +++ b/_pages/builderkits/onchainkit/hooks/use-morpho-vault.mdx @@ -1,4 +1,7 @@ -# `useMorphoVault` +--- +title: "`useMorphoVault`" +--- + The `useMorphoVault` hook fetches and returns comprehensive data about a Morpho vault, including APYs, balances, and rewards. diff --git a/docs/pages/builderkits/onchainkit/hooks/use-token-details.mdx b/_pages/builderkits/onchainkit/hooks/use-token-details.mdx similarity index 97% rename from docs/pages/builderkits/onchainkit/hooks/use-token-details.mdx rename to _pages/builderkits/onchainkit/hooks/use-token-details.mdx index 0ecbdd3f..67a0a27b 100644 --- a/docs/pages/builderkits/onchainkit/hooks/use-token-details.mdx +++ b/_pages/builderkits/onchainkit/hooks/use-token-details.mdx @@ -1,4 +1,7 @@ -# `useTokenDetails` +--- +title: "`useTokenDetails`" +--- + The `useTokenDetails` hook implements the `getTokenDetails` API, returning the data required to view an NFT. @@ -8,8 +11,7 @@ Before using them, make sure to obtain a [Client API Key](https://portal.cdp.coi ## Usage -:::code-group - + ```tsx twoslash [code] import { useTokenDetails } from '@coinbase/onchainkit/nft'; @@ -62,8 +64,7 @@ const queryClient = new QueryClient(); } } ``` - -::: + ## Returns diff --git a/docs/pages/builderkits/onchainkit/identity/address.mdx b/_pages/builderkits/onchainkit/identity/address.mdx similarity index 97% rename from docs/pages/builderkits/onchainkit/identity/address.mdx rename to _pages/builderkits/onchainkit/identity/address.mdx index 6492708b..2c8b2464 100644 --- a/docs/pages/builderkits/onchainkit/identity/address.mdx +++ b/_pages/builderkits/onchainkit/identity/address.mdx @@ -1,8 +1,11 @@ +--- +title: "`
`" +--- + import { Address } from '@coinbase/onchainkit/identity'; import { color } from '@coinbase/onchainkit/theme'; import App from '@/components/App'; -# `
` The `Address` component is used to render a shortened user account address. diff --git a/docs/pages/builderkits/onchainkit/identity/avatar.mdx b/_pages/builderkits/onchainkit/identity/avatar.mdx similarity index 99% rename from docs/pages/builderkits/onchainkit/identity/avatar.mdx rename to _pages/builderkits/onchainkit/identity/avatar.mdx index d819d079..11321850 100644 --- a/docs/pages/builderkits/onchainkit/identity/avatar.mdx +++ b/_pages/builderkits/onchainkit/identity/avatar.mdx @@ -1,8 +1,11 @@ +--- +title: "``" +--- + import { Avatar, Badge, Identity } from '@coinbase/onchainkit/identity'; import App from '@/components/App'; import { base } from 'viem/chains'; -# `` The `Avatar` component is used to display ENS or [Basenames](https://www.base.org/names) avatar associated with Ethereum addresses. When an avatar is not available, it defaults to blue color avatar. diff --git a/docs/pages/builderkits/onchainkit/identity/badge.mdx b/_pages/builderkits/onchainkit/identity/badge.mdx similarity index 98% rename from docs/pages/builderkits/onchainkit/identity/badge.mdx rename to _pages/builderkits/onchainkit/identity/badge.mdx index 5692ae65..ac08e90e 100644 --- a/docs/pages/builderkits/onchainkit/identity/badge.mdx +++ b/_pages/builderkits/onchainkit/identity/badge.mdx @@ -1,8 +1,11 @@ +--- +title: "``" +--- + import { base } from 'viem/chains'; import { Avatar, Badge, Name, Identity } from '@coinbase/onchainkit/identity'; import App from '@/components/App'; -# `` Use `Badge` component along with [`Avatar`](/builderkits/onchainkit/identity/avatar) or [`Name`](/builderkits/onchainkit/identity/name) components to display user attestations attached to their account @@ -10,8 +13,7 @@ Use `Badge` component along with [`Avatar`](/builderkits/onchainkit/identity/ava Badge with default colors: -:::code-group - + ```tsx twoslash [tsx] import { Badge } from '@coinbase/onchainkit/identity'; // [!code focus] @@ -25,8 +27,7 @@ import { Badge } from '@coinbase/onchainkit/identity'; } } ``` - -::: + diff --git a/docs/pages/builderkits/onchainkit/identity/get-address.mdx b/_pages/builderkits/onchainkit/identity/get-address.mdx similarity index 92% rename from docs/pages/builderkits/onchainkit/identity/get-address.mdx rename to _pages/builderkits/onchainkit/identity/get-address.mdx index 92cb247c..bafc771b 100644 --- a/docs/pages/builderkits/onchainkit/identity/get-address.mdx +++ b/_pages/builderkits/onchainkit/identity/get-address.mdx @@ -1,4 +1,7 @@ -# `getAddress` +--- +title: "`getAddress`" +--- + The `getAddress` utility is designed to retrieve an address from an onchain identity provider for a given name. @@ -6,7 +9,7 @@ The `getAddress` utility is designed to retrieve an address from an onchain iden Get ENS Name from mainnet chain -:::code-group + ```tsx twoslash [code] import { getAddress } from '@coinbase/onchainkit/identity'; @@ -16,13 +19,11 @@ const address = await getAddress({ name: 'zizzamia.eth' }); ```ts [return value] 0x02feeb0AdE57b6adEEdE5A4EEea6Cf8c21BeB6B1 ``` - -::: + Get Basename from base chain -:::code-group - + ```tsx twoslash [code] import { getAddress } from '@coinbase/onchainkit/identity'; import { base } from 'viem/chains'; @@ -33,8 +34,7 @@ const address = await getAddress({ name: 'zizzamia.base.eth', chain: base }); ```ts [return value] 0x02feeb0AdE57b6adEEdE5A4EEea6Cf8c21BeB6B1 ``` - -::: + ## Returns diff --git a/docs/pages/builderkits/onchainkit/identity/get-attestations.mdx b/_pages/builderkits/onchainkit/identity/get-attestations.mdx similarity index 97% rename from docs/pages/builderkits/onchainkit/identity/get-attestations.mdx rename to _pages/builderkits/onchainkit/identity/get-attestations.mdx index 26a72150..33b43b11 100644 --- a/docs/pages/builderkits/onchainkit/identity/get-attestations.mdx +++ b/_pages/builderkits/onchainkit/identity/get-attestations.mdx @@ -1,4 +1,7 @@ -# `getAttestations` +--- +title: "`getAttestations`" +--- + The `getAttestations` function fetches attestations for a specified address and blockchain in Ethereum Attestation Service (EAS). It allows optional filtering @@ -8,8 +11,7 @@ In the example, we use the Coinbase [Verified Account](https://base.easscan.org/ ## Usage -:::code-group - + ```tsx twoslash [code] // @noErrors: 2345 - Argument of type string is not assignable to 0x{string} import { getAttestations } from '@coinbase/onchainkit/identity'; @@ -44,8 +46,7 @@ const attestations = [ }, ]; ``` - -::: + ## Returns diff --git a/docs/pages/builderkits/onchainkit/identity/get-avatar.mdx b/_pages/builderkits/onchainkit/identity/get-avatar.mdx similarity index 93% rename from docs/pages/builderkits/onchainkit/identity/get-avatar.mdx rename to _pages/builderkits/onchainkit/identity/get-avatar.mdx index 1087f287..e6c7dc34 100644 --- a/docs/pages/builderkits/onchainkit/identity/get-avatar.mdx +++ b/_pages/builderkits/onchainkit/identity/get-avatar.mdx @@ -1,4 +1,7 @@ -# `getAvatar` +--- +title: "`getAvatar`" +--- + The `getAvatar` utility is designed to retrieve an avatar image URL from an onchain identity provider for a given name. @@ -15,7 +18,7 @@ Supported providers: Get Basename avatar: -:::code-group + ```tsx twoslash [code] import { getAvatar } from '@coinbase/onchainkit/identity'; import { base, mainnet } from 'viem/chains'; @@ -26,13 +29,11 @@ const baseAvatar = await getAvatar({ ensName: 'paulcramer.eth', chain: base }); ```ts [return value] https://zku9gdedgba48lmr.public.blob.vercel-storage.com/basenames/avatar/paul.base.eth/1722120524815/FWUzoZmJ_400x400-kWjr2gMvjNe9hHMs9Z9LxGVGIME3By.jpg ``` - -::: + Get ENS avatar: -:::code-group - + ```tsx twoslash [code] import { getAvatar } from '@coinbase/onchainkit/identity'; import { mainnet } from 'viem/chains'; @@ -43,8 +44,7 @@ const ensAvatar = await getAvatar({ ensName: 'paulcramer.eth', chain: mainnet }) ```ts [return value] https://euc.li/paulcramer.eth; ``` - -::: + ## Returns diff --git a/docs/pages/builderkits/onchainkit/identity/get-avatars.mdx b/_pages/builderkits/onchainkit/identity/get-avatars.mdx similarity index 94% rename from docs/pages/builderkits/onchainkit/identity/get-avatars.mdx rename to _pages/builderkits/onchainkit/identity/get-avatars.mdx index 592fa87d..ced4b9a8 100644 --- a/docs/pages/builderkits/onchainkit/identity/get-avatars.mdx +++ b/_pages/builderkits/onchainkit/identity/get-avatars.mdx @@ -1,4 +1,7 @@ -# `getAvatars` +--- +title: "`getAvatars`" +--- + The `getAvatars` utility is designed to retrieve multiple avatars from an onchain identity provider for an array of ENS names or Basenames in a single batch request. @@ -10,8 +13,7 @@ use it with Next.js or any Node.js backend. Get avatars for multiple ENS names: -:::code-group - + ```tsx twoslash [code] import { getAvatars } from '@coinbase/onchainkit/identity'; @@ -25,13 +27,11 @@ const avatars = await getAvatars({ ensNames }); 'https://ipfs.io/ipfs/QmQ9RT2SrZ6TWUjrQxG4bNnhb3nDqBE5Ld1j9GYvk3kTjf' ] ``` - -::: + Get avatars for multiple Basenames: -:::code-group - + ```tsx twoslash [code] import { getAvatars } from '@coinbase/onchainkit/identity'; import { base } from 'viem/chains'; @@ -46,13 +46,11 @@ const avatars = await getAvatars({ ensNames, chain: base }); 'https://ipfs.io/ipfs/QmXHFnSXcN7CSuVcyF3vyPgPcPvLQyLpKYBaNpx3x3bPAZ' ] ``` - -::: + Get avatars for a mix of ENS names and Basenames: -:::code-group - + ```tsx twoslash [code] import { getAvatars } from '@coinbase/onchainkit/identity'; import { base } from 'viem/chains'; @@ -67,8 +65,7 @@ const avatars = await getAvatars({ ensNames, chain: base }); 'https://ipfs.io/ipfs/QmQ9RT2SrZ6TWUjrQxG4bNnhb3nDqBE5Ld1j9GYvk3kTjf' ] ``` - -::: + ## Returns diff --git a/docs/pages/builderkits/onchainkit/identity/get-name.mdx b/_pages/builderkits/onchainkit/identity/get-name.mdx similarity index 93% rename from docs/pages/builderkits/onchainkit/identity/get-name.mdx rename to _pages/builderkits/onchainkit/identity/get-name.mdx index 28dd1ad6..0181f75b 100644 --- a/docs/pages/builderkits/onchainkit/identity/get-name.mdx +++ b/_pages/builderkits/onchainkit/identity/get-name.mdx @@ -1,4 +1,7 @@ -# `getName` +--- +title: "`getName`" +--- + The `getName` utility is designed to retrieve a name from an onchain identity provider for a specific address. @@ -10,8 +13,7 @@ use it with Next.js or any Node.js backend. Get ENS name from an address: -:::code-group - + ```tsx twoslash [code] import { getName } from '@coinbase/onchainkit/identity'; @@ -22,13 +24,11 @@ const name = await getName({ address }); ```ts [return value] zizzamia.eth; ``` - -::: + Get Basename from an address: -:::code-group - + ```tsx twoslash [code] import { getName } from '@coinbase/onchainkit/identity'; import { base } from 'viem/chains'; @@ -40,13 +40,11 @@ const name = await getName({ address, chain: base }); ```ts [return value] zizzamia.base.eth; ``` - -::: + Get a sliced address when address does not have an ENS name: -:::code-group - + ```tsx twoslash [code] import { getName } from '@coinbase/onchainkit/identity'; @@ -57,8 +55,7 @@ const name = await getName({ address }); ```ts [return value] 0x123...5678 ``` - -::: + ## Returns diff --git a/docs/pages/builderkits/onchainkit/identity/get-names.mdx b/_pages/builderkits/onchainkit/identity/get-names.mdx similarity index 93% rename from docs/pages/builderkits/onchainkit/identity/get-names.mdx rename to _pages/builderkits/onchainkit/identity/get-names.mdx index 45abe5bb..9a93d626 100644 --- a/docs/pages/builderkits/onchainkit/identity/get-names.mdx +++ b/_pages/builderkits/onchainkit/identity/get-names.mdx @@ -1,4 +1,7 @@ -# `getNames` +--- +title: "`getNames`" +--- + The `getNames` utility is designed to retrieve multiple names from an onchain identity provider for an array of addresses in a single batch request. @@ -10,8 +13,7 @@ use it with Next.js or any Node.js backend. Get ENS names from multiple addresses: -:::code-group - + ```tsx twoslash [code] import { getNames } from '@coinbase/onchainkit/identity'; @@ -25,13 +27,11 @@ const names = await getNames({ addresses }); ```ts [return value] ['paulcramer.eth', 'vitalik.eth'] ``` - -::: + Get Basenames from multiple addresses: -:::code-group - + ```tsx twoslash [code] import { getNames } from '@coinbase/onchainkit/identity'; import { base } from 'viem/chains'; @@ -46,13 +46,11 @@ const names = await getNames({ addresses, chain: base }); ```ts [return value] ['paul.base.eth', 'coinbase.base.eth'] ``` - -::: + Get a mix of ENS names and sliced addresses when some addresses don't have names: -:::code-group - + ```tsx twoslash [code] import { getNames } from '@coinbase/onchainkit/identity'; @@ -66,8 +64,7 @@ const names = await getNames({ addresses }); ```ts [return value] ['paulcramer.eth', null] ``` - -::: + ## Returns diff --git a/docs/pages/builderkits/onchainkit/identity/identity-card.mdx b/_pages/builderkits/onchainkit/identity/identity-card.mdx similarity index 100% rename from docs/pages/builderkits/onchainkit/identity/identity-card.mdx rename to _pages/builderkits/onchainkit/identity/identity-card.mdx diff --git a/docs/pages/builderkits/onchainkit/identity/identity.mdx b/_pages/builderkits/onchainkit/identity/identity.mdx similarity index 100% rename from docs/pages/builderkits/onchainkit/identity/identity.mdx rename to _pages/builderkits/onchainkit/identity/identity.mdx diff --git a/docs/pages/builderkits/onchainkit/identity/name.mdx b/_pages/builderkits/onchainkit/identity/name.mdx similarity index 98% rename from docs/pages/builderkits/onchainkit/identity/name.mdx rename to _pages/builderkits/onchainkit/identity/name.mdx index 242c1d42..3880b12e 100644 --- a/docs/pages/builderkits/onchainkit/identity/name.mdx +++ b/_pages/builderkits/onchainkit/identity/name.mdx @@ -1,8 +1,11 @@ +--- +title: "``" +--- + import { Badge, Name, Identity } from '@coinbase/onchainkit/identity'; import App from '@/components/App'; import { base } from 'viem/chains'; -# `` The `Name` component is used to display ENS or [Basenames](https://www.base.org/names) associated with Ethereum addresses. diff --git a/docs/pages/builderkits/onchainkit/identity/socials.mdx b/_pages/builderkits/onchainkit/identity/socials.mdx similarity index 100% rename from docs/pages/builderkits/onchainkit/identity/socials.mdx rename to _pages/builderkits/onchainkit/identity/socials.mdx diff --git a/docs/pages/builderkits/onchainkit/identity/types.mdx b/_pages/builderkits/onchainkit/identity/types.mdx similarity index 100% rename from docs/pages/builderkits/onchainkit/identity/types.mdx rename to _pages/builderkits/onchainkit/identity/types.mdx diff --git a/docs/pages/builderkits/onchainkit/identity/use-address.mdx b/_pages/builderkits/onchainkit/identity/use-address.mdx similarity index 96% rename from docs/pages/builderkits/onchainkit/identity/use-address.mdx rename to _pages/builderkits/onchainkit/identity/use-address.mdx index cd5bdb52..b89f2b72 100644 --- a/docs/pages/builderkits/onchainkit/identity/use-address.mdx +++ b/_pages/builderkits/onchainkit/identity/use-address.mdx @@ -1,4 +1,7 @@ -# `useAddress` +--- +title: "`useAddress`" +--- + The `useAddress` hook is used to get an address from an onchain identity provider for a given name. diff --git a/docs/pages/builderkits/onchainkit/identity/use-avatar.mdx b/_pages/builderkits/onchainkit/identity/use-avatar.mdx similarity index 96% rename from docs/pages/builderkits/onchainkit/identity/use-avatar.mdx rename to _pages/builderkits/onchainkit/identity/use-avatar.mdx index 6e00b195..466d5f66 100644 --- a/docs/pages/builderkits/onchainkit/identity/use-avatar.mdx +++ b/_pages/builderkits/onchainkit/identity/use-avatar.mdx @@ -1,4 +1,7 @@ -# `useAvatar` +--- +title: "`useAvatar`" +--- + The `useAvatar` hook is used to get avatar image URL from an onchain identity provider for a given name. diff --git a/docs/pages/builderkits/onchainkit/identity/use-avatars.mdx b/_pages/builderkits/onchainkit/identity/use-avatars.mdx similarity index 95% rename from docs/pages/builderkits/onchainkit/identity/use-avatars.mdx rename to _pages/builderkits/onchainkit/identity/use-avatars.mdx index 6ea8f778..fd032419 100644 --- a/docs/pages/builderkits/onchainkit/identity/use-avatars.mdx +++ b/_pages/builderkits/onchainkit/identity/use-avatars.mdx @@ -1,4 +1,7 @@ -# `useAvatars` +--- +title: "`useAvatars`" +--- + The `useAvatars` hook is used to get multiple avatar image URLs from an onchain identity provider for an array of ENS names or Basenames in a single batch request. @@ -9,8 +12,7 @@ It is implemented with [useQuery](https://tanstack.com/query/latest/docs/framewo Get avatars for multiple ENS names: -:::code-group - + ```tsx twoslash [code] import { useAvatars } from '@coinbase/onchainkit/identity'; @@ -27,13 +29,11 @@ const { data: avatars, isLoading } = useAvatars({ ensNames }); isLoading: false } ``` - -::: + Get avatars for multiple Basenames: -:::code-group - + ```tsx twoslash [code] import { useAvatars } from '@coinbase/onchainkit/identity'; import { base } from 'viem/chains'; @@ -51,8 +51,7 @@ const { data: avatars, isLoading } = useAvatars({ ensNames, chain: base }); isLoading: false } ``` - -::: + ## Returns diff --git a/docs/pages/builderkits/onchainkit/identity/use-name.mdx b/_pages/builderkits/onchainkit/identity/use-name.mdx similarity index 94% rename from docs/pages/builderkits/onchainkit/identity/use-name.mdx rename to _pages/builderkits/onchainkit/identity/use-name.mdx index aaa53f60..5171cf4c 100644 --- a/docs/pages/builderkits/onchainkit/identity/use-name.mdx +++ b/_pages/builderkits/onchainkit/identity/use-name.mdx @@ -1,4 +1,7 @@ -# `useName` +--- +title: "`useName`" +--- + The `useName` hook is used to get name from an onchain identity provider for a given address. @@ -9,8 +12,7 @@ It is implemented with [useQuery](https://tanstack.com/query/latest/docs/framewo Get ENS name from an address: -:::code-group - + ```tsx twoslash [code] import { useName } from '@coinbase/onchainkit/identity'; @@ -21,13 +23,11 @@ const { data: name, isLoading } = await useName({ address }); ```ts [return value] { data: 'zizzamia.eth', isLoading: false } ``` - -::: + Get Basename from an address: -:::code-group - + ```tsx twoslash [code] import { useName } from '@coinbase/onchainkit/identity'; import { base } from 'viem/chains'; @@ -39,8 +39,7 @@ const { data: name, isLoading } = await useName({ address, chain: base }); ```ts [return value] { data: 'zizzamia.base.eth', isLoading: false } ``` - -::: + ## Returns diff --git a/docs/pages/builderkits/onchainkit/identity/use-names.mdx b/_pages/builderkits/onchainkit/identity/use-names.mdx similarity index 95% rename from docs/pages/builderkits/onchainkit/identity/use-names.mdx rename to _pages/builderkits/onchainkit/identity/use-names.mdx index 769c9095..5865ed79 100644 --- a/docs/pages/builderkits/onchainkit/identity/use-names.mdx +++ b/_pages/builderkits/onchainkit/identity/use-names.mdx @@ -1,4 +1,7 @@ -# `useNames` +--- +title: "`useNames`" +--- + The `useNames` hook is used to get multiple names from an onchain identity provider for an array of addresses in a single batch request. @@ -9,8 +12,7 @@ It is implemented with [useQuery](https://tanstack.com/query/latest/docs/framewo Get ENS names from multiple addresses: -:::code-group - + ```tsx twoslash [code] import { useNames } from '@coinbase/onchainkit/identity'; @@ -27,13 +29,11 @@ const { data: names, isLoading } = useNames({ addresses }); isLoading: false } ``` - -::: + Get Basenames from multiple addresses: -:::code-group - + ```tsx twoslash [code] import { useNames } from '@coinbase/onchainkit/identity'; import { base } from 'viem/chains'; @@ -51,8 +51,7 @@ const { data: names, isLoading } = useNames({ addresses, chain: base }); isLoading: false } ``` - -::: + ## Returns diff --git a/docs/pages/builderkits/onchainkit/installation.mdx b/_pages/builderkits/onchainkit/installation.mdx similarity index 74% rename from docs/pages/builderkits/onchainkit/installation.mdx rename to _pages/builderkits/onchainkit/installation.mdx index 78def6d4..96b450e4 100644 --- a/docs/pages/builderkits/onchainkit/installation.mdx +++ b/_pages/builderkits/onchainkit/installation.mdx @@ -3,7 +3,7 @@ title: Installation · OnchainKit description: Install OnchainKit using the top React frameworks --- -import InstallationOptions from '@/components/InstallationOptions'; +import InstallationOptions from '/snippets/installation-options.mdx'; # Installation diff --git a/_pages/builderkits/onchainkit/installation/astro.mdx b/_pages/builderkits/onchainkit/installation/astro.mdx new file mode 100644 index 00000000..c0b98b9c --- /dev/null +++ b/_pages/builderkits/onchainkit/installation/astro.mdx @@ -0,0 +1,198 @@ +--- +title: Astro Installation · OnchainKit +description: Install OnchainKit using Astro +--- + +import StartBuilding from "/snippets/start-building.mdx"; + +# Astro Installation + +Install and configure OnchainKit with Astro. +If you are integrating OnchainKit into an existing project, +skip to the [OnchainKit installation](#install-onchainkit). + + + + Create a new Astro project by using the Astro CLI. + More information about Astro can be found [here](https://docs.astro.build/en/install-and-setup/#start-a-new-project). + + + ```bash [npm] + npm create astro@latest + ``` + + ```bash [yarn] + yarn create astro + ``` + + ```bash [pnpm] + pnpm create astro@latest + ``` + + + + Astro does not come with React by default, so if you are not already using React + in your application, you will need to install it. + + ```bash [Terminal] + npx astro add react + ``` + + + Add OnchainKit to your project by installing the `@coinbase/onchainkit` package. + + + ```bash [npm] + npm install @coinbase/onchainkit + ``` + + ```bash [yarn] + yarn add @coinbase/onchainkit + ``` + + ```bash [pnpm] + pnpm add @coinbase/onchainkit + ``` + + ```bash [bun] + bun add @coinbase/onchainkit + ``` + + + + Get your [Client API Key](https://portal.cdp.coinbase.com/projects/api-keys/client-key) from Coinbase Developer Platform. + + OnchainKit copy Client API Key + + Create a `.env` file in your project's root directory. + + OnchainKit define Client API Key + + Add your Client API Key to the `.env` file: + + ```dotenv [.env] + PUBLIC_ONCHAINKIT_API_KEY=YOUR_CLIENT_API_KEY + ``` + + + Create a `providers.tsx` file. Add `OnchainKitProvider` with your desired config. + + Under the hood, OnchainKit will create our recommended Wagmi and QueryClient + providers. If you wish to customize these providers, check out [Custom + Supplemental Providers](/builderkits/onchainkit/config/supplemental-providers). + + ```tsx twoslash [providers.tsx] + // @noErrors: 2307 2580 2339 - cannot find 'process', cannot find './wagmi', cannot find 'import.meta' + 'use client'; + + import type { ReactNode } from 'react'; + import { OnchainKitProvider } from '@coinbase/onchainkit'; + import { base } from 'wagmi/chains'; // add baseSepolia for testing // [!code ++] + + export function Providers(props: { children: ReactNode }) { + return ( + + {props.children} + + ); + } + ``` + + + After configuring the providers in step 4, you will need to wrap your OnchainKit components + with the `` component. + + There are two options for this: + + 1. Create a component, eg. `` that contains all OnchainKit components. + 2. Wrap every OnchainKit component individually. + + + ```tsx [ReactIsland] + import { AppProviders } from '../AppProviders'; + + export default function ReactIsland() { + return ( + + + + ); + } + ``` + + ```tsx [OnchainKit Wrappers] + import { AppProviders } from '../AppProviders'; + import { OnchainKitComponent } from '@coinbase/onchainkit'; + + export default function OnchainKitComponentWrapper() { + return ( + + + + ); + } + ``` + + + The advantage of ReactIsland is that you will only have a single provider at any time. + The drawback is that your OnchainKit components will all need to live in the same Island. + + The advantage of individual wrappers is that you can use OnchainKit components anywhere in your app. + The drawback is that you will have multiple providers if you use more than one OnchainKit component. + + + You can add OnchainKit components to your app by using the component(s) you + created above into your `.astro` files. + + For example, if you created a ReactIsland, you can add it to your + `src/pages/index.astro` file: + + ```astro [src/pages/index.astro] + --- + import Layout from '../layouts/Layout.astro'; + import ReactIsland from '../components/ReactIsland'; + --- + + +
+ ... + + ... +
+
+ ``` + + Don't forget to add the `client:only="react"` directive to your OnchainKit component, + as this is required for Astro to render React components. +
+ + OnchainKit components come with pre-configured styles. + To include these styles in your project, add the following import + statement at the top of the `Layout.astro` file: + + ```tsx + import '@coinbase/onchainkit/styles.css'; + ``` + + This ensures that the OnchainKit styles are loaded and applied to your entire application. + + - For Tailwind CSS users, check out our [Tailwind Integration Guide](/builderkits/onchainkit/guides/tailwind). + + - Update the appearance of components by using our built-in themes or crafting your own custom theme. + Explore the possibilities in our [Theming Guide](/builderkits/onchainkit/guides/themes). + +
+ + diff --git a/_pages/builderkits/onchainkit/installation/nextjs.mdx b/_pages/builderkits/onchainkit/installation/nextjs.mdx new file mode 100644 index 00000000..6ec71f31 --- /dev/null +++ b/_pages/builderkits/onchainkit/installation/nextjs.mdx @@ -0,0 +1,175 @@ +--- +title: Next.js Installation · OnchainKit +description: Install OnchainKit using Next.js +--- + +import StartBuilding from "/snippets/start-building.mdx"; + +# Next.js Installation + +Install and configure OnchainKit with Next.js. +If you are integrating OnchainKit into an existing project, +skip to the [OnchainKit installation](#install-onchainkit). + + + + Create a new Next.js project by using the Next.js CLI. + More information about Next.js can be found [here](https://nextjs.org/docs/getting-started/installation). + + ```bash [npm] + npx create-next-app@14 + ``` + + During the setup process you will encounter multiple prompts. + Make sure you enable TypeScript, ESLint, and Tailwind CSS. + + + Install OnchainKit in your project. + + + ```bash [npm] + npm install @coinbase/onchainkit + ``` + + ```bash [yarn] + yarn add @coinbase/onchainkit + ``` + + ```bash [pnpm] + pnpm add @coinbase/onchainkit + ``` + + ```bash [bun] + bun add @coinbase/onchainkit + ``` + + + + Get your [Client API Key](https://portal.cdp.coinbase.com/projects/api-keys/client-key) from Coinbase Developer Platform. + + OnchainKit copy Client API Key + + Create a `.env` file in your project's root directory. + + OnchainKit define Client API Key + + Add your Client API Key to the `.env` file: + + ```tsx [.env] + NEXT_PUBLIC_ONCHAINKIT_API_KEY=YOUR_CLIENT_API_KEY; + ``` + + + Create a `providers.tsx` file. Add `OnchainKitProvider` with your desired config. + + Under the hood, OnchainKit will create our recommended Wagmi and QueryClient + providers. If you wish to customize these providers, check out [Custom + Supplemental Providers](/builderkits/onchainkit/config/supplemental-providers). + + ```tsx twoslash [providers.tsx] + // @noErrors: 2307 2580 2339 - cannot find 'process', cannot find './wagmi', cannot find 'import.meta' + 'use client'; + + import type { ReactNode } from 'react'; + import { OnchainKitProvider } from '@coinbase/onchainkit'; + import { base } from 'wagmi/chains'; // add baseSepolia for testing // [!code ++] + + export function Providers(props: { children: ReactNode }) { + return ( + + {props.children} + + ); + } + ``` + + + After the setup, wrap your app with the above `` component. + + ```javascript [app.tsx] + import './globals.css'; + import { Providers } from './providers'; // [!code ++] + + export default function RootLayout({ + children, + }: Readonly<{ + children: React.ReactNode, + }>) { + return ( + + + + {children} + + + + ); + } + ``` + + + OnchainKit components come with pre-configured styles. To include these styles in your project, add the following import statement at the top of this file: + + ```javascript + import '@coinbase/onchainkit/styles.css'; + ``` + + For example, if you're using Next.js with the app router, your `app/layout.tsx` might look like this: + + ```tsx [layout.tsx] + import '@coinbase/onchainkit/styles.css'; // [!code ++] + import './globals.css'; + import type { Metadata } from 'next'; + import { Inter } from 'next/font/google'; + import { headers } from 'next/headers'; + import { type ReactNode } from 'react'; + import { cookieToInitialState } from 'wagmi'; + + import { getConfig } from '../wagmi'; + import { Providers } from './providers'; + + const inter = Inter({ subsets: ['latin'] }); + + export const metadata: Metadata = { + title: 'Create Wagmi', + description: 'Generated by create-wagmi', + }; + + export default function RootLayout(props: { children: ReactNode }) { + const initialState = cookieToInitialState( + getConfig(), + headers().get('cookie') + ); + return ( + + + {props.children} + + + ); + } + ``` + + This ensures that the OnchainKit styles are loaded and applied to your entire application. + + - For Tailwind CSS users, check out our [Tailwind Integration Guide](/builderkits/onchainkit/guides/tailwind). + + - Update the appearance of components by using our built-in themes or crafting your own custom theme. + Explore the possibilities in our [Theming Guide](/builderkits/onchainkit/guides/themes). + + + + + diff --git a/_pages/builderkits/onchainkit/installation/remix.mdx b/_pages/builderkits/onchainkit/installation/remix.mdx new file mode 100644 index 00000000..969c363a --- /dev/null +++ b/_pages/builderkits/onchainkit/installation/remix.mdx @@ -0,0 +1,196 @@ +--- +title: Remix Installation · OnchainKit +description: Install OnchainKit using Remix +--- + +import StartBuilding from "/snippets/start-building.mdx"; + +# Remix Installation + +Install and configure OnchainKit with Remix. +If you are integrating OnchainKit into an existing project, +skip to the [OnchainKit installation](#install-onchainkit). + + + + Create a new Remix project by using the Remix CLI. + More information about Remix can be found [here](https://remix.run/docs/en/main/start/quickstart). + + ```bash [Terminal] + npx create-remix@latest + ``` + + + Add OnchainKit to your project by installing the `@coinbase/onchainkit` package. + + + ```bash [npm] + npm install @coinbase/onchainkit + ``` + + ```bash [yarn] + yarn add @coinbase/onchainkit + ``` + + ```bash [pnpm] + pnpm add @coinbase/onchainkit + ``` + + ```bash [bun] + bun add @coinbase/onchainkit + ``` + + + + + Get your [Client API Key](https://portal.cdp.coinbase.com/projects/api-keys/client-key) from Coinbase Developer Platform. + + OnchainKit copy Client API Key + + Create a `.env` file in your project's root directory. + + OnchainKit define Client API Key + + Add your Client API Key to the `.env` file: + + ```dotenv [.env] + PUBLIC_ONCHAINKIT_API_KEY=YOUR_CLIENT_API_KEY + ``` + + Update the `app/root.tsx` file to provide access to your Client API Key + through `window.ENV`: + + ```tsx [app/root.tsx] + declare global { + interface Window { + ENV: { + PUBLIC_ONCHAINKIT_API_KEY: string; // [!code ++] + }; + } + } + + export async function loader() { + return json({ + ENV: { + PUBLIC_ONCHAINKIT_API_KEY: process.env.PUBLIC_ONCHAINKIT_API_KEY, // [!code ++] + }, + }); + } + ``` + + If this is the first env variable you've added to your project, you will need to + update the `Layout` component of `app/root.tsx` to make it available to your app: + + ```tsx [app/root.tsx] + export function Layout({ children }: { children: React.ReactNode }) { + const data = useLoaderData(); // [!code ++] + return ( + + + + + + + + + {children} + + \ No newline at end of file diff --git a/storybook/.storybook/preview.ts b/storybook/.storybook/preview.ts new file mode 100644 index 00000000..f5b1ca36 --- /dev/null +++ b/storybook/.storybook/preview.ts @@ -0,0 +1,103 @@ +import type { Preview } from "@storybook/react"; +import { themes } from "@storybook/theming"; + +// Extend Window interface to include our custom property +declare global { + interface Window { + __themeListenerAdded?: boolean; + } +} + +const preview: Preview = { + parameters: { + darkMode: { + // Override the default dark theme + dark: { ...themes.dark, appBg: "black" }, + // Override the default light theme + light: { ...themes.normal, appBg: "white" }, + darkClass: "dark", + lightClass: "light", + stylePreview: true, + }, + controls: { + matchers: { + color: /(background|color)$/i, + date: /Date$/i, + }, + }, + docs: { + story: { + inline: false, + iframeHeight: 400, + }, + }, + }, + // Add custom script to handle theme messages from parent window + decorators: [ + (Story) => { + // Add the message listener script only once + if (typeof window !== "undefined" && !window.__themeListenerAdded) { + window.__themeListenerAdded = true; + + const script = document.createElement("script"); + script.textContent = ` + (function() { + console.log('Storybook theme listener initialized'); + + // Listen for theme messages from parent window + window.addEventListener('message', function(event) { + console.log('Received message in Storybook iframe:', event.data); + + if (event.data && event.data.type === 'THEME_CHANGE') { + const { isDark, styles } = event.data; + console.log('Applying theme change:', { isDark, styles }); + + // Apply dark/light class to html element + if (isDark) { + document.documentElement.classList.add('dark'); + document.documentElement.classList.remove('light'); + } else { + document.documentElement.classList.add('light'); + document.documentElement.classList.remove('dark'); + } + + // Apply background styles + if (styles && styles.background) { + // Apply the background (either #0b0d0f for dark or transparent for light) + document.body.style.background = styles.background; + document.documentElement.style.background = styles.background; + } + + console.log('Theme applied successfully'); + } + }); + + // Also check if parent window has dark mode on initial load + try { + if (window.parent && window.parent !== window) { + const parentHasDark = window.parent.document.documentElement.classList.contains('dark'); + console.log('Parent has dark mode:', parentHasDark); + if (parentHasDark) { + document.documentElement.classList.add('dark'); + document.body.style.background = '#0b0d0f'; + document.documentElement.style.background = '#0b0d0f'; + } else { + document.documentElement.classList.add('light'); + document.body.style.background = 'transparent'; + document.documentElement.style.background = 'transparent'; + } + } + } catch (e) { + console.log('Cannot access parent document (expected for cross-origin)'); + } + })(); + `; + document.head.appendChild(script); + } + + return Story(); + }, + ], +}; + +export default preview; diff --git a/storybook/README.md b/storybook/README.md new file mode 100644 index 00000000..c4e5d6dd --- /dev/null +++ b/storybook/README.md @@ -0,0 +1,33 @@ +### Install Dependencies + +```bash install dependencies +npm install +``` + +```bash update dependencies +npm update +``` + +### Run Storybook + +```bash +npm run storybook +``` + +### URL format for iframes + +``` +https://-.chromatic.com/iframe.html?args=&id={path-to-story}&viewMode=story&dark=true&hero=true +``` + +examples: + +```jsx +