From 37fadf7b3af6024375404ca61fec4f480bf162d6 Mon Sep 17 00:00:00 2001 From: samina Date: Mon, 7 Jul 2025 17:16:47 -0700 Subject: [PATCH 1/3] wallets and payment rename --- .../(dashboard)/(bridge)/routes/page.tsx | 2 +- .../(chain)/components/server/products.ts | 2 +- .../app/(app)/(dashboard)/support/page.tsx | 2 +- .../[team_slug]/(team)/~/analytics/page.tsx | 2 +- .../[project_slug]/(sidebar)/page.tsx | 2 +- .../components/PayEmbedFTUX.tsx | 2 +- .../(sidebar)/universal-bridge/layout.tsx | 2 +- .../(sidebar)/universal-bridge/page.tsx | 2 +- .../universal-bridge/settings/PayConfig.tsx | 2 +- .../universal-bridge/webhooks/page.tsx | 2 +- .../webhooks/universal-bridge/page.tsx | 2 +- apps/dashboard/src/app/bridge/page.tsx | 2 +- apps/portal/redirects.mjs | 50 +++++++++--------- apps/portal/src/app/Header.tsx | 6 +-- apps/portal/src/app/page.tsx | 2 +- .../{pay => payments}/assets/avax-to-usd.png | Bin .../assets/buy-with-crypto.png | Bin .../src/app/{pay => payments}/assets/bwc.png | Bin .../src/app/{pay => payments}/assets/bwf.png | Bin .../assets/direct-payments-flow.png | Bin .../assets/get-started-embed.png | Bin .../assets/get-started-send.png | Bin .../{pay => payments}/assets/pay-api-key.png | Bin .../{pay => payments}/assets/pay-modal.png | Bin .../{pay => payments}/assets/pay-overview.png | Bin .../{pay => payments}/assets/pay-settings.png | Bin .../customization/connectbutton/page.mdx | 0 .../customization/send-transaction/page.mdx | 0 .../src/app/{pay => payments}/faqs/page.mdx | 2 +- .../fees/assets/fee-dash.png | Bin .../src/app/{pay => payments}/fees/page.mdx | 0 .../{pay => payments}/get-started/page.mdx | 16 +++--- .../guides/cross-chain-swapping/page.mdx | 0 .../guides/nft-checkout/page.mdx | 0 .../guides/onramp-integration/page.mdx | 6 +-- .../guides/smart-accounts/page.mdx | 2 +- .../src/app/{pay => payments}/layout.tsx | 0 .../onramp-providers/page.mdx | 2 +- .../portal/src/app/{pay => payments}/page.mdx | 2 +- .../src/app/{pay => payments}/sidebar.tsx | 6 +-- .../supported-chains/page.mdx | 0 .../{pay => payments}/troubleshoot/page.mdx | 0 .../app/{pay => payments}/webhooks/page.mdx | 0 apps/portal/src/app/react/v5/sidebar.tsx | 4 +- .../account-abstraction/api/page.mdx | 0 .../batching-transactions/page.mdx | 0 .../erc-20-paymaster/page.mdx | 0 .../account-abstraction/factories/page.mdx | 0 .../account-abstraction/faq/page.mdx | 0 .../gasless/biconomy/page.mdx | 0 .../gasless/engine/page.mdx | 0 .../gasless/openzeppelin/page.mdx | 0 .../account-abstraction/get-started/page.mdx | 0 .../account-abstraction/guides/react/page.mdx | 0 .../guides/typescript/page.mdx | 0 .../account-abstraction/how-it-works/page.mdx | 0 .../account-abstraction/images/wallet.png | Bin .../infrastructure/page.mdx | 0 .../account-abstraction/overview/page.mdx | 0 .../account-abstraction/permissions/page.mdx | 0 .../sponsorship-rules/page.mdx | 0 .../sponsorship-rules/sponsorship-rules.png | Bin .../app/{connect => wallets}/assets/test.jpg | Bin .../auth/assets/auth-api-0.svg | 0 .../auth/assets/auth-api-1.svg | 0 .../auth/assets/auth-api-2.svg | 0 .../auth/assets/auth-api-3.svg | 0 .../auth/assets/auth-api-4.svg | 0 .../auth/assets/auth-diagram.svg | 0 .../auth/assets/firebase-db.png | Bin .../auth/assets/firebase-users.png | Bin .../auth/assets/getting-started-1.png | Bin .../auth/assets/getting-started-2.png | Bin .../auth/assets/getting-started-3.png | Bin .../auth/assets/json-web-tokens-1.png | Bin .../auth/assets/web2auth-diagram.svg | 0 .../auth/assets/web3auth-diagram.svg | 0 .../auth/deploying-to-production/page.mdx | 0 .../auth/frameworks/next/page.mdx | 0 .../auth/frameworks/react-express/page.mdx | 0 .../app/{connect => wallets}/auth/page.mdx | 0 .../blockchain-api/page.mdx | 0 .../custom-auth/configuration/page.mdx | 0 .../custom-auth/custom-auth-server/page.mdx | 0 .../custom-jwt-auth-server/page.mdx | 0 .../custom-auth/firebase-auth/page.mdx | 0 .../custom-auth/images/configuration-view.png | Bin .../images/custom-json-firebase.png | Bin .../custom-auth/images/customauth.png | Bin .../custom-auth/images/customauthdb.png | Bin .../custom-auth/images/customauthdb2.png | Bin .../images/ew-configuration-opt.png | Bin .../custom-auth/images/ew-configuration.png | Bin .../custom-auth/images/ew-create-key.png | Bin .../images/ew-custom-auth-config.png | Bin .../images/ew-custom-auth-flow.png | Bin .../custom-auth/images/jwk-creator-tool.png | Bin .../custom-auth/images/speedracer.png | Bin .../custom-auth/overview/page.mdx | 0 .../guides/build-your-own-ui/page.mdx | 0 .../connect-users/connect-wallet-hero.webp | Bin .../guides/connect-users/page.mdx | 0 .../connect-wallet-embedded-compact.png | Bin .../connect-wallet-smart-dropdown.png | Bin .../guides/enable-gasless/page.mdx | 0 .../guides/enable-gasless/smart-wallet.svg | 0 .../guides/interact-blockchain/page.mdx | 0 .../guides/interact-with-accounts/page.mdx | 0 .../in-app-wallet/images/embedded-wallet.svg | 0 .../in-app-wallet/images/unity.webp | Bin .../in-app-wallet/images/wallet.png | Bin .../src/app/{connect => wallets}/layout.tsx | 2 +- .../src/app/{connect => wallets}/page.mdx | 2 +- .../{connect => wallets}/quickstart/page.mdx | 0 .../src/app/{connect => wallets}/sidebar.tsx | 18 +++---- .../sign-in/assets/ConnectEmbed-embedded.png | Bin .../sign-in/assets/Wide-dark.png | Bin .../sign-in/assets/compact-dark-social.png | Bin .../sign-in/assets/compact-dark.png | Bin .../sign-in/assets/connect-image-new.svg | 0 .../sign-in/assets/connect-playground.png | Bin .../sign-in/assets/connect-wallet-modal.png | Bin .../sign-in/assets/connect.png | Bin .../sign-in/assets/custom-modals.png | Bin .../sign-in/assets/custom-welcome.png | Bin .../sign-in/assets/narrow-wide.png | Bin .../sign-in/customization/page.mdx | 0 .../wallet/ecosystem/assets/add-partner.png | Bin .../assets/create-ecosystem-wallet.png | Bin .../ecosystem/assets/ecosystem-info.png | Bin .../assets/ecosystem-wallet-permissions.png | Bin .../ecosystem/assets/ecosystem-wallet.png | Bin .../ecosystem/assets/full-login-system.png | Bin .../ecosystem/assets/single-login-option.png | Bin .../ecosystem/assets/wallet-explorer.png | Bin .../ecosystem/assets/walletconnect-create.png | Bin .../ecosystem/assets/walletconnect-guide.png | Bin .../ecosystem/assets/walletconnect-url.png | Bin .../ecosystem/assets/walletconnect-wallet.png | Bin .../assets/xai-connect-wallet-explorer.png | Bin .../wallet/ecosystem/faq/page.mdx | 0 .../ecosystem/integrating-partners/page.mdx | 0 .../wallet/ecosystem/permissions/page.mdx | 0 .../wallet/ecosystem/portal/page.mdx | 0 .../ecosystem/register-walletconnect/page.mdx | 0 .../ecosystem/set-up/assets/add-partner.png | Bin .../set-up/assets/ecosystem-info.png | Bin .../assets/ecosystem-wallet-permissions.png | Bin .../wallet/ecosystem/set-up/page.mdx | 0 .../{connect => wallets}/wallet/faq/page.mdx | 0 .../wallet/get-started/page.mdx | 2 +- .../wallet/get-users/page.mdx | 0 .../wallet/in-app-wallet/faq/page.mdx | 0 .../wallet/migrate-to-thirdweb/page.mdx | 0 .../wallet/overview/assets/custom-modals.png | Bin .../overview/assets/ecosystem-wallet.png | Bin .../wallet/overview/page.mdx | 0 .../wallet/pregenerate-wallets/page.mdx | 0 .../wallet/security/assets/app-scoped.svg | 0 .../security/assets/ecosystem-scoped.svg | 0 .../wallet/security/assets/embed-creation.svg | 0 .../assets/enclave-wallet-creation.png | Bin .../wallet/security/legacy/page.mdx | 0 .../wallet/security/page.mdx | 0 .../sign-in-methods/assets/social-config.png | Bin .../wallet/sign-in-methods/configure/page.mdx | 0 .../sign-in-methods/external-wallets/page.mdx | 0 .../wallet/sign-in-methods/guest/page.mdx | 0 .../export-private-key/confirm-reveal.png | Bin .../export-private-key/export-key.png | Bin .../export-private-key/exported-key.png | Bin .../export-private-key/manage-wallet.png | Bin .../export-private-key/page.mdx | 0 .../get-user-profiles/page.mdx | 0 .../link-multiple-identity/page.mdx | 0 .../web3-onboard/migration-guide/page.mdx | 0 .../wallet/web3-onboard/overview/page.mdx | 0 .../assets/bundlesize-transparent.png | Bin .../assets/performance-transparent.png | Bin .../why-thirdweb/page.mdx | 0 180 files changed, 69 insertions(+), 77 deletions(-) rename apps/portal/src/app/{pay => payments}/assets/avax-to-usd.png (100%) rename apps/portal/src/app/{pay => payments}/assets/buy-with-crypto.png (100%) rename apps/portal/src/app/{pay => payments}/assets/bwc.png (100%) rename apps/portal/src/app/{pay => payments}/assets/bwf.png (100%) rename apps/portal/src/app/{pay => payments}/assets/direct-payments-flow.png (100%) rename apps/portal/src/app/{pay => payments}/assets/get-started-embed.png (100%) rename apps/portal/src/app/{pay => payments}/assets/get-started-send.png (100%) rename apps/portal/src/app/{pay => payments}/assets/pay-api-key.png (100%) rename apps/portal/src/app/{pay => payments}/assets/pay-modal.png (100%) rename apps/portal/src/app/{pay => payments}/assets/pay-overview.png (100%) rename apps/portal/src/app/{pay => payments}/assets/pay-settings.png (100%) rename apps/portal/src/app/{pay => payments}/customization/connectbutton/page.mdx (100%) rename apps/portal/src/app/{pay => payments}/customization/send-transaction/page.mdx (100%) rename apps/portal/src/app/{pay => payments}/faqs/page.mdx (98%) rename apps/portal/src/app/{pay => payments}/fees/assets/fee-dash.png (100%) rename apps/portal/src/app/{pay => payments}/fees/page.mdx (100%) rename apps/portal/src/app/{pay => payments}/get-started/page.mdx (93%) rename apps/portal/src/app/{pay => payments}/guides/cross-chain-swapping/page.mdx (100%) rename apps/portal/src/app/{pay => payments}/guides/nft-checkout/page.mdx (100%) rename apps/portal/src/app/{pay => payments}/guides/onramp-integration/page.mdx (95%) rename apps/portal/src/app/{pay => payments}/guides/smart-accounts/page.mdx (98%) rename apps/portal/src/app/{pay => payments}/layout.tsx (100%) rename apps/portal/src/app/{pay => payments}/onramp-providers/page.mdx (92%) rename apps/portal/src/app/{pay => payments}/page.mdx (97%) rename apps/portal/src/app/{pay => payments}/sidebar.tsx (95%) rename apps/portal/src/app/{pay => payments}/supported-chains/page.mdx (100%) rename apps/portal/src/app/{pay => payments}/troubleshoot/page.mdx (100%) rename apps/portal/src/app/{pay => payments}/webhooks/page.mdx (100%) rename apps/portal/src/app/{connect => wallets}/account-abstraction/api/page.mdx (100%) rename apps/portal/src/app/{connect => wallets}/account-abstraction/batching-transactions/page.mdx (100%) rename apps/portal/src/app/{connect => wallets}/account-abstraction/erc-20-paymaster/page.mdx (100%) rename apps/portal/src/app/{connect => wallets}/account-abstraction/factories/page.mdx (100%) rename apps/portal/src/app/{connect => wallets}/account-abstraction/faq/page.mdx (100%) rename apps/portal/src/app/{connect => wallets}/account-abstraction/gasless/biconomy/page.mdx (100%) rename apps/portal/src/app/{connect => wallets}/account-abstraction/gasless/engine/page.mdx (100%) rename apps/portal/src/app/{connect => wallets}/account-abstraction/gasless/openzeppelin/page.mdx (100%) rename apps/portal/src/app/{connect => wallets}/account-abstraction/get-started/page.mdx (100%) rename apps/portal/src/app/{connect => wallets}/account-abstraction/guides/react/page.mdx (100%) rename apps/portal/src/app/{connect => wallets}/account-abstraction/guides/typescript/page.mdx (100%) rename apps/portal/src/app/{connect => wallets}/account-abstraction/how-it-works/page.mdx (100%) rename apps/portal/src/app/{connect => wallets}/account-abstraction/images/wallet.png (100%) rename apps/portal/src/app/{connect => wallets}/account-abstraction/infrastructure/page.mdx (100%) rename apps/portal/src/app/{connect => wallets}/account-abstraction/overview/page.mdx (100%) rename apps/portal/src/app/{connect => wallets}/account-abstraction/permissions/page.mdx (100%) rename apps/portal/src/app/{connect => wallets}/account-abstraction/sponsorship-rules/page.mdx (100%) rename apps/portal/src/app/{connect => wallets}/account-abstraction/sponsorship-rules/sponsorship-rules.png (100%) rename apps/portal/src/app/{connect => wallets}/assets/test.jpg (100%) rename apps/portal/src/app/{connect => wallets}/auth/assets/auth-api-0.svg (100%) rename apps/portal/src/app/{connect => wallets}/auth/assets/auth-api-1.svg (100%) rename apps/portal/src/app/{connect => wallets}/auth/assets/auth-api-2.svg (100%) rename apps/portal/src/app/{connect => wallets}/auth/assets/auth-api-3.svg (100%) rename apps/portal/src/app/{connect => wallets}/auth/assets/auth-api-4.svg (100%) rename apps/portal/src/app/{connect => wallets}/auth/assets/auth-diagram.svg (100%) rename apps/portal/src/app/{connect => wallets}/auth/assets/firebase-db.png (100%) rename apps/portal/src/app/{connect => wallets}/auth/assets/firebase-users.png (100%) rename apps/portal/src/app/{connect => wallets}/auth/assets/getting-started-1.png (100%) rename apps/portal/src/app/{connect => wallets}/auth/assets/getting-started-2.png (100%) rename apps/portal/src/app/{connect => wallets}/auth/assets/getting-started-3.png (100%) rename apps/portal/src/app/{connect => wallets}/auth/assets/json-web-tokens-1.png (100%) rename apps/portal/src/app/{connect => wallets}/auth/assets/web2auth-diagram.svg (100%) rename apps/portal/src/app/{connect => wallets}/auth/assets/web3auth-diagram.svg (100%) rename apps/portal/src/app/{connect => wallets}/auth/deploying-to-production/page.mdx (100%) rename apps/portal/src/app/{connect => wallets}/auth/frameworks/next/page.mdx (100%) rename apps/portal/src/app/{connect => wallets}/auth/frameworks/react-express/page.mdx (100%) rename apps/portal/src/app/{connect => wallets}/auth/page.mdx (100%) rename apps/portal/src/app/{connect => wallets}/blockchain-api/page.mdx (100%) rename apps/portal/src/app/{connect => wallets}/in-app-wallet/custom-auth/configuration/page.mdx (100%) rename apps/portal/src/app/{connect => wallets}/in-app-wallet/custom-auth/custom-auth-server/page.mdx (100%) rename apps/portal/src/app/{connect => wallets}/in-app-wallet/custom-auth/custom-jwt-auth-server/page.mdx (100%) rename apps/portal/src/app/{connect => wallets}/in-app-wallet/custom-auth/firebase-auth/page.mdx (100%) rename apps/portal/src/app/{connect => wallets}/in-app-wallet/custom-auth/images/configuration-view.png (100%) rename apps/portal/src/app/{connect => wallets}/in-app-wallet/custom-auth/images/custom-json-firebase.png (100%) rename apps/portal/src/app/{connect => wallets}/in-app-wallet/custom-auth/images/customauth.png (100%) rename apps/portal/src/app/{connect => wallets}/in-app-wallet/custom-auth/images/customauthdb.png (100%) rename apps/portal/src/app/{connect => wallets}/in-app-wallet/custom-auth/images/customauthdb2.png (100%) rename apps/portal/src/app/{connect => wallets}/in-app-wallet/custom-auth/images/ew-configuration-opt.png (100%) rename apps/portal/src/app/{connect => wallets}/in-app-wallet/custom-auth/images/ew-configuration.png (100%) rename apps/portal/src/app/{connect => wallets}/in-app-wallet/custom-auth/images/ew-create-key.png (100%) rename apps/portal/src/app/{connect => wallets}/in-app-wallet/custom-auth/images/ew-custom-auth-config.png (100%) rename apps/portal/src/app/{connect => wallets}/in-app-wallet/custom-auth/images/ew-custom-auth-flow.png (100%) rename apps/portal/src/app/{connect => wallets}/in-app-wallet/custom-auth/images/jwk-creator-tool.png (100%) rename apps/portal/src/app/{connect => wallets}/in-app-wallet/custom-auth/images/speedracer.png (100%) rename apps/portal/src/app/{connect => wallets}/in-app-wallet/custom-auth/overview/page.mdx (100%) rename apps/portal/src/app/{connect => wallets}/in-app-wallet/guides/build-your-own-ui/page.mdx (100%) rename apps/portal/src/app/{connect => wallets}/in-app-wallet/guides/connect-users/connect-wallet-hero.webp (100%) rename apps/portal/src/app/{connect => wallets}/in-app-wallet/guides/connect-users/page.mdx (100%) rename apps/portal/src/app/{connect => wallets}/in-app-wallet/guides/enable-gasless/connect-wallet-embedded-compact.png (100%) rename apps/portal/src/app/{connect => wallets}/in-app-wallet/guides/enable-gasless/connect-wallet-smart-dropdown.png (100%) rename apps/portal/src/app/{connect => wallets}/in-app-wallet/guides/enable-gasless/page.mdx (100%) rename apps/portal/src/app/{connect => wallets}/in-app-wallet/guides/enable-gasless/smart-wallet.svg (100%) rename apps/portal/src/app/{connect => wallets}/in-app-wallet/guides/interact-blockchain/page.mdx (100%) rename apps/portal/src/app/{connect => wallets}/in-app-wallet/guides/interact-with-accounts/page.mdx (100%) rename apps/portal/src/app/{connect => wallets}/in-app-wallet/images/embedded-wallet.svg (100%) rename apps/portal/src/app/{connect => wallets}/in-app-wallet/images/unity.webp (100%) rename apps/portal/src/app/{connect => wallets}/in-app-wallet/images/wallet.png (100%) rename apps/portal/src/app/{connect => wallets}/layout.tsx (90%) rename apps/portal/src/app/{connect => wallets}/page.mdx (98%) rename apps/portal/src/app/{connect => wallets}/quickstart/page.mdx (100%) rename apps/portal/src/app/{connect => wallets}/sidebar.tsx (96%) rename apps/portal/src/app/{connect => wallets}/sign-in/assets/ConnectEmbed-embedded.png (100%) rename apps/portal/src/app/{connect => wallets}/sign-in/assets/Wide-dark.png (100%) rename apps/portal/src/app/{connect => wallets}/sign-in/assets/compact-dark-social.png (100%) rename apps/portal/src/app/{connect => wallets}/sign-in/assets/compact-dark.png (100%) rename apps/portal/src/app/{connect => wallets}/sign-in/assets/connect-image-new.svg (100%) rename apps/portal/src/app/{connect => wallets}/sign-in/assets/connect-playground.png (100%) rename apps/portal/src/app/{connect => wallets}/sign-in/assets/connect-wallet-modal.png (100%) rename apps/portal/src/app/{connect => wallets}/sign-in/assets/connect.png (100%) rename apps/portal/src/app/{connect => wallets}/sign-in/assets/custom-modals.png (100%) rename apps/portal/src/app/{connect => wallets}/sign-in/assets/custom-welcome.png (100%) rename apps/portal/src/app/{connect => wallets}/sign-in/assets/narrow-wide.png (100%) rename apps/portal/src/app/{connect => wallets}/sign-in/customization/page.mdx (100%) rename apps/portal/src/app/{connect => wallets}/wallet/ecosystem/assets/add-partner.png (100%) rename apps/portal/src/app/{connect => wallets}/wallet/ecosystem/assets/create-ecosystem-wallet.png (100%) rename apps/portal/src/app/{connect => wallets}/wallet/ecosystem/assets/ecosystem-info.png (100%) rename apps/portal/src/app/{connect => wallets}/wallet/ecosystem/assets/ecosystem-wallet-permissions.png (100%) rename apps/portal/src/app/{connect => wallets}/wallet/ecosystem/assets/ecosystem-wallet.png (100%) rename apps/portal/src/app/{connect => wallets}/wallet/ecosystem/assets/full-login-system.png (100%) rename apps/portal/src/app/{connect => wallets}/wallet/ecosystem/assets/single-login-option.png (100%) rename apps/portal/src/app/{connect => wallets}/wallet/ecosystem/assets/wallet-explorer.png (100%) rename apps/portal/src/app/{connect => wallets}/wallet/ecosystem/assets/walletconnect-create.png (100%) rename apps/portal/src/app/{connect => wallets}/wallet/ecosystem/assets/walletconnect-guide.png (100%) rename apps/portal/src/app/{connect => wallets}/wallet/ecosystem/assets/walletconnect-url.png (100%) rename apps/portal/src/app/{connect => wallets}/wallet/ecosystem/assets/walletconnect-wallet.png (100%) rename apps/portal/src/app/{connect => wallets}/wallet/ecosystem/assets/xai-connect-wallet-explorer.png (100%) rename apps/portal/src/app/{connect => wallets}/wallet/ecosystem/faq/page.mdx (100%) rename apps/portal/src/app/{connect => wallets}/wallet/ecosystem/integrating-partners/page.mdx (100%) rename apps/portal/src/app/{connect => wallets}/wallet/ecosystem/permissions/page.mdx (100%) rename apps/portal/src/app/{connect => wallets}/wallet/ecosystem/portal/page.mdx (100%) rename apps/portal/src/app/{connect => wallets}/wallet/ecosystem/register-walletconnect/page.mdx (100%) rename apps/portal/src/app/{connect => wallets}/wallet/ecosystem/set-up/assets/add-partner.png (100%) rename apps/portal/src/app/{connect => wallets}/wallet/ecosystem/set-up/assets/ecosystem-info.png (100%) rename apps/portal/src/app/{connect => wallets}/wallet/ecosystem/set-up/assets/ecosystem-wallet-permissions.png (100%) rename apps/portal/src/app/{connect => wallets}/wallet/ecosystem/set-up/page.mdx (100%) rename apps/portal/src/app/{connect => wallets}/wallet/faq/page.mdx (100%) rename apps/portal/src/app/{connect => wallets}/wallet/get-started/page.mdx (99%) rename apps/portal/src/app/{connect => wallets}/wallet/get-users/page.mdx (100%) rename apps/portal/src/app/{connect => wallets}/wallet/in-app-wallet/faq/page.mdx (100%) rename apps/portal/src/app/{connect => wallets}/wallet/migrate-to-thirdweb/page.mdx (100%) rename apps/portal/src/app/{connect => wallets}/wallet/overview/assets/custom-modals.png (100%) rename apps/portal/src/app/{connect => wallets}/wallet/overview/assets/ecosystem-wallet.png (100%) rename apps/portal/src/app/{connect => wallets}/wallet/overview/page.mdx (100%) rename apps/portal/src/app/{connect => wallets}/wallet/pregenerate-wallets/page.mdx (100%) rename apps/portal/src/app/{connect => wallets}/wallet/security/assets/app-scoped.svg (100%) rename apps/portal/src/app/{connect => wallets}/wallet/security/assets/ecosystem-scoped.svg (100%) rename apps/portal/src/app/{connect => wallets}/wallet/security/assets/embed-creation.svg (100%) rename apps/portal/src/app/{connect => wallets}/wallet/security/assets/enclave-wallet-creation.png (100%) rename apps/portal/src/app/{connect => wallets}/wallet/security/legacy/page.mdx (100%) rename apps/portal/src/app/{connect => wallets}/wallet/security/page.mdx (100%) rename apps/portal/src/app/{connect => wallets}/wallet/sign-in-methods/assets/social-config.png (100%) rename apps/portal/src/app/{connect => wallets}/wallet/sign-in-methods/configure/page.mdx (100%) rename apps/portal/src/app/{connect => wallets}/wallet/sign-in-methods/external-wallets/page.mdx (100%) rename apps/portal/src/app/{connect => wallets}/wallet/sign-in-methods/guest/page.mdx (100%) rename apps/portal/src/app/{connect => wallets}/wallet/user-management/export-private-key/confirm-reveal.png (100%) rename apps/portal/src/app/{connect => wallets}/wallet/user-management/export-private-key/export-key.png (100%) rename apps/portal/src/app/{connect => wallets}/wallet/user-management/export-private-key/exported-key.png (100%) rename apps/portal/src/app/{connect => wallets}/wallet/user-management/export-private-key/manage-wallet.png (100%) rename apps/portal/src/app/{connect => wallets}/wallet/user-management/export-private-key/page.mdx (100%) rename apps/portal/src/app/{connect => wallets}/wallet/user-management/get-user-profiles/page.mdx (100%) rename apps/portal/src/app/{connect => wallets}/wallet/user-management/link-multiple-identity/page.mdx (100%) rename apps/portal/src/app/{connect => wallets}/wallet/web3-onboard/migration-guide/page.mdx (100%) rename apps/portal/src/app/{connect => wallets}/wallet/web3-onboard/overview/page.mdx (100%) rename apps/portal/src/app/{connect => wallets}/why-thirdweb/assets/bundlesize-transparent.png (100%) rename apps/portal/src/app/{connect => wallets}/why-thirdweb/assets/performance-transparent.png (100%) rename apps/portal/src/app/{connect => wallets}/why-thirdweb/page.mdx (100%) diff --git a/apps/dashboard/src/app/(app)/(dashboard)/(bridge)/routes/page.tsx b/apps/dashboard/src/app/(app)/(dashboard)/(bridge)/routes/page.tsx index d7b9d07a96a..2a06e870ee5 100644 --- a/apps/dashboard/src/app/(app)/(dashboard)/(bridge)/routes/page.tsx +++ b/apps/dashboard/src/app/(app)/(dashboard)/(bridge)/routes/page.tsx @@ -74,7 +74,7 @@ export default async function RoutesPage(props: { diff --git a/apps/dashboard/src/app/(app)/(dashboard)/(chain)/components/server/products.ts b/apps/dashboard/src/app/(app)/(dashboard)/(chain)/components/server/products.ts index 617e4ba7115..887ac488782 100644 --- a/apps/dashboard/src/app/(app)/(dashboard)/(chain)/components/server/products.ts +++ b/apps/dashboard/src/app/(app)/(dashboard)/(chain)/components/server/products.ts @@ -48,7 +48,7 @@ export const products = [ description: "Enable payments in any token on any chain", icon: PayIcon, id: "pay", - link: "https://portal.thirdweb.com/connect/pay/overview", + link: "https://portal.thirdweb.com/payments", name: "Payments", }, { diff --git a/apps/dashboard/src/app/(app)/(dashboard)/support/page.tsx b/apps/dashboard/src/app/(app)/(dashboard)/support/page.tsx index bce10cb8765..f36a3a8b650 100644 --- a/apps/dashboard/src/app/(app)/(dashboard)/support/page.tsx +++ b/apps/dashboard/src/app/(app)/(dashboard)/support/page.tsx @@ -42,7 +42,7 @@ const HELP_PRODUCTS = [ description: "Enable payments on any tokens on any chain", icon: PayIcon, title: "Payments", - viewAllUrl: "https://portal.thirdweb.com/pay/troubleshoot", + viewAllUrl: "https://portal.thirdweb.com/payments/troubleshoot", }, { description: "Perform read and write transactions onchain", diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/analytics/page.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/analytics/page.tsx index 151af474dd2..da8014b9899 100644 --- a/apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/analytics/page.tsx +++ b/apps/dashboard/src/app/(app)/team/[team_slug]/(team)/~/analytics/page.tsx @@ -355,7 +355,7 @@ function AppHighlightsCard({ emptyContent: ( ), diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/page.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/page.tsx index d7645216197..15fe11dc1e5 100644 --- a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/page.tsx +++ b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/page.tsx @@ -436,7 +436,7 @@ function AppHighlightsCard({ emptyContent: ( ), diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/universal-bridge/components/PayEmbedFTUX.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/universal-bridge/components/PayEmbedFTUX.tsx index 7f199bb6df7..416d938b741 100644 --- a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/universal-bridge/components/PayEmbedFTUX.tsx +++ b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/universal-bridge/components/PayEmbedFTUX.tsx @@ -56,7 +56,7 @@ export function PayEmbedFTUX(props: { - - - + + + + + - {/* right */} -
- - -
- - ); + {/* right */} +
+ + +
+ + ); } function PlaygroundSection() { - return ( -
- - -
- ); + return ( +
+ + +
+ ); } function ReferenceSection() { - return ( -
- - - - - - - - - - - - - - - - - - - -
- ); + return ( +
+ + + + + + + + + + + + + + + + + + + +
+ ); } function LearningResourcesSection() { - return ( -
- - - - - - - - - - -
- ); + return ( +
+ + + + + + + + + + +
+ ); } function SectionTitle(props: { - title: string; - anchorId: string; - level?: number; - className?: string; + title: string; + anchorId: string; + level?: number; + className?: string; }) { - return ( - - {props.title} - - ); + return ( + + {props.title} + + ); } /*** * This component is only for the index page */ function ArticleCardIndex(props: { - title: string; - description: string; - href: string; - icon?: React.FC<{ className?: string }>; - external?: boolean; + title: string; + description: string; + href: string; + icon?: React.FC<{ className?: string }>; + external?: boolean; }) { - return ( - -
- {props.icon && } -
-

- {props.title} -

-

{props.description}

-
-
- - ); + return ( + +
+ {props.icon && } +
+

+ {props.title} +

+

{props.description}

+
+
+ + ); } diff --git a/apps/portal/src/app/wallets/auth/page.mdx b/apps/portal/src/app/wallets/auth/page.mdx index d7fb87b81d9..569c82e614b 100644 --- a/apps/portal/src/app/wallets/auth/page.mdx +++ b/apps/portal/src/app/wallets/auth/page.mdx @@ -189,14 +189,14 @@ Auth integrates with a variety of server-side and client-side development framew diff --git a/apps/portal/src/app/wallets/wallet/overview/page.mdx b/apps/portal/src/app/wallets/wallet/overview/page.mdx index 29d5aabcabd..3ff5fb7929c 100644 --- a/apps/portal/src/app/wallets/wallet/overview/page.mdx +++ b/apps/portal/src/app/wallets/wallet/overview/page.mdx @@ -94,7 +94,7 @@ A flexible sign-up flow that accommodates different preferences is critical when diff --git a/apps/portal/src/app/wallets/wallet/sign-in-methods/configure/page.mdx b/apps/portal/src/app/wallets/wallet/sign-in-methods/configure/page.mdx index 1e18ef7b408..dc97af7ceef 100644 --- a/apps/portal/src/app/wallets/wallet/sign-in-methods/configure/page.mdx +++ b/apps/portal/src/app/wallets/wallet/sign-in-methods/configure/page.mdx @@ -64,7 +64,7 @@ If you already have an auth system, you can use thirdweb to attach wallets to yo void }) { - const [input, setInput] = useState(""); - const debouncedInput = useDebounce(input, 500); - - const [selectedTags, setSelectedTags] = useState<{ - [T in Tag]?: boolean; - }>({}); - - const [enabledTags, setEnabledTags] = useState([]); - const scrollableElement = useRef(null); - - const searchQuery = useQuery({ - enabled: debouncedInput.length > 0, - placeholderData: keepPreviousData, - queryFn: async () => { - const res = await fetch(`/api/search?q=${encodeURI(debouncedInput)}`); - const { results } = (await res.json()) as SearchResult; - - const tagsSet: Set = new Set([]); - - if (results.length > 0) { - tagsSet.add("All"); - setSelectedTags({ - All: true, - }); - } - - for (const r of results) { - const tags = getTagsFromHref(r.pageHref); - if (tags) { - for (const tag of tags) { - tagsSet.add(tag); - } - } - } - - const tags = Array.from(tagsSet); - setEnabledTags(tags); - - scrollableElement.current?.scrollTo({ - top: 0, - }); - - return results; - }, - queryKey: ["search-index", debouncedInput], - }); - - const data = searchQuery.data; - const noResults = - debouncedInput && searchQuery.isFetched && data && data.length === 0; - - const handleLinkClick = () => { - props.closeModal(); - }; - - return ( -
- {/* Search */} -
- {searchQuery.isFetching ? ( - - ) : ( - - )} - - { - setInput(e.target.value); - }} - onKeyDown={(e) => { - if (e.key === "Enter" && e.target instanceof HTMLInputElement) { - e.target.blur(); - } - }} - placeholder="Search docs" - /> -
- - -
- {/* tags */} - {enabledTags && enabledTags.length > 0 && ( -
- {enabledTags.map((tag) => ( - - ))} -
- )} - - {/* links */} - {data && data.length > 0 && ( -
- {data.map((result) => { - const tags = getTagsFromHref(result.pageHref); - - if ( - !selectedTags.All && - tags && - !tags.find((t) => selectedTags[t] === true) - ) - return null; - - if (!tags && !selectedTags.All) { - return null; - } - - const sections = result.sections - ?.filter((d) => d.content.length > 50) - .slice(0, 2); - - return ( -
- - - {sections && sections.length > 0 && ( -
- {sections.map((sectionData) => { - return ( - - ); - })} -
- )} -
- ); - })} -
- )} - - {/* No Results */} - {noResults && ( -
-

No Results

-
- )} - - {!debouncedInput && (!data || data.length === 0) && ( - - )} -
-
-
- ); + const [input, setInput] = useState(""); + const debouncedInput = useDebounce(input, 500); + + const [selectedTags, setSelectedTags] = useState<{ + [T in Tag]?: boolean; + }>({}); + + const [enabledTags, setEnabledTags] = useState([]); + const scrollableElement = useRef(null); + + const searchQuery = useQuery({ + enabled: debouncedInput.length > 0, + placeholderData: keepPreviousData, + queryFn: async () => { + const res = await fetch(`/api/search?q=${encodeURI(debouncedInput)}`); + const { results } = (await res.json()) as SearchResult; + + const tagsSet: Set = new Set([]); + + if (results.length > 0) { + tagsSet.add("All"); + setSelectedTags({ + All: true, + }); + } + + for (const r of results) { + const tags = getTagsFromHref(r.pageHref); + if (tags) { + for (const tag of tags) { + tagsSet.add(tag); + } + } + } + + const tags = Array.from(tagsSet); + setEnabledTags(tags); + + scrollableElement.current?.scrollTo({ + top: 0, + }); + + return results; + }, + queryKey: ["search-index", debouncedInput], + }); + + const data = searchQuery.data; + const noResults = + debouncedInput && searchQuery.isFetched && data && data.length === 0; + + const handleLinkClick = () => { + props.closeModal(); + }; + + return ( +
+ {/* Search */} +
+ {searchQuery.isFetching ? ( + + ) : ( + + )} + + { + setInput(e.target.value); + }} + onKeyDown={(e) => { + if (e.key === "Enter" && e.target instanceof HTMLInputElement) { + e.target.blur(); + } + }} + placeholder="Search docs" + /> +
+ + +
+ {/* tags */} + {enabledTags && enabledTags.length > 0 && ( +
+ {enabledTags.map((tag) => ( + + ))} +
+ )} + + {/* links */} + {data && data.length > 0 && ( +
+ {data.map((result) => { + const tags = getTagsFromHref(result.pageHref); + + if ( + !selectedTags.All && + tags && + !tags.find((t) => selectedTags[t] === true) + ) + return null; + + if (!tags && !selectedTags.All) { + return null; + } + + const sections = result.sections + ?.filter((d) => d.content.length > 50) + .slice(0, 2); + + return ( +
+ + + {sections && sections.length > 0 && ( +
+ {sections.map((sectionData) => { + return ( + + ); + })} +
+ )} +
+ ); + })} +
+ )} + + {/* No Results */} + {noResults && ( +
+

No Results

+
+ )} + + {!debouncedInput && (!data || data.length === 0) && ( + + )} +
+
+
+ ); } function NoSearchLinks(props: { onClick?: () => void }) { - return ( -
- {suggestedLinks.map((link) => { - return ( - - ); - })} -
- ); + return ( +
+ {suggestedLinks.map((link) => { + return ( + + ); + })} +
+ ); } function useDebounce(value: string, delay: number) { - const [debouncedValue, setDebouncedValue] = useState(value); + const [debouncedValue, setDebouncedValue] = useState(value); - useEffect(() => { - const handler = setTimeout(() => { - setDebouncedValue(value); - }, delay); + useEffect(() => { + const handler = setTimeout(() => { + setDebouncedValue(value); + }, delay); - return () => { - clearTimeout(handler); - }; - }, [value, delay]); + return () => { + clearTimeout(handler); + }; + }, [value, delay]); - return debouncedValue; + return debouncedValue; } const queryClient = new QueryClient(); export function DocSearch(props: { variant: "icon" | "search" }) { - const [open, setOpen] = useState(false); - - const forDesktop = props.variant === "search"; - useEffect(() => { - if (!forDesktop) { - return; - } - // when cmd+k on MacOS or ctrl+k on Windows is pressed, open the search modal - const handleKeyDown = (e: KeyboardEvent) => { - if (e.key === "k" && (e.metaKey || e.ctrlKey)) { - e.preventDefault(); - setOpen((v) => !v); - } - }; - - document.body.addEventListener("keydown", handleKeyDown); - return () => { - document.body.removeEventListener("keydown", handleKeyDown); - }; - }, [forDesktop]); - - // when escape is pressed, close the search modal - useEffect(() => { - if (!forDesktop) { - return; - } - const handleKeyDown = (e: KeyboardEvent) => { - if (e.key === "Escape") { - setOpen(false); - } - }; - - document.body.addEventListener("keydown", handleKeyDown); - return () => { - document.body.removeEventListener("keydown", handleKeyDown); - }; - }, [forDesktop]); - - return ( - - - {/* Desktop */} - - {forDesktop && ( - - - - )} - - {!forDesktop && ( - - - - )} - - - { - setOpen(false); - }} - /> - - - - ); + const [open, setOpen] = useState(false); + + const forDesktop = props.variant === "search"; + useEffect(() => { + if (!forDesktop) { + return; + } + // when cmd+k on MacOS or ctrl+k on Windows is pressed, open the search modal + const handleKeyDown = (e: KeyboardEvent) => { + if (e.key === "k" && (e.metaKey || e.ctrlKey)) { + e.preventDefault(); + setOpen((v) => !v); + } + }; + + document.body.addEventListener("keydown", handleKeyDown); + return () => { + document.body.removeEventListener("keydown", handleKeyDown); + }; + }, [forDesktop]); + + // when escape is pressed, close the search modal + useEffect(() => { + if (!forDesktop) { + return; + } + const handleKeyDown = (e: KeyboardEvent) => { + if (e.key === "Escape") { + setOpen(false); + } + }; + + document.body.addEventListener("keydown", handleKeyDown); + return () => { + document.body.removeEventListener("keydown", handleKeyDown); + }; + }, [forDesktop]); + + return ( + + + {/* Desktop */} + + {forDesktop && ( + + + + )} + + {!forDesktop && ( + + + + )} + + + { + setOpen(false); + }} + /> + + + + ); } function getTagsFromHref(href: string): Tag[] | undefined { - if (href.includes("/react-native/v0")) { - if (href.includes("/references")) { - return ["Reference", "React Native"]; - } - return ["React Native"]; - } - if (href.includes("/react/v4")) { - if (href.includes("/references")) { - return ["Reference", "React"]; - } - return ["React"]; - } - if (href.includes("/typescript/v4")) { - if (href.includes("/references")) { - return ["Reference", "TypeScript"]; - } - return ["TypeScript"]; - } - if (href.includes("/wallet-sdk/v2")) { - if (href.includes("/references")) { - return ["Reference", "Wallet SDK"]; - } - return ["Wallet SDK"]; - } - if (href.includes("/unity")) { - return ["Unity"]; - } - if (href.includes("/typescript/v5")) { - if (href.includes("/references")) { - return ["Reference", "TypeScript"]; - } - return ["TypeScript"]; - } - if (href.includes("/react/v5")) { - return ["React"]; - } - if (href.includes("/connect")) { - return ["Connect"]; - } - if (href.includes("/engine")) { - return ["Engine"]; - } - if (href.includes("/infrastructure")) { - return ["Infra"]; - } - if (href.includes("/solidity")) { - return ["Solidity"]; - } - if (href.includes("/contracts")) { - return ["Contracts"]; - } - if (href.includes("/payments")) { - return ["Payments"]; - } - if (href.includes("/glossary")) { - return ["Glossary"]; - } + if (href.includes("/react-native/v0")) { + if (href.includes("/references")) { + return ["Reference", "React Native"]; + } + return ["React Native"]; + } + if (href.includes("/react/v4")) { + if (href.includes("/references")) { + return ["Reference", "React"]; + } + return ["React"]; + } + if (href.includes("/typescript/v4")) { + if (href.includes("/references")) { + return ["Reference", "TypeScript"]; + } + return ["TypeScript"]; + } + if (href.includes("/wallet-sdk/v2")) { + if (href.includes("/references")) { + return ["Reference", "Wallet SDK"]; + } + return ["Wallet SDK"]; + } + if (href.includes("/unity")) { + return ["Unity"]; + } + if (href.includes("/typescript/v5")) { + if (href.includes("/references")) { + return ["Reference", "TypeScript"]; + } + return ["TypeScript"]; + } + if (href.includes("/react/v5")) { + return ["React"]; + } + if (href.includes("/wallets")) { + return ["Connect"]; + } + if (href.includes("/engine")) { + return ["Engine"]; + } + if (href.includes("/infrastructure")) { + return ["Infra"]; + } + if (href.includes("/solidity")) { + return ["Solidity"]; + } + if (href.includes("/contracts")) { + return ["Contracts"]; + } + if (href.includes("/payments")) { + return ["Payments"]; + } + if (href.includes("/glossary")) { + return ["Glossary"]; + } } function SearchResultItem(props: { - href: string; - title: string; - content?: string; - tags?: Tag[]; - type: "page" | "section"; - onClick?: () => void; + href: string; + title: string; + content?: string; + tags?: Tag[]; + type: "page" | "section"; + onClick?: () => void; }) { - return ( - -
- {props.title && ( -
-
- {props.type === "page" && ( - - )} - - {props.title} -
- - {props.tags && ( -
- {props.tags.map((tag) => { - return ( - - {tag} - - ); - })} -
- )} -
- )} - {props.content &&
{props.content}
} -
- - ); + return ( + +
+ {props.title && ( +
+
+ {props.type === "page" && ( + + )} + + {props.title} +
+ + {props.tags && ( +
+ {props.tags.map((tag) => { + return ( + + {tag} + + ); + })} +
+ )} +
+ )} + {props.content &&
{props.content}
} +
+ + ); } From d00e27fbe544a240d01d87279fc737903ce99150 Mon Sep 17 00:00:00 2001 From: samina Date: Thu, 10 Jul 2025 13:28:59 -0700 Subject: [PATCH 3/3] testing --- apps/portal/src/app/payments/page.mdx | 59 ----- .../src/app/payments/quick-start/page.mdx | 59 +++++ apps/portal/src/app/payments/sidebar.tsx | 243 +++++++++--------- 3 files changed, 183 insertions(+), 178 deletions(-) create mode 100644 apps/portal/src/app/payments/quick-start/page.mdx diff --git a/apps/portal/src/app/payments/page.mdx b/apps/portal/src/app/payments/page.mdx index 0340a620779..7def81411ec 100644 --- a/apps/portal/src/app/payments/page.mdx +++ b/apps/portal/src/app/payments/page.mdx @@ -100,62 +100,3 @@ Payments is supported on select EVM compatible chains. To view the full list, vi | **[Webhooks](https://portal.thirdweb.com/payments/webhooks)** | Real-time transaction status notifications | Applications requiring instant completion updates | | **[Playground](https://playground.thirdweb.com/connect/pay)** | Interactive testing environment | Testing and prototyping bridge functionality | -## Quick Start Examples - -### Basic Cross-Chain Purchase -```typescript -import { Bridge, NATIVE_TOKEN_ADDRESS } from "thirdweb"; - -// Get a quote for purchasing ETH on Optimism using ETH on Mainnet -const quote = await Bridge.Buy.quote({ - originChainId: 1, // Ethereum Mainnet - originTokenAddress: NATIVE_TOKEN_ADDRESS, - destinationChainId: 10, // Optimism - destinationTokenAddress: NATIVE_TOKEN_ADDRESS, - amount: toWei("0.01"), - client: thirdwebClient, -}); - -// Prepare finalized transactions -const prepared = await Bridge.Buy.prepare({ - originChainId: 1, - originTokenAddress: NATIVE_TOKEN_ADDRESS, - destinationChainId: 10, - destinationTokenAddress: NATIVE_TOKEN_ADDRESS, - amount: toWei("0.01"), - sender: "0x2a4f24F935Eb178e3e7BA9B53A5Ee6d8407C0709", - receiver: "0x2a4f24F935Eb178e3e7BA9B53A5Ee6d8407C0709", - client: thirdwebClient, -}); -``` - -### Fiat Onramp -```typescript -// Prepare a Stripe onramp to purchase ETH -const onramp = await Bridge.Onramp.prepare({ - client: thirdwebClient, - onramp: "stripe", - chainId: 1, - tokenAddress: NATIVE_TOKEN_ADDRESS, - receiver: "0x2a4f24F935Eb178e3e7BA9B53A5Ee6d8407C0709", - amount: toWei("10"), - country: "US", -}); - -// Redirect user to onramp.link to complete purchase -``` - -### Status Tracking -```typescript -// Check transaction status -const status = await Bridge.status({ - transactionHash: "0x5959b9321ec581640db531b80bac53cbd968f3d34fc6cb1d5f4ea75f26df2ad7", - chainId: 137, - client: thirdwebClient, -}); - -if (status.status === "COMPLETED") { - console.log("Bridge completed!"); - console.log("Final amount:", status.destinationAmount); -} -``` diff --git a/apps/portal/src/app/payments/quick-start/page.mdx b/apps/portal/src/app/payments/quick-start/page.mdx new file mode 100644 index 00000000000..a6ce8058238 --- /dev/null +++ b/apps/portal/src/app/payments/quick-start/page.mdx @@ -0,0 +1,59 @@ +# Quick Start Examples for Payments + +### Basic Cross-Chain Purchase +```typescript +import { Bridge, NATIVE_TOKEN_ADDRESS } from "thirdweb"; + +// Get a quote for purchasing ETH on Optimism using ETH on Mainnet +const quote = await Bridge.Buy.quote({ + originChainId: 1, // Ethereum Mainnet + originTokenAddress: NATIVE_TOKEN_ADDRESS, + destinationChainId: 10, // Optimism + destinationTokenAddress: NATIVE_TOKEN_ADDRESS, + amount: toWei("0.01"), + client: thirdwebClient, +}); + +// Prepare finalized transactions +const prepared = await Bridge.Buy.prepare({ + originChainId: 1, + originTokenAddress: NATIVE_TOKEN_ADDRESS, + destinationChainId: 10, + destinationTokenAddress: NATIVE_TOKEN_ADDRESS, + amount: toWei("0.01"), + sender: "0x2a4f24F935Eb178e3e7BA9B53A5Ee6d8407C0709", + receiver: "0x2a4f24F935Eb178e3e7BA9B53A5Ee6d8407C0709", + client: thirdwebClient, +}); +``` + +### Fiat Onramp +```typescript +// Prepare a Stripe onramp to purchase ETH +const onramp = await Bridge.Onramp.prepare({ + client: thirdwebClient, + onramp: "stripe", + chainId: 1, + tokenAddress: NATIVE_TOKEN_ADDRESS, + receiver: "0x2a4f24F935Eb178e3e7BA9B53A5Ee6d8407C0709", + amount: toWei("10"), + country: "US", +}); + +// Redirect user to onramp.link to complete purchase +``` + +### Status Tracking +```typescript +// Check transaction status +const status = await Bridge.status({ + transactionHash: "0x5959b9321ec581640db531b80bac53cbd968f3d34fc6cb1d5f4ea75f26df2ad7", + chainId: 137, + client: thirdwebClient, +}); + +if (status.status === "COMPLETED") { + console.log("Bridge completed!"); + console.log("Final amount:", status.destinationAmount); +} +``` \ No newline at end of file diff --git a/apps/portal/src/app/payments/sidebar.tsx b/apps/portal/src/app/payments/sidebar.tsx index f9f3bd822e4..d9261a5fd34 100644 --- a/apps/portal/src/app/payments/sidebar.tsx +++ b/apps/portal/src/app/payments/sidebar.tsx @@ -1,127 +1,132 @@ import { - AlbumIcon, - ArrowLeftRightIcon, - BracesIcon, - CircleDollarSignIcon, - CodeIcon, - MessageCircleQuestionIcon, - PaletteIcon, - RocketIcon, - TriangleRightIcon, - WalletIcon, - WebhookIcon, - WrenchIcon, + AlbumIcon, + ArrowLeftRightIcon, + BracesIcon, + CircleDollarSignIcon, + CodeIcon, + MessageCircleQuestionIcon, + PaletteIcon, + RocketIcon, + TriangleRightIcon, + WalletIcon, + WebhookIcon, + WrenchIcon, } from "lucide-react"; import type { SideBar } from "@/components/Layouts/DocLayout"; const paySlug = "/payments"; export const sidebar: SideBar = { - links: [ - { - href: `${paySlug}`, - icon: , - name: "Overview", - }, - { - href: "https://thirdweb.com/routes", - icon: , - name: "Supported Routes", - }, - { - href: `${paySlug}/onramp-providers`, - icon: , - name: "Onramp Providers", - }, - { - href: `${paySlug}/fees`, - icon: , - name: "Service Fees", - }, - { - href: `${paySlug}/get-started`, - icon: , - links: [ - { - href: `${paySlug}/get-started#installation`, - name: "Installation", - }, - { - href: `${paySlug}/get-started#recipes`, - name: "Recipes", - }, - ], - name: "Get Started", - }, - { - icon: , - isCollapsible: true, - links: [ - { - href: `${paySlug}/guides/cross-chain-swapping`, - name: "Cross-Chain Swapping", - }, - { - href: `${paySlug}/guides/smart-accounts`, - name: "Swap with Smart Accounts", - }, - { - href: `${paySlug}/guides/onramp-integration`, - name: "Fiat Onramp", - }, - { - href: `${paySlug}/guides/nft-checkout`, - name: "NFT Checkout", - }, - ], - name: "Tutorials", - }, - { - icon: , - isCollapsible: true, - links: [ - { - href: `${paySlug}/customization/connectbutton`, - name: "ConnectButton", - }, - { - href: `${paySlug}/customization/send-transaction`, - name: "useSendTransaction", - }, - ], - name: "Customization", - }, - { - href: "https://bridge.thirdweb.com/reference", - icon: , - name: "API Reference", - }, - { - href: "/typescript/v5/buy/quote", - icon: , - links: [ - { - href: "/typescript/v5/buy/quote", - name: "TypeScript SDK", - }, - ], - name: "SDK Reference", - }, - { - href: `${paySlug}/webhooks`, - icon: , - name: "Webhooks", - }, - { - href: `${paySlug}/troubleshoot`, - icon: , - name: "Troubleshoot", - }, - { - href: `${paySlug}/faqs`, - icon: , - name: "FAQs", - }, - ], - name: "Payments", + links: [ + { + href: `${paySlug}`, + icon: , + name: "Overview", + }, + { + href: `${paySlug}/quick-start`, + icon: , + name: "Overview", + }, + { + href: "https://thirdweb.com/routes", + icon: , + name: "Supported Routes", + }, + { + href: `${paySlug}/onramp-providers`, + icon: , + name: "Onramp Providers", + }, + { + href: `${paySlug}/fees`, + icon: , + name: "Service Fees", + }, + { + href: `${paySlug}/get-started`, + icon: , + links: [ + { + href: `${paySlug}/get-started#installation`, + name: "Installation", + }, + { + href: `${paySlug}/get-started#recipes`, + name: "Recipes", + }, + ], + name: "Get Started", + }, + { + icon: , + isCollapsible: true, + links: [ + { + href: `${paySlug}/guides/cross-chain-swapping`, + name: "Cross-Chain Swapping", + }, + { + href: `${paySlug}/guides/smart-accounts`, + name: "Swap with Smart Accounts", + }, + { + href: `${paySlug}/guides/onramp-integration`, + name: "Fiat Onramp", + }, + { + href: `${paySlug}/guides/nft-checkout`, + name: "NFT Checkout", + }, + ], + name: "Tutorials", + }, + { + icon: , + isCollapsible: true, + links: [ + { + href: `${paySlug}/customization/connectbutton`, + name: "ConnectButton", + }, + { + href: `${paySlug}/customization/send-transaction`, + name: "useSendTransaction", + }, + ], + name: "Customization", + }, + { + href: "https://bridge.thirdweb.com/reference", + icon: , + name: "API Reference", + }, + { + href: "/typescript/v5/buy/quote", + icon: , + links: [ + { + href: "/typescript/v5/buy/quote", + name: "TypeScript SDK", + }, + ], + name: "SDK Reference", + }, + { + href: `${paySlug}/webhooks`, + icon: , + name: "Webhooks", + }, + { + href: `${paySlug}/troubleshoot`, + icon: , + name: "Troubleshoot", + }, + { + href: `${paySlug}/faqs`, + icon: , + name: "FAQs", + }, + ], + name: "Payments", };