From 27990aab05a85fab86f0dfa267f6854bd7f88c28 Mon Sep 17 00:00:00 2001 From: Jonas Daniels Date: Fri, 20 Jun 2025 13:51:20 -0700 Subject: [PATCH] biome 2 --- .github/workflows/CI.yml | 2 +- .vscode/settings.json | 43 +- apps/dashboard/.eslintrc.js | 226 +- apps/dashboard/biome.json | 16 +- apps/dashboard/checkly.config.ts | 24 +- apps/dashboard/components.json | 16 +- apps/dashboard/knip.json | 8 +- apps/dashboard/next-sitemap.config.js | 68 +- apps/dashboard/next.config.ts | 100 +- apps/dashboard/package.json | 47 +- apps/dashboard/playwright.config.ts | 36 +- apps/dashboard/postcss.config.js | 2 +- apps/dashboard/redirects.js | 140 +- apps/dashboard/sentry.client.config.ts | 78 +- apps/dashboard/src/@/actions/acceptInvite.ts | 10 +- apps/dashboard/src/@/actions/billing.ts | 6 +- apps/dashboard/src/@/actions/confirmEmail.ts | 10 +- apps/dashboard/src/@/actions/createTeam.ts | 33 +- apps/dashboard/src/@/actions/deleteTeam.ts | 20 +- .../src/@/actions/getBalancesFromMoralis.ts | 14 +- apps/dashboard/src/@/actions/getWalletNFTs.ts | 32 +- apps/dashboard/src/@/actions/proxies.ts | 16 +- .../dashboard/src/@/actions/sendTeamInvite.ts | 14 +- apps/dashboard/src/@/actions/updateAccount.ts | 6 +- .../src/@/analytics/hooks/identify-team.ts | 4 +- apps/dashboard/src/@/analytics/report.ts | 14 +- apps/dashboard/src/@/api/analytics.ts | 14 +- apps/dashboard/src/@/api/audit-log.ts | 14 +- apps/dashboard/src/@/api/insight/webhooks.ts | 26 +- apps/dashboard/src/@/api/notifications.ts | 28 +- apps/dashboard/src/@/api/projects.ts | 2 +- apps/dashboard/src/@/api/team-members.ts | 2 +- apps/dashboard/src/@/api/team.ts | 4 +- .../src/@/api/universal-bridge/developer.ts | 50 +- .../src/@/api/universal-bridge/links.ts | 14 +- .../src/@/api/universal-bridge/tokens.ts | 20 +- .../src/@/api/usage/billing-preview.ts | 14 +- apps/dashboard/src/@/api/usage/rpc.ts | 10 +- apps/dashboard/src/@/api/verified-domain.ts | 4 +- .../src/@/components/ChakraProviderSetup.tsx | 4 +- .../dashboard/src/@/components/Responsive.tsx | 2 +- apps/dashboard/src/@/components/billing.tsx | 12 +- .../blocks/Avatars/GradientAvatar.stories.tsx | 42 +- .../blocks/Avatars/GradientAvatar.tsx | 4 +- .../blocks/Avatars/ProjectAvatar.stories.tsx | 14 +- .../blocks/Avatars/ProjectAvatar.tsx | 16 +- .../blocks/DangerSettingCard.stories.tsx | 18 +- .../@/components/blocks/DangerSettingCard.tsx | 12 +- .../@/components/blocks/ExportToCSVButton.tsx | 10 +- .../@/components/blocks/FormFieldSetup.tsx | 4 +- .../src/@/components/blocks/Img.stories.tsx | 14 +- .../dashboard/src/@/components/blocks/Img.tsx | 18 +- .../src/@/components/blocks/MobileSidebar.tsx | 6 +- .../blocks/MultiNetworkSelector.stories.tsx | 9 +- .../@/components/blocks/NetworkSelectors.tsx | 54 +- .../components/blocks/RouteDiscoveryCard.tsx | 10 +- .../blocks/SettingsCard.stories.tsx | 36 +- .../src/@/components/blocks/SettingsCard.tsx | 10 +- .../src/@/components/blocks/Sidebar.tsx | 8 +- .../blocks/SidebarLayout.stories.tsx | 4 +- .../src/@/components/blocks/SidebarLayout.tsx | 20 +- .../@/components/blocks/SignatureSelector.tsx | 32 +- .../blocks/SingleNetworkSelector.stories.tsx | 12 +- .../blocks/TokenSelector.stories.tsx | 11 +- .../src/@/components/blocks/TokenSelector.tsx | 38 +- .../blocks/UpsellBannerCard.stories.tsx | 30 +- .../@/components/blocks/UpsellBannerCard.tsx | 38 +- .../src/@/components/blocks/app-footer.tsx | 32 +- .../@/components/blocks/charts/area-chart.tsx | 44 +- .../@/components/blocks/charts/bar-chart.tsx | 25 +- .../src/@/components/blocks/client-only.tsx | 2 +- .../components/blocks/code-segment.client.tsx | 48 +- .../blocks/code-segment.stories.tsx | 26 +- .../@/components/blocks/dismissible-alert.tsx | 4 +- .../components/blocks/distribution-chart.tsx | 6 +- .../blocks/drop-zone/drop-zone.stories.tsx | 20 +- .../components/blocks/drop-zone/drop-zone.tsx | 6 +- .../unexpect-value-error-message.tsx | 6 +- .../blocks/multi-select.stories.tsx | 18 +- .../src/@/components/blocks/multi-select.tsx | 93 +- .../multi-step-status.stories.tsx | 22 +- .../multi-step-status/multi-step-status.tsx | 8 +- .../notifications/notification-button.tsx | 12 +- .../notifications/notification-entry.tsx | 14 +- .../notifications/notification-list.tsx | 22 +- .../blocks/notifications/state/manager.ts | 70 +- .../src/@/components/blocks/pricing-card.tsx | 30 +- .../blocks/select-with-search.stories.tsx | 14 +- .../components/blocks/select-with-search.tsx | 53 +- .../blocks/skeletons/GenericLoadingPage.tsx | 6 +- .../@/components/blocks/upsell-wrapper.tsx | 16 +- .../@/components/blocks/wallet-address.tsx | 31 +- .../src/@/components/color-mode-toggle.tsx | 10 +- .../components/pagination-buttons.stories.tsx | 7 +- .../src/@/components/pagination-buttons.tsx | 20 +- .../@/components/ui/ConfirmationDialog.tsx | 10 +- .../src/@/components/ui/CopyAddressButton.tsx | 4 +- .../src/@/components/ui/CopyButton.tsx | 4 +- .../src/@/components/ui/CopyTextButton.tsx | 4 +- .../@/components/ui/DatePickerWithRange.tsx | 55 +- .../src/@/components/ui/DynamicHeight.tsx | 8 +- .../dashboard/src/@/components/ui/NavLink.tsx | 9 +- .../ui/ScrollShadow/ScrollShadow.tsx | 6 +- .../components/ui/Spinner/Spinner.module.css | 1 - .../src/@/components/ui/Spinner/Spinner.tsx | 4 +- .../src/@/components/ui/accordion.tsx | 6 +- .../src/@/components/ui/alert-dialog.tsx | 13 +- apps/dashboard/src/@/components/ui/alert.tsx | 14 +- apps/dashboard/src/@/components/ui/avatar.tsx | 6 +- .../@/components/ui/background-patterns.tsx | 4 +- apps/dashboard/src/@/components/ui/badge.tsx | 16 +- .../src/@/components/ui/breadcrumb.tsx | 20 +- .../src/@/components/ui/button.stories.tsx | 18 +- apps/dashboard/src/@/components/ui/button.tsx | 36 +- .../src/@/components/ui/calendar.tsx | 49 +- apps/dashboard/src/@/components/ui/card.tsx | 12 +- apps/dashboard/src/@/components/ui/chart.tsx | 22 +- .../src/@/components/ui/checkbox.tsx | 2 +- .../components/ui/code/CodeBlockContainer.tsx | 18 +- .../src/@/components/ui/code/RenderCode.tsx | 4 +- .../src/@/components/ui/code/code.client.tsx | 22 +- .../src/@/components/ui/code/code.server.tsx | 4 +- .../src/@/components/ui/code/code.stories.tsx | 2 +- .../src/@/components/ui/code/getCodeHtml.tsx | 4 +- .../ui/code/plaintext-code.stories.tsx | 2 +- .../@/components/ui/code/plaintext-code.tsx | 4 +- .../src/@/components/ui/decimal-input.tsx | 10 +- apps/dashboard/src/@/components/ui/dialog.tsx | 8 +- apps/dashboard/src/@/components/ui/drawer.tsx | 8 +- .../src/@/components/ui/dropdown-menu.tsx | 20 +- apps/dashboard/src/@/components/ui/form.tsx | 24 +- .../src/@/components/ui/hover-card.tsx | 4 +- .../src/@/components/ui/image-upload.tsx | 9 +- .../src/@/components/ui/inline-code.tsx | 5 +- .../src/@/components/ui/input-otp.tsx | 9 +- apps/dashboard/src/@/components/ui/input.tsx | 2 +- apps/dashboard/src/@/components/ui/label.tsx | 4 +- .../src/@/components/ui/pagination.tsx | 12 +- .../dashboard/src/@/components/ui/popover.tsx | 4 +- .../src/@/components/ui/progress.tsx | 2 +- .../src/@/components/ui/radio-group.tsx | 4 +- .../src/@/components/ui/select.stories.tsx | 4 +- apps/dashboard/src/@/components/ui/select.tsx | 10 +- .../src/@/components/ui/separator.tsx | 6 +- apps/dashboard/src/@/components/ui/sheet.tsx | 16 +- .../dashboard/src/@/components/ui/sidebar.tsx | 155 +- .../src/@/components/ui/skeleton.tsx | 2 +- apps/dashboard/src/@/components/ui/sonner.tsx | 8 +- .../src/@/components/ui/table.stories.tsx | 27 +- apps/dashboard/src/@/components/ui/table.tsx | 20 +- apps/dashboard/src/@/components/ui/tabs.tsx | 28 +- .../src/@/components/ui/text-shimmer.tsx | 5 +- .../dashboard/src/@/components/ui/tooltip.tsx | 8 +- .../src/@/constants/thirdweb-client.server.ts | 2 +- .../src/@/constants/thirdweb.server.ts | 28 +- apps/dashboard/src/@/lib/DashboardRouter.tsx | 12 +- .../@/lib/resolveSchemeWithErrorHandler.ts | 2 +- apps/dashboard/src/@/lib/time.ts | 4 +- .../src/@3rdweb-sdk/react/cache-keys.ts | 96 +- .../react/components/connect-wallet/index.tsx | 96 +- .../react/components/roles/admin-only.tsx | 3 +- .../@3rdweb-sdk/react/hooks/useActivity.ts | 4 +- .../src/@3rdweb-sdk/react/hooks/useApi.ts | 72 +- .../react/hooks/useContractRoles.ts | 16 +- .../hooks/useDashboardContractMetadata.tsx | 6 +- .../react/hooks/useDashboardOwnedNFTs.ts | 22 +- .../react/hooks/useEmbeddedWallets.ts | 36 +- .../src/@3rdweb-sdk/react/hooks/useEngine.ts | 271 +- .../react/hooks/useResolveContractAbi.ts | 12 +- .../src/@3rdweb-sdk/react/hooks/useSplit.ts | 10 +- .../src/@3rdweb-sdk/react/hooks/useVote.ts | 6 +- .../@3rdweb-sdk/react/hooks/useWalletNFTs.ts | 8 +- .../app/(app)/(dashboard)/(bridge)/layout.tsx | 6 +- .../routes/components/client/pagination.tsx | 6 +- .../routes/components/client/search.tsx | 12 +- .../routes/components/client/type.tsx | 22 +- .../routes/components/client/view.tsx | 16 +- .../components/server/routelist-card.tsx | 12 +- .../components/server/routelist-row.tsx | 20 +- .../routes/components/server/routes-table.tsx | 34 +- .../(dashboard)/(bridge)/routes/page.tsx | 10 +- .../app/(app)/(dashboard)/(bridge)/utils.ts | 2 +- .../components/client/FaucetButton.tsx | 119 +- .../components/client/NextSteps.tsx | 4 +- .../components/client/PayModal.tsx | 20 +- .../components/client/add-chain-to-wallet.tsx | 12 +- .../components/client/live-stats.tsx | 29 +- .../components/icons/CreditCardIcon.tsx | 61 +- .../(chainPage)/components/icons/GiftIcon.tsx | 68 +- .../components/server/BuyFundsSection.tsx | 6 +- .../server/ChainOverviewSection.tsx | 14 +- .../components/server/ClaimChainSection.tsx | 6 +- .../components/server/FaucetSection.tsx | 4 +- .../server/SupportedProductsSection.tsx | 6 +- .../components/server/chain-header.tsx | 14 +- .../components/server/cta-card.tsx | 4 +- .../components/server/explorer-section.tsx | 6 +- .../(chain)/[chain_id]/(chainPage)/layout.tsx | 26 +- .../(chainPage)/opengraph-image.tsx | 109 +- .../(chain)/[chain_id]/(chainPage)/page.tsx | 8 +- .../(marketplace)/components/cancel-tab.tsx | 10 +- .../(marketplace)/components/list-button.tsx | 42 +- .../(marketplace)/components/list-form.tsx | 319 +- .../components/listing-drawer.tsx | 34 +- .../components/marketplace-table.tsx | 55 +- .../(marketplace)/components/types.ts | 8 +- .../ContractDirectListingsPage.client.tsx | 2 +- .../ContractDirectListingsPage.tsx | 4 +- .../direct-listings/components/table.tsx | 4 +- .../(marketplace)/direct-listings/page.tsx | 4 +- .../shared-direct-listings-page.tsx | 4 +- .../ContractEnglishAuctionsPage.client.tsx | 2 +- .../ContractEnglishAuctionsPage.tsx | 4 +- .../english-auctions/components/table.tsx | 4 +- .../(marketplace)/english-auctions/page.tsx | 4 +- .../shared-english-auctions-page.tsx | 6 +- .../_components/NFTCards.tsx | 28 +- .../Inputs/ClaimPriceInput.tsx | 22 +- .../Inputs/ClaimerSelection.tsx | 26 +- .../Inputs/CreatorInput.tsx | 4 +- .../Inputs/MaxClaimablePerWalletInput.tsx | 10 +- .../Inputs/MaxClaimableSupplyInput.tsx | 16 +- .../Inputs/PhaseNameInput.tsx | 8 +- .../Inputs/PhaseStartTimeInput.tsx | 8 +- .../claim-conditions-form/hooks.ts | 48 +- .../claim-conditions-form/index.tsx | 154 +- .../claim-conditions-form/phase.tsx | 28 +- .../claim-conditions/claim-conditions.tsx | 6 +- .../claim-conditions/legacy-zod-schema.ts | 34 +- .../quantity-input-with-unlimited.tsx | 16 +- .../reset-claim-eligibility.tsx | 14 +- .../claim-conditions/snapshot-upload.tsx | 50 +- .../_components/csv-data-table.tsx | 12 +- .../redirect-contract-overview.client.tsx | 4 +- .../_hooks/useContractPageMetadata.ts | 4 +- .../_hooks/useResolveContractABI.ts | 6 +- .../_layout/ConfigureCustomChain.tsx | 14 +- .../_layout/contract-metadata.tsx | 6 +- .../_layout/contract-page-layout.client.tsx | 6 +- .../_layout/contract-page-layout.tsx | 14 +- .../_layout/metadata-header.tsx | 29 +- .../_layout/primary-dashboard-button.tsx | 82 +- .../_utils/detectedFeatures/supportedERCs.ts | 2 +- .../_utils/getContractFromParams.ts | 4 +- .../_utils/getContractPageMetadataSetup.ts | 28 +- .../_utils/getContractPageSidebarLinks.ts | 104 +- .../_utils/isAnalyticsSupportedForChain.ts | 2 +- .../components/account-signer.tsx | 10 +- .../components/account-signers.tsx | 10 +- .../account-permissions/page.tsx | 2 +- .../shared-account-permissions-page.tsx | 2 +- .../account/AccountPage.client.tsx | 4 +- .../[contractAddress]/account/AccountPage.tsx | 4 +- .../account/components/account-balance.tsx | 2 +- .../account/components/deposit-native.tsx | 18 +- .../account/components/nfts-owned.tsx | 18 +- .../[contractAddress]/account/page.tsx | 4 +- .../account/shared-account-page.tsx | 8 +- .../accounts/AccountsPage.tsx | 6 +- .../accounts/components/accounts-count.tsx | 2 +- .../accounts/components/accounts-table.tsx | 28 +- .../components/create-account-button.tsx | 18 +- .../[contractAddress]/accounts/page.tsx | 4 +- .../accounts/shared-accounts-page.tsx | 2 +- .../analytics/ContractAnalyticsPage.tsx | 137 +- .../[contractAddress]/analytics/page.tsx | 2 +- .../analytics/shared-analytics-page.tsx | 12 +- .../claim-conditions/page.tsx | 4 +- .../shared-claim-conditions-page.tsx | 4 +- .../code/contract-code-page.client.tsx | 2 +- .../code/contract-code-page.tsx | 4 +- .../[contractAddress]/code/page.tsx | 2 +- .../code/shared-code-page.tsx | 8 +- .../cross-chain/data-table.tsx | 92 +- .../cross-chain/no-crosschain-prompt.tsx | 4 +- .../[contractAddress]/cross-chain/page.tsx | 2 +- .../cross-chain/shared-cross-chain-page.tsx | 28 +- .../cross-chain/single-network-selector.tsx | 22 +- .../[contractAddress]/events/events-feed.tsx | 86 +- .../[contractAddress]/events/page.tsx | 2 +- .../events/shared-events-page.tsx | 4 +- .../explorer/ContractExplorerPage.client.tsx | 2 +- .../explorer/ContractExplorerPage.tsx | 6 +- .../[contractAddress]/explorer/page.tsx | 4 +- .../explorer/shared-explorer-page.tsx | 8 +- .../[chain_id]/[contractAddress]/layout.tsx | 8 +- .../modules/ContractEditModulesPage.tsx | 18 +- .../modules/components/BatchMetadata.tsx | 80 +- .../modules/components/Claimable.tsx | 275 +- .../modules/components/CurrencySelector.tsx | 16 +- .../components/InstalledModulesTable.tsx | 10 +- .../modules/components/Mintable.tsx | 127 +- .../modules/components/ModuleForm.tsx | 106 +- .../components/OpenEditionMetadata.tsx | 60 +- .../modules/components/Royalty.tsx | 120 +- .../modules/components/Transferable.tsx | 68 +- .../components/batchMetadata.stories.tsx | 35 +- .../modules/components/claimable.stories.tsx | 101 +- .../components/getModuleInstalledParams.ts | 4 +- .../components/install-module-params.tsx | 12 +- .../modules/components/mintable.stories.tsx | 90 +- .../components/module-card.stories.tsx | 32 +- .../modules/components/module-card.tsx | 84 +- .../modules/components/module-instance.tsx | 2 +- .../modules/components/moduleContractInfo.ts | 6 +- .../nft/AdvancedNFTMetadataFormGroup.tsx | 10 +- .../components/nft/NFTMediaFormGroup.tsx | 26 +- .../components/nft/PropertiesFormControl.tsx | 14 +- .../components/nft/handleNFTMediaUpload.ts | 6 +- .../openEditionMetadata.stories.tsx | 24 +- .../modules/components/royalty.stories.tsx | 75 +- .../components/transferable.stories.tsx | 62 +- .../[contractAddress]/modules/page.tsx | 4 +- .../modules/shared-modules-page.tsx | 2 +- .../nfts/ContractNFTPage.client.tsx | 2 +- .../nfts/ContractNFTPage.tsx | 6 +- .../nfts/[tokenId]/TokenIdPage.client.tsx | 4 +- .../nfts/[tokenId]/components/airdrop-tab.tsx | 38 +- .../nfts/[tokenId]/components/burn-tab.tsx | 20 +- .../nfts/[tokenId]/components/claim-tab.tsx | 32 +- .../[tokenId]/components/mint-supply-tab.tsx | 34 +- .../[tokenId]/components/transfer-tab.tsx | 34 +- .../components/update-metadata-form.tsx | 78 +- .../components/update-metadata-tab.tsx | 11 +- .../[contractAddress]/nfts/[tokenId]/page.tsx | 6 +- .../nfts/[tokenId]/shared-nfts-token-page.tsx | 16 +- .../nfts/[tokenId]/token-id.tsx | 95 +- .../nfts/[tokenId]/useNftDrawerTabs.tsx | 62 +- .../components/batch-lazy-mint-button.tsx | 26 +- .../nfts/components/claim-button.tsx | 58 +- .../nfts/components/lazy-mint-button.tsx | 14 +- .../nfts/components/lazy-mint-form.tsx | 58 +- .../nfts/components/mint-button.tsx | 14 +- .../nfts/components/mint-form.tsx | 64 +- .../nfts/components/reveal-button.tsx | 48 +- .../components/shared-metadata-button.tsx | 14 +- .../nfts/components/shared-metadata-form.tsx | 50 +- .../nfts/components/supply-cards.tsx | 12 +- .../nfts/components/table.tsx | 102 +- .../[contractAddress]/nfts/page.tsx | 4 +- .../nfts/shared-nfts-page.tsx | 6 +- .../[contractAddress]/opengraph-image.tsx | 100 +- .../overview/ContractOverviewPage.tsx | 34 +- .../overview/components/Analytics.tsx | 45 +- .../overview/components/BuildYourApp.tsx | 8 +- .../overview/components/ContractChecklist.tsx | 42 +- .../components/LatestEvents.stories.tsx | 30 +- .../overview/components/LatestEvents.tsx | 46 +- .../components/MarketplaceDetails.tsx | 88 +- .../overview/components/NFTDetails.tsx | 14 +- .../components/PermissionsTable.stories.tsx | 12 +- .../overview/components/PermissionsTable.tsx | 37 +- .../overview/components/listing-stats.tsx | 8 +- .../overview/components/published-by-ui.tsx | 18 +- .../components/published-by.server.tsx | 2 +- .../overview/components/stat-card.tsx | 16 +- .../contract-overview-page.client.tsx | 10 +- .../[chain_id]/[contractAddress]/page.tsx | 2 +- .../ContractPermissionsPage.client.tsx | 6 +- .../permissions/ContractPermissionsPage.tsx | 10 +- .../components/contract-permission.tsx | 83 +- .../permissions/components/index.tsx | 22 +- .../components/permissions-editor.tsx | 64 +- .../[contractAddress]/permissions/page.tsx | 4 +- .../permissions/shared-permissions-page.tsx | 10 +- .../proposals/ContractProposalsPage.tsx | 6 +- .../proposals/components/delegate-button.tsx | 12 +- .../proposals/components/proposal-button.tsx | 40 +- .../proposals/components/proposal.tsx | 48 +- .../[contractAddress]/proposals/page.tsx | 4 +- .../proposals/shared-proposals-page.tsx | 4 +- .../public-pages/_components/PageHeader.tsx | 8 +- .../_components/PublicPageConnectButton.tsx | 26 +- .../supply-claimed-progress.stories.tsx | 2 +- .../_components/supply-claimed-progress.tsx | 6 +- .../public-pages/_components/token-price.tsx | 4 +- .../_components/ContractHeader.stories.tsx | 136 +- .../erc20/_components/ContractHeader.tsx | 73 +- .../erc20/_components/PayEmbedSection.tsx | 22 +- .../erc20/_components/PriceChart.tsx | 63 +- .../erc20/_components/RecentTransfers.tsx | 60 +- .../claim-tokens/claim-tokens-ui.stories.tsx | 47 +- .../claim-tokens/claim-tokens-ui.tsx | 101 +- .../contract-analytics/contract-analytics.tsx | 25 +- .../erc20/_hooks/useTokenPriceData.ts | 12 +- .../erc20/_hooks/useTokenTransfers.ts | 10 +- .../erc20/_utils/getCurrencyMeta.ts | 9 +- .../public-pages/erc20/erc20.tsx | 41 +- .../public-pages/nft/client-utils.ts | 64 +- .../public-pages/nft/format.ts | 2 +- .../public-pages/nft/nft-page-layout.tsx | 4 +- .../public-pages/nft/nft-page.tsx | 54 +- .../buy-edition-drop.client.tsx | 64 +- .../buy-nft-drop/buy-nft-drop-card.server.tsx | 8 +- .../buy-nft-drop/buy-nft-drop-ui.client.tsx | 93 +- .../buy-nft-drop/buy-nft-drop-ui.stories.tsx | 145 +- .../buy-nft-drop/buy-nft-drop.client.tsx | 57 +- .../public-pages/nft/overview/nfts-grid.tsx | 81 +- .../public-pages/nft/overview/tabs.tsx | 6 +- .../nft/token-viewer/token-viewer.tsx | 113 +- .../settings/ContractSettingsPage.client.tsx | 2 +- .../settings/ContractSettingsPage.tsx | 20 +- .../settings/components/detected-state.tsx | 18 +- .../settings/components/metadata.tsx | 64 +- .../settings/components/platform-fees.tsx | 44 +- .../settings/components/primary-sale.tsx | 32 +- .../settings/components/royalties.tsx | 61 +- .../[contractAddress]/settings/page.tsx | 4 +- .../settings/shared-settings-page.tsx | 6 +- .../[contractAddress]/shared-layout.tsx | 39 +- .../shared-overview-page.tsx | 28 +- .../sources/ContractSourcesPage.tsx | 50 +- .../[contractAddress]/sources/page.tsx | 2 +- .../sources/shared-sources-page.tsx | 4 +- .../split/ContractSplitPage.tsx | 20 +- .../split/components/distribute-button.tsx | 19 +- .../[contractAddress]/split/page.tsx | 4 +- .../split/shared-split-page.tsx | 4 +- .../tokens/ContractTokensPage.client.tsx | 4 +- .../tokens/ContractTokensPage.tsx | 4 +- .../tokens/components/airdrop-button.tsx | 16 +- .../tokens/components/airdrop-form.tsx | 20 +- .../tokens/components/airdrop-upload.tsx | 24 +- .../tokens/components/burn-button.tsx | 48 +- .../tokens/components/claim-button.tsx | 53 +- .../tokens/components/mint-button.tsx | 42 +- .../tokens/components/supply-layout.tsx | 6 +- .../tokens/components/supply.tsx | 8 +- .../tokens/components/transfer-button.tsx | 52 +- .../[contractAddress]/tokens/page.tsx | 4 +- .../[contractAddress]/tokens/shared-page.tsx | 8 +- .../(chain)/[chain_id]/tx/[txHash]/page.tsx | 10 +- .../(chain)/[chain_id]/tx/layout.tsx | 6 +- .../(chain)/chainlist/[chain_type]/page.tsx | 14 +- .../chainlist/components/client/filters.tsx | 64 +- .../components/client/pagination.tsx | 6 +- .../chainlist/components/client/search.tsx | 12 +- .../chainlist/components/client/view.tsx | 16 +- .../components/server/add-chain-button.tsx | 8 +- .../components/server/chain-table.tsx | 18 +- .../components/server/chainlist-card.tsx | 10 +- .../components/server/chainlist-row.tsx | 26 +- .../(dashboard)/(chain)/chainlist/layout.tsx | 6 +- .../(dashboard)/(chain)/chainlist/page.tsx | 6 +- .../(chain)/components/client/star-button.tsx | 26 +- .../(chain)/components/server/chain-icon.tsx | 10 +- .../server/icons/ConnectSDKIcon.tsx | 10 +- .../components/server/icons/ContractIcon.tsx | 10 +- .../components/server/icons/EngineIcon.tsx | 10 +- .../components/server/icons/InsightIcon.tsx | 10 +- .../components/server/icons/NebulaIcon.tsx | 10 +- .../components/server/icons/PayIcon.tsx | 10 +- .../components/server/icons/RPCIcon.tsx | 10 +- .../server/icons/SmartAccountIcon.tsx | 10 +- .../(chain)/components/server/products.ts | 48 +- .../app/(app)/(dashboard)/(chain)/utils.ts | 1008 +- .../contracts/deploy/[compiler_uri]/page.tsx | 6 +- .../(dashboard)/contracts/deploy/page.tsx | 8 +- .../(app)/(dashboard)/contracts/layout.tsx | 6 +- .../contracts/publish/[publish_uri]/page.tsx | 24 +- .../(dashboard)/contracts/publish/page.tsx | 8 +- .../(dashboard)/explore/[category]/page.tsx | 24 +- .../app/(app)/(dashboard)/explore/layout.tsx | 6 +- .../app/(app)/(dashboard)/explore/page.tsx | 4 +- .../src/app/(app)/(dashboard)/layout.tsx | 4 +- .../profile/[addressOrEns]/ProfileUI.tsx | 8 +- .../components/PublishedContractTable.tsx | 51 +- .../components/profile-header.tsx | 6 +- .../components/published-contracts.tsx | 6 +- .../[addressOrEns]/opengraph-image.tsx | 32 +- .../profile/[addressOrEns]/page.tsx | 10 +- .../[addressOrEns]/resolveAddressAndEns.tsx | 2 +- .../app/(app)/(dashboard)/profile/layout.tsx | 6 +- .../[version]/opengraph-image.tsx | 18 +- .../[contract_id]/[version]/page.tsx | 14 +- .../components/breadcrumbs.client.tsx | 12 +- .../components/module-list.client.tsx | 2 +- .../[publisher]/[contract_id]/layout.tsx | 8 +- .../[contract_id]/opengraph-image.tsx | 18 +- .../[publisher]/[contract_id]/page.tsx | 14 +- ...tPublishedContractsWithPublisherMapping.ts | 2 +- .../publishedContractOGImageTemplate.tsx | 99 +- .../contract-actions-published.client.tsx | 6 +- .../components/contract-header.tsx | 4 +- .../components/contract-info.tsx | 2 +- .../components/publish-based-deploy.tsx | 4 +- .../components/uri-based-deploy.tsx | 22 +- .../components/version-selector.tsx | 8 +- .../(dashboard)/published-contract/layout.tsx | 6 +- .../(dashboard)/published-contract/page.tsx | 2 +- .../utils/module-base-64.ts | 2 +- .../app/(app)/(dashboard)/styleguide/page.tsx | 26 +- .../components/create-ticket.action.ts | 44 +- .../components/create-ticket.client.tsx | 40 +- .../support/create-ticket/page.tsx | 4 +- .../app/(app)/(dashboard)/support/layout.tsx | 6 +- .../app/(app)/(dashboard)/support/page.tsx | 60 +- .../(dashboard)/tools/components/share.tsx | 14 +- .../hex-converter/components/HexConverter.tsx | 35 +- .../(dashboard)/tools/hex-converter/page.tsx | 2 +- .../components/Keccak256Converter.tsx | 30 +- .../tools/keccak256-converter/page.tsx | 2 +- .../app/(app)/(dashboard)/tools/layout.tsx | 18 +- .../components/TransactionSimulator.tsx | 86 +- .../tools/transaction-simulator/page.tsx | 2 +- .../components/UnixTimeConverter.tsx | 22 +- .../tools/unixtime-converter/page.tsx | 4 +- .../wei-converter/components/WeiConverter.tsx | 44 +- .../(dashboard)/tools/wei-converter/page.tsx | 2 +- .../_components/StripeRedirectErrorPage.tsx | 8 +- .../checkout/[team_slug]/[sku]/page.tsx | 8 +- .../(app)/(stripe)/stripe-redirect/page.tsx | 2 +- .../src/app/(app)/(stripe)/utils/billing.ts | 40 +- .../src/app/(app)/(stripe)/utils/build-url.ts | 8 +- .../account/components/AccountHeader.tsx | 44 +- .../components/AccountHeaderUI.stories.tsx | 22 +- .../account/components/AccountHeaderUI.tsx | 50 +- .../(app)/account/components/SearchInput.tsx | 6 +- .../contracts/DeployedContractsPageHeader.tsx | 7 +- .../_components/DeployViaCLIOrImportCard.tsx | 15 +- .../_components/DeployedContractsPage.tsx | 22 +- .../getSortedDeployedContracts.tsx | 6 +- .../account/devices/AccountDevicesPage.tsx | 2 +- .../src/app/(app)/account/layout.tsx | 30 +- .../overview/AccountTeamsUI.stories.tsx | 12 +- .../(app)/account/overview/AccountTeamsUI.tsx | 28 +- apps/dashboard/src/app/(app)/account/page.tsx | 6 +- .../account/settings/AccountSettingsPage.tsx | 50 +- .../AccountSettingsPageUI.stories.tsx | 42 +- .../settings/AccountSettingsPageUI.tsx | 162 +- .../app/(app)/account/settings/getAccount.ts | 4 +- .../src/app/(app)/account/settings/page.tsx | 2 +- .../(app)/account/wallets/LinkWalletUI.tsx | 48 +- .../account/wallets/LinkWalletsUI.stories.tsx | 24 +- .../src/app/(app)/account/wallets/page.tsx | 2 +- .../app/(app)/api/auth/ensure-login/route.ts | 10 +- .../src/app/(app)/api/lib/getAuthToken.ts | 4 +- .../api/testnet-faucet/can-claim/route.ts | 8 +- .../api/testnet-faucet/claim/claim-amount.ts | 4 +- .../(app)/api/testnet-faucet/claim/route.ts | 36 +- .../EnsureValidConnectedWalletLoginClient.tsx | 2 +- .../SecondaryNav/ResourcesDropdownButton.tsx | 14 +- .../Header/SecondaryNav/SecondaryNav.tsx | 20 +- .../SecondaryNav/account-button.client.tsx | 40 +- .../components/MobileBurgerMenuButton.tsx | 56 +- .../app/(app)/components/TeamPlanBadge.tsx | 18 +- .../app/(app)/components/ThirdwebMiniLogo.tsx | 20 +- .../src/app/(app)/components/autoconnect.tsx | 2 +- .../(app)/components/sdk-component-theme.ts | 36 +- .../src/app/(app)/drops/[slug]/data.ts | 28 +- .../src/app/(app)/drops/[slug]/layout.tsx | 2 +- .../src/app/(app)/drops/[slug]/mint-ui.tsx | 85 +- .../(app)/drops/[slug]/opengraph-image.tsx | 106 +- .../src/app/(app)/drops/[slug]/page.tsx | 20 +- .../team/[team_slug]/add-members/page.tsx | 4 +- .../get-started/team/[team_slug]/layout.tsx | 10 +- .../get-started/team/[team_slug]/page.tsx | 2 +- .../select-plan/_components/plan-selector.tsx | 28 +- .../team/[team_slug]/select-plan/page.tsx | 4 +- .../[invite_id]/JoinTeamPage.stories.tsx | 4 +- .../[team_slug]/[invite_id]/JoinTeamPage.tsx | 27 +- .../team/[team_slug]/[invite_id]/page.tsx | 4 +- apps/dashboard/src/app/(app)/layout.tsx | 30 +- .../src/app/(app)/login/LoginPage.tsx | 78 +- .../src/app/(app)/login/auth-actions.ts | 40 +- .../LinkWalletPrompt.stories.tsx | 16 +- .../LinkWalletPrompt/LinkWalletPrompt.tsx | 24 +- .../LoginOrSignup/LoginOrSignup.stories.tsx | 12 +- .../LoginOrSignup/LoginOrSignup.tsx | 89 +- .../VerifyEmail/VerifyEmail.stories.tsx | 36 +- .../onboarding/VerifyEmail/VerifyEmail.tsx | 54 +- .../onboarding/account-onboarding-ui.tsx | 38 +- .../onboarding/account-onboarding.stories.tsx | 24 +- .../login/onboarding/account-onboarding.tsx | 21 +- .../login/onboarding/onboarding-layout.tsx | 40 +- .../InviteTeamMembers.stories.tsx | 10 +- .../team-onboarding/InviteTeamMembers.tsx | 62 +- .../team-onboarding/TeamInfoForm.stories.tsx | 14 +- .../team-onboarding/TeamInfoForm.tsx | 52 +- .../team-onboarding/team-onboarding.tsx | 30 +- apps/dashboard/src/app/(app)/login/page.tsx | 6 +- .../app/(app)/login/verifyTurnstileToken.ts | 10 +- .../(app)/project-showcase/[slug]/page.tsx | 18 +- .../src/app/(app)/project-showcase/page.tsx | 54 +- apps/dashboard/src/app/(app)/providers.tsx | 8 +- .../BillingAlertBanner.stories.tsx | 2 +- .../_components/BillingAlertBannersUI.tsx | 22 +- .../(team)/_components/Changelog.tsx | 9 +- .../_components/FreePlanUpsellBannerUI.tsx | 12 +- .../(team)/_components/TotalSponsoredCard.tsx | 24 +- .../(team)/_components/TransactionsCard.tsx | 20 +- .../invite-team-members-button.tsx | 4 +- .../_components/usage-category-details.tsx | 10 +- .../(app)/team/[team_slug]/(team)/layout.tsx | 42 +- .../(app)/team/[team_slug]/(team)/page.tsx | 18 +- .../[team_slug]/(team)/~/analytics/page.tsx | 164 +- .../(team)/~/audit-log/_components/entry.tsx | 8 +- .../(team)/~/audit-log/_components/list.tsx | 20 +- .../[team_slug]/(team)/~/audit-log/layout.tsx | 6 +- .../[team_slug]/(team)/~/audit-log/page.tsx | 2 +- .../components/EcosystemAnalyticsPage.tsx | 22 +- .../EcosystemWalletUsersChartCard.stories.tsx | 20 +- .../EcosystemWalletUsersChartCard.tsx | 38 +- .../(active)/analytics/components/Summary.tsx | 8 +- .../[slug]/(active)/analytics/page.tsx | 6 +- .../components/EcosystemSlugLayout.tsx | 16 +- .../components/ecosystem-header.client.tsx | 94 +- .../configuration/add-partner/page.tsx | 10 +- .../client/AddPartnerDialogButton.tsx | 4 +- .../client/EcosystemPermissionsPage.tsx | 10 +- .../client/add-partner-form.client.tsx | 28 +- .../client/allowed-operations-section.tsx | 92 +- .../client/auth-options-form.client.tsx | 122 +- .../integration-permissions-toggle.client.tsx | 32 +- .../components/client/partner-form.client.tsx | 64 +- .../client/update-partner-form.client.tsx | 32 +- .../server/auth-options-section.tsx | 4 +- .../server/ecosystem-partners-section.tsx | 8 +- .../integration-permissions-section.tsx | 8 +- .../components/server/partners-table.tsx | 42 +- .../(active)/configuration/constants.ts | 128 +- .../hooks/fetchPartnerDetails.ts | 2 +- .../configuration/hooks/use-add-partner.ts | 20 +- .../configuration/hooks/use-delete-partner.ts | 4 +- .../hooks/use-update-ecosystem.ts | 6 +- .../configuration/hooks/use-update-partner.ts | 16 +- .../partners/[partner_id]/edit/page.tsx | 12 +- .../[slug]/(active)/hooks/use-ecosystem.ts | 10 +- .../[slug]/(active)/hooks/use-partners.ts | 10 +- .../~/ecosystem/[slug]/(active)/layout.tsx | 2 +- .../~/ecosystem/[slug]/(active)/page.tsx | 4 +- .../ecosystem/create/EcosystemCreatePage.tsx | 2 +- .../create/actions/create-ecosystem.ts | 12 +- .../client/create-ecosystem-form.client.tsx | 50 +- .../create/components/pricing-card.tsx | 4 +- .../(team)/~/ecosystem/create/page.tsx | 4 +- .../~/ecosystem/hooks/use-ecosystem-list.ts | 12 +- .../[team_slug]/(team)/~/ecosystem/page.tsx | 16 +- .../(team)/~/projects/TeamProjectsPage.tsx | 94 +- .../(team)/~/settings/SettingsLayout.tsx | 14 +- .../settings-cards/domain-verification.tsx | 51 +- .../_components/sidebar/SidebarLink.tsx | 8 +- .../sidebar/TeamSettingsSidebar.tsx | 16 +- .../_components/sidebar/TeamsMobileNav.tsx | 4 +- .../sidebar/getTeamSettingsLinks.tsx | 24 +- .../components/PlanInfoCard.client.tsx | 10 +- .../components/PlanInfoCard.stories.tsx | 50 +- .../billing/components/PlanInfoCard.tsx | 74 +- .../credit-balance-section.client.tsx | 42 +- .../(team)/~/settings/billing/page.tsx | 18 +- .../settings/credits/SettingsCreditsPage.tsx | 10 +- .../(team)/~/settings/credits/page.tsx | 4 +- .../general/GeneralSettingsPage.stories.tsx | 16 +- .../~/settings/general/Sidebar.stories.tsx | 14 +- .../general/TeamGeneralSettingsPage.tsx | 36 +- .../general/TeamGeneralSettingsPageUI.tsx | 114 +- .../(team)/~/settings/general/updateTeam.ts | 10 +- .../invoices/components/billing-filter.tsx | 6 +- .../invoices/components/billing-history.tsx | 56 +- .../(team)/~/settings/invoices/page.tsx | 10 +- .../[team_slug]/(team)/~/settings/layout.tsx | 4 +- .../members/InviteSection.stories.tsx | 88 +- .../~/settings/members/InviteSection.tsx | 118 +- .../members/ManageInvitesSection.stories.tsx | 24 +- .../settings/members/ManageInvitesSection.tsx | 46 +- .../settings/members/ManageMembersSection.tsx | 46 +- .../TeamMembersSettingsPage.stories.tsx | 26 +- .../members/TeamMembersSettingsPage.tsx | 26 +- .../(team)/~/settings/members/_common.tsx | 16 +- .../settings/members/getRecommendedMembers.ts | 2 +- .../(team)/~/settings/members/page.tsx | 14 +- .../notifications/NotificationsPage.tsx | 6 +- .../[team_slug]/(team)/~/settings/page.tsx | 6 +- .../~/usage/account-abstraction/page.tsx | 8 +- .../[team_slug]/(team)/~/usage/layout.tsx | 14 +- .../components/SponsoredTransactionsTable.tsx | 48 +- .../SponsoredTransactionsTableUI.stories.tsx | 80 +- .../SponsoredTransactionsTableUI.tsx | 92 +- .../team/[team_slug]/(team)/~/usage/page.tsx | 10 +- .../~/usage/rpc/components/count-graph.tsx | 36 +- .../~/usage/rpc/components/rate-graph.tsx | 38 +- .../[team_slug]/(team)/~/usage/rpc/page.tsx | 16 +- .../usage/storage/components/GuideSection.tsx | 8 +- .../~/usage/storage/components/SDKSection.tsx | 50 +- .../(team)/~/usage/storage/page.tsx | 10 +- .../(team)/~/usage/storage/your-files.tsx | 52 +- .../[project_slug]/(sidebar)/assets/cards.tsx | 29 +- .../assets/create/_common/PageHeader.tsx | 2 +- .../assets/create/_common/SocialUrls.tsx | 24 +- .../create/_common/download-file-button.tsx | 6 +- .../assets/create/_common/file-preview.tsx | 14 +- .../assets/create/_common/step-card.tsx | 8 +- .../assets/create/nft/_common/form.ts | 6 +- .../assets/create/nft/_common/pages.ts | 4 +- .../nft-collection-info-fieldset.tsx | 58 +- .../assets/create/nft/create-nft-page-ui.tsx | 55 +- .../assets/create/nft/create-nft-page.tsx | 120 +- .../assets/create/nft/launch/launch-nft.tsx | 82 +- .../(sidebar)/assets/create/nft/page.tsx | 17 +- .../create/nft/sales/sales-settings.tsx | 30 +- .../batch-upload-instructions.tsx | 27 +- .../batch-upload/batch-upload-nfts.tsx | 176 +- .../upload-nfts/batch-upload/process-files.ts | 64 +- .../assets/create/nft/upload-nfts/schema.ts | 32 +- .../upload-nfts/single-upload/attributes.tsx | 24 +- .../single-upload/single-upload-nft.tsx | 103 +- .../nft/upload-nfts/upload-nfts.stories.tsx | 38 +- .../create/nft/upload-nfts/upload-nfts.tsx | 24 +- .../assets/create/token/_common/form.ts | 30 +- .../create/token/create-token-page-impl.tsx | 80 +- .../create/token/create-token-page.client.tsx | 46 +- .../token/create-token-page.stories.tsx | 20 +- .../token/distribution/token-airdrop.tsx | 76 +- .../token/distribution/token-distribution.tsx | 35 +- .../create/token/distribution/token-sale.tsx | 34 +- .../create/token/launch/launch-token.tsx | 70 +- .../(sidebar)/assets/create/token/page.tsx | 14 +- .../token/token-info/token-info-fieldset.tsx | 57 +- .../[project_slug]/(sidebar)/assets/page.tsx | 30 +- .../EngineCloudBarChartCard.stories.tsx | 4 +- .../EngineCloudBarChartCardUI.tsx | 42 +- .../components/EngineCloudChartCard/index.tsx | 2 +- .../ProjectFTUX/ClientIDSection.tsx | 8 +- .../ProjectFTUX/IntegrateAPIKeyCodeTabs.tsx | 8 +- .../ProjectFTUX/ProjectFTUX.stories.tsx | 4 +- .../components/ProjectFTUX/ProjectFTUX.tsx | 147 +- .../ProjectFTUX/SecretKeySection.tsx | 8 +- .../components/ProjectSidebarLayout.tsx | 30 +- .../RpcMethodBarChartCard.stories.tsx | 6 +- .../RpcMethodBarChartCardUI.tsx | 42 +- .../RpcMethodBarChartCard/index.tsx | 2 +- .../Transactions/TransactionCharts.tsx | 27 +- .../components/Transactions/index.tsx | 6 +- .../WaitingForIntegrationCard.tsx | 12 +- .../components/footer/FooterLinksSection.tsx | 14 +- .../account-abstraction/AAFooterSection.tsx | 44 +- .../AccountAbstractionPage.tsx | 35 +- .../account-abstraction/factories/page.tsx | 52 +- .../connect/account-abstraction/layout.tsx | 20 +- .../connect/account-abstraction/page.tsx | 22 +- .../account-abstraction/search-params.ts | 4 +- .../account-abstraction/settings/page.tsx | 10 +- .../in-app-wallets/_components/footer.tsx | 46 +- .../in-app-wallets/_components/header.tsx | 2 +- .../connect/in-app-wallets/layout.tsx | 10 +- .../(sidebar)/connect/in-app-wallets/page.tsx | 10 +- .../connect/in-app-wallets/settings/page.tsx | 10 +- .../connect/in-app-wallets/users/page.tsx | 8 +- .../connect/universal-bridge/layout.tsx | 60 +- .../connect/universal-bridge/page.tsx | 24 +- .../universal-bridge/settings/page.tsx | 18 +- .../webhooks/components/webhooks.client.tsx | 62 +- .../universal-bridge/webhooks/page.tsx | 2 +- .../(sidebar)/contracts/page.tsx | 46 +- .../engine/cloud/analytics/analytics-page.tsx | 10 +- .../engine/cloud/analytics/filter.tsx | 6 +- .../engine/cloud/analytics/ftux.client.tsx | 50 +- .../cloud/analytics/send-test-tx.client.tsx | 79 +- .../engine/cloud/analytics/summary.tsx | 16 +- .../cloud/analytics/tx-chart/tx-chart-ui.tsx | 46 +- .../cloud/analytics/tx-chart/tx-chart.tsx | 20 +- .../cloud/analytics/tx-table/tx-table-ui.tsx | 92 +- .../cloud/analytics/tx-table/tx-table.tsx | 22 +- .../cloud/explorer/components/scalar.tsx | 4 +- .../(sidebar)/engine/cloud/layout.tsx | 16 +- .../(sidebar)/engine/cloud/lib/analytics.ts | 30 +- .../(sidebar)/engine/cloud/lib/utils.ts | 4 +- .../engine/cloud/lib/vault.client.ts | 74 +- .../(sidebar)/engine/cloud/page.tsx | 24 +- .../create-server-wallet.client.tsx | 52 +- .../server-wallets/components/try-it-out.tsx | 62 +- .../engine/cloud/server-wallets/page.tsx | 12 +- .../wallet-table/wallet-table-ui.client.tsx | 47 +- .../wallet-table/wallet-table.tsx | 12 +- .../(sidebar)/engine/cloud/tx/[id]/layout.tsx | 2 +- .../(sidebar)/engine/cloud/tx/[id]/page.tsx | 8 +- .../cloud/tx/[id]/transaction-details-ui.tsx | 34 +- .../create-vault-account.client.tsx | 38 +- .../cloud/vault/components/key-management.tsx | 19 +- .../components/list-access-tokens.client.tsx | 80 +- .../components/rotate-admin-key.client.tsx | 60 +- .../(sidebar)/engine/cloud/vault/page.tsx | 2 +- .../(general)/EngineFooterCard.stories.tsx | 6 +- .../dedicated/(general)/_components.tsx | 16 +- .../import/EngineImportPage.stories.tsx | 6 +- .../(general)/import/EngineImportPage.tsx | 38 +- .../dedicated/(general)/import/page.tsx | 2 +- .../engine/dedicated/(general)/layout.tsx | 22 +- .../engine-instances-table.stories.tsx | 34 +- .../overview/engine-instances-table.tsx | 378 +- .../(general)/overview/engine-list.tsx | 10 +- .../engine/dedicated/(general)/page.tsx | 6 +- .../_components/EngineErrorPage.tsx | 2 +- .../_components/EnginePageLayout.tsx | 26 +- .../_components/EnsureEnginePermission.tsx | 16 +- .../[engineId]/_components/version.tsx | 64 +- .../components/access-tokens-table.tsx | 62 +- .../components/add-access-token-button.tsx | 28 +- .../components/add-keypair-button.tsx | 56 +- .../components/engine-access-tokens.tsx | 50 +- .../components/keypairs-table.tsx | 46 +- .../[engineId]/access-tokens/page.tsx | 4 +- .../admins/components/add-admin-button.tsx | 28 +- .../admins/components/admins-table.tsx | 66 +- .../admins/components/engine-admins.tsx | 12 +- .../(instance)/[engineId]/admins/page.tsx | 4 +- .../components/EngineAlertDialogForm.tsx | 30 +- .../alerts/components/EngineAlertsPage.tsx | 4 +- .../components/EngineDeleteAlertModal.tsx | 10 +- .../components/ManageEngineAlerts.stories.tsx | 32 +- .../alerts/components/ManageEngineAlerts.tsx | 72 +- .../components/RecentEngineAlerts.stories.tsx | 10 +- .../alerts/components/RecentEngineAlerts.tsx | 18 +- .../(instance)/[engineId]/alerts/page.tsx | 2 +- .../components/circle-config.tsx | 39 +- .../configuration/components/cors.tsx | 12 +- .../components/engine-configuration.tsx | 10 +- .../components/engine-wallet-config.tsx | 30 +- .../configuration/components/ip-allowlist.tsx | 12 +- .../components/kms-aws-config.tsx | 61 +- .../components/kms-gcp-config.tsx | 89 +- .../[engineId]/configuration/page.tsx | 6 +- .../add-contract-subscription-button.tsx | 72 +- .../contract-subscriptions-table.tsx | 90 +- .../engine-contract-subscription.tsx | 31 +- .../contract-subscriptions/page.tsx | 4 +- .../explorer/components/engine-explorer.tsx | 4 +- .../explorer/components/swagger-ui.css | 214 +- .../(instance)/[engineId]/explorer/page.tsx | 4 +- .../(instance)/[engineId]/layout.tsx | 20 +- .../components/EngineSystemMetrics.tsx | 8 +- .../metrics/components/ErrorRate.tsx | 30 +- .../metrics/components/Healthcheck.tsx | 4 +- .../metrics/components/StatusCodes.tsx | 30 +- .../(instance)/[engineId]/metrics/page.tsx | 6 +- .../components/backend-wallets-table.tsx | 180 +- .../create-backend-wallet-button.tsx | 104 +- .../overview/components/engine-overview.tsx | 56 +- .../import-backend-wallet-button.tsx | 123 +- .../components/transaction-timeline.tsx | 74 +- .../components/transactions-table.tsx | 210 +- .../dedicated/(instance)/[engineId]/page.tsx | 8 +- .../components/add-relayer-button.tsx | 44 +- .../relayers/components/engine-relayer.tsx | 14 +- .../relayers/components/relayers-table.tsx | 102 +- .../(instance)/[engineId]/relayers/page.tsx | 4 +- .../create-wallet-credential-button.tsx | 16 +- .../components/credential-form.tsx | 35 +- .../credential-type-fields/circle.tsx | 27 +- .../edit-wallet-credential-button.tsx | 38 +- .../wallet-credentials/components/types.ts | 2 +- .../components/wallet-credentials-table.tsx | 14 +- .../components/wallet-credentials.tsx | 16 +- .../[engineId]/wallet-credentials/page.tsx | 4 +- .../components/add-webhook-button.tsx | 28 +- .../webhooks/components/engine-webhooks.tsx | 10 +- .../webhooks/components/webhooks-table.tsx | 64 +- .../(instance)/[engineId]/webhooks/page.tsx | 4 +- .../_utils/getEngineAccessPermission.ts | 6 +- .../dedicated/_utils/getEngineInstance.ts | 12 +- .../_utils/getEngineInstancePageMeta.ts | 8 +- .../dedicated/_utils/getEngineInstances.ts | 2 +- .../[project_slug]/(sidebar)/engine/page.tsx | 2 +- .../(sidebar)/hooks/project-contracts.ts | 12 +- .../(sidebar)/insight/blueprint-card.tsx | 20 +- .../(sidebar)/insight/insight-ftux.tsx | 22 +- .../[project_slug]/(sidebar)/insight/page.tsx | 34 +- .../[project_slug]/(sidebar)/layout.tsx | 28 +- .../analytics/fetch-nebula-analytics.tsx | 6 +- .../analytics/nebula-analytics-filter.tsx | 6 +- .../analytics/nebula-analytics-page.tsx | 24 +- .../analytics/nebula-analytics-ui.stories.tsx | 16 +- .../analytics/nebula-analytics-ui.tsx | 76 +- .../nebula/components/analytics/utils.ts | 2 +- .../(sidebar)/nebula/layout.tsx | 44 +- .../(sidebar)/nebula/nebula-ftux.tsx | 20 +- .../[project_slug]/(sidebar)/nebula/page.tsx | 10 +- .../[project_slug]/(sidebar)/page.tsx | 196 +- .../ProjectGeneralSettingsPage.stories.tsx | 46 +- .../settings/ProjectGeneralSettingsPage.tsx | 364 +- .../(sidebar)/settings/page.tsx | 10 +- .../webhooks/components/BasicInfoStep.tsx | 27 +- .../components/CreateWebhookModal.tsx | 86 +- .../webhooks/components/FilterDetailsStep.tsx | 87 +- .../webhooks/components/RelativeTime.tsx | 5 +- .../webhooks/components/ReviewStep.tsx | 14 +- .../webhooks/components/WebhooksTable.tsx | 64 +- .../webhooks/hooks/useAbiProcessing.ts | 19 +- .../webhooks/hooks/useTestWebhook.ts | 8 +- .../(sidebar)/webhooks/page.tsx | 16 +- .../(sidebar)/webhooks/utils/abiUtils.ts | 10 +- .../webhooks/utils/webhookPayloadUtils.ts | 18 +- .../(sidebar)/webhooks/utils/webhookTypes.ts | 46 +- .../(marketplace)/direct-listings/page.tsx | 8 +- .../(marketplace)/english-auctions/page.tsx | 8 +- .../account-permissions/page.tsx | 6 +- .../[contractAddress]/account/page.tsx | 8 +- .../[contractAddress]/accounts/page.tsx | 8 +- .../[contractAddress]/analytics/page.tsx | 4 +- .../claim-conditions/page.tsx | 6 +- .../[contractAddress]/code/page.tsx | 4 +- .../[contractAddress]/cross-chain/page.tsx | 4 +- .../[contractAddress]/events/page.tsx | 4 +- .../[contractAddress]/explorer/page.tsx | 4 +- .../[contractAddress]/layout.tsx | 20 +- .../[contractAddress]/modules/page.tsx | 4 +- .../[contractAddress]/nfts/[tokenId]/page.tsx | 6 +- .../[contractAddress]/nfts/page.tsx | 4 +- .../[contractAddress]/page.tsx | 6 +- .../[contractAddress]/permissions/page.tsx | 6 +- .../[contractAddress]/proposals/page.tsx | 6 +- .../[contractAddress]/settings/page.tsx | 8 +- .../[contractAddress]/sources/page.tsx | 6 +- .../[contractAddress]/split/page.tsx | 8 +- .../[contractAddress]/tokens/page.tsx | 8 +- .../[contractAddress]/utils.ts | 2 +- .../src/app/(app)/team/[team_slug]/layout.tsx | 2 +- .../components/Analytics/BarChart.stories.tsx | 22 +- .../team/components/Analytics/BarChart.tsx | 36 +- .../CombinedBarChartCard.stories.tsx | 30 +- .../Analytics/CombinedBarChartCard.tsx | 16 +- .../CombinedStatBreakdownCard.stories.tsx | 68 +- .../Analytics/CombinedStatBreakdownCard.tsx | 8 +- .../Analytics/EmptyState.stories.tsx | 2 +- .../team/components/Analytics/EmptyState.tsx | 44 +- .../Analytics/EmptyStateCard.stories.tsx | 4 +- .../components/Analytics/EmptyStateCard.tsx | 20 +- .../components/Analytics/PieChart.stories.tsx | 12 +- .../team/components/Analytics/PieChart.tsx | 14 +- .../Analytics/PieChartCard.stories.tsx | 42 +- .../components/Analytics/PieChartCard.tsx | 20 +- .../components/Analytics/Stat.stories.tsx | 6 +- .../(app)/team/components/Analytics/Stat.tsx | 6 +- .../Analytics/StatBreakdown.stories.tsx | 42 +- .../components/Analytics/StatBreakdown.tsx | 24 +- .../Analytics/StatBreakdownCard.stories.tsx | 92 +- .../Analytics/StatBreakdownCard.tsx | 6 +- .../HeaderLoggedOut.stories.tsx | 2 +- .../HeaderLoggedOut/HeaderLoggedOut.tsx | 12 +- .../ProjectSelectorMobileMenuButton.tsx | 22 +- .../TeamHeader/ProjectSelectorUI.tsx | 20 +- .../components/TeamHeader/SearchInput.tsx | 6 +- .../TeamAndProjectSelectorPopoverButton.tsx | 45 +- .../TeamHeader/TeamHeaderUI.stories.tsx | 26 +- .../components/TeamHeader/TeamHeaderUI.tsx | 72 +- .../components/TeamHeader/TeamSelectionUI.tsx | 42 +- .../TeamSelectorMobileMenuButton.tsx | 24 +- .../team-header-logged-in.client.tsx | 50 +- .../components/TeamHeader/team-header.tsx | 12 +- .../TeamHeader/team-verified-icon.tsx | 6 +- .../last-visited-page/SaveLastVisitedPage.tsx | 4 +- apps/dashboard/src/app/(app)/team/page.tsx | 2 +- .../app/(app)/team/~/[[...paths]]/page.tsx | 20 +- .../components/client/Providers.client.tsx | 2 +- .../client/UniversalBridgeEmbed.tsx | 10 +- apps/dashboard/src/app/bridge/constants.ts | 20 +- apps/dashboard/src/app/bridge/layout.tsx | 4 +- apps/dashboard/src/app/bridge/page.tsx | 20 +- apps/dashboard/src/app/global-error.tsx | 4 +- apps/dashboard/src/app/pay/[id]/page.tsx | 32 +- .../components/client/PayPageEmbed.client.tsx | 18 +- .../client/PaymentLinkForm.client.tsx | 132 +- apps/dashboard/src/app/pay/constants.ts | 20 +- apps/dashboard/src/app/pay/layout.tsx | 10 +- apps/dashboard/src/app/pay/page.tsx | 32 +- .../src/components/CustomChat/ChatBar.tsx | 30 +- .../CustomChat/CustomChatButton.tsx | 18 +- .../CustomChat/CustomChatContent.tsx | 74 +- .../src/components/CustomChat/CustomChats.tsx | 50 +- .../src/components/CustomChat/Reasoning.tsx | 19 +- .../analytics/date-range-selector.tsx | 58 +- .../analytics/empty-chart-state.tsx | 24 +- .../analytics/interval-selector.tsx | 2 +- .../components/analytics/range-selector.tsx | 19 +- .../src/components/buttons/MismatchButton.tsx | 106 +- .../buttons/TransactionButton.stories.tsx | 74 +- .../components/buttons/TransactionButton.tsx | 32 +- .../src/components/cmd-k-search/index.tsx | 68 +- .../ConfigureNetworkForm.tsx | 128 +- .../ConfigureNetworkModal.tsx | 10 +- .../configure-networks/ConfigureNetworks.tsx | 12 +- .../configure-networks/Form/ChainIdInput.tsx | 14 +- .../configure-networks/Form/IconUpload.tsx | 18 +- .../Form/NetworkIdInput.tsx | 25 +- .../configure-networks/Form/RpcInput.tsx | 12 +- .../add-to-project-card.stories.tsx | 24 +- .../add-to-project-card.tsx | 48 +- .../contract-metadata-fieldset.tsx | 41 +- .../contract-deploy-form/custom-contract.tsx | 215 +- .../deploy-context-modal.tsx | 32 +- ...ular-contract-default-modules-fieldset.tsx | 68 +- .../contract-deploy-form/param.tsx | 14 +- .../platform-fee-fieldset.tsx | 20 +- .../primary-sale-fieldset.tsx | 6 +- .../contract-deploy-form/royalty-fieldset.tsx | 18 +- .../sequential-token-id-fieldset.tsx | 10 +- .../contract-deploy-form/split-fieldset.tsx | 34 +- .../trusted-forwarders-fieldset.tsx | 8 +- .../contract-publish-form/abi-selector.tsx | 8 +- .../contract-params-fieldset.tsx | 69 +- .../contract-publish-form/custom-factory.tsx | 30 +- .../decoded-input-array-fieldset.tsx | 37 +- .../decoded-bytes-input/decoded-input-set.tsx | 37 +- .../decoded-bytes-input/decoded-input.tsx | 16 +- .../ref-bytes-input-fieldset.tsx | 20 +- .../decoded-bytes-input/ref-bytes-input.tsx | 34 +- .../contract-publish-form/default-factory.tsx | 12 +- .../external-links-fieldset.tsx | 12 +- .../external-links-input.tsx | 14 +- .../factory-fieldset.tsx | 20 +- .../impl-params-fieldset.tsx | 14 +- .../contract-publish-form/index.tsx | 161 +- .../landing-fieldset.tsx | 70 +- .../networks-fieldset.tsx | 12 +- .../ref-input-impl-fieldset.tsx | 20 +- .../ref-input-impl.tsx | 32 +- .../ref-contract-input/ref-input-fieldset.tsx | 22 +- .../ref-contract-input/ref-input.tsx | 32 +- .../contract-table/index.tsx | 10 +- .../fetch-contracts-with-versions.ts | 12 +- .../fetchPublishedContractsFromDeploy.ts | 4 +- .../components/contract-components/hooks.ts | 45 +- .../import-contract/modal.tsx | 60 +- .../published-contract/index.tsx | 157 +- .../markdown-renderer.stories.tsx | 9 +- .../published-contract/markdown-renderer.tsx | 162 +- .../publisher/publisher-header.tsx | 16 +- .../shared/contract-id-image.tsx | 6 +- .../shared/sources-accordion.tsx | 23 +- .../shared/sources-panel.tsx | 6 +- .../contract-components/tables/cells.tsx | 26 +- .../tables/contract-table.stories.tsx | 30 +- .../tables/contract-table.tsx | 93 +- .../tables/show-more-button.tsx | 6 +- .../contract-function-comment.tsx | 11 +- .../contract-functions/contract-function.tsx | 114 +- .../contract-functions/contract-functions.tsx | 16 +- .../interactive-abi-function.tsx | 88 +- .../forms/properties.shared.tsx | 24 +- .../table/table-columns/cells/media-cell.tsx | 4 +- .../dashboard/StepsCard.stories.tsx | 43 +- .../src/components/dashboard/StepsCard.tsx | 13 +- .../InAppWalletUsersChartCard.stories.tsx | 16 +- .../Analytics/InAppWalletUsersChartCard.tsx | 44 +- .../embedded-wallets/Analytics/Summary.tsx | 28 +- .../embedded-wallets/Analytics/index.tsx | 20 +- .../InAppWalletSettingsUI.stories.tsx | 18 +- .../embedded-wallets/Configure/index.tsx | 163 +- .../sms-country-select/country-selector.tsx | 15 +- .../Configure/sms-country-select/utils.ts | 506 +- .../embedded-wallets/Users/SearchInput.tsx | 6 +- .../embedded-wallets/Users/index.tsx | 54 +- .../explore/contract-card/index.tsx | 30 +- .../components/explore/contract-row/index.tsx | 16 +- .../components/explore/publisher/index.tsx | 6 +- .../explore/upsells/deploy-your-own.tsx | 6 +- .../explore/upsells/publish-submit.tsx | 14 +- .../help/contact-forms/account/index.tsx | 12 +- .../connect/AffectedAreaInput.tsx | 14 +- .../help/contact-forms/connect/index.tsx | 40 +- .../help/contact-forms/contracts/index.tsx | 26 +- .../help/contact-forms/engine/index.tsx | 12 +- .../help/contact-forms/other/index.tsx | 12 +- .../shared/SupportForm_AttachmentUploader.tsx | 6 +- .../shared/SupportForm_DescriptionInput.tsx | 8 +- .../shared/SupportForm_SelectInput.tsx | 6 +- .../shared/SupportForm_TeamSelection.tsx | 9 +- .../shared/SupportForm_TelegramInput.tsx | 8 +- .../shared/SupportForm_TextInput.tsx | 6 +- .../shared/SupportForm_UnityInput.tsx | 14 +- .../src/components/icons/ChainIcon.tsx | 12 +- .../icons/brand-icons/DiscordIcon.tsx | 5 +- .../icons/brand-icons/DotNetIcon.tsx | 6 +- .../icons/brand-icons/GithubIcon.tsx | 6 +- .../icons/brand-icons/InstagramIcon.tsx | 6 +- .../icons/brand-icons/LinkedinIcon.tsx | 6 +- .../icons/brand-icons/ReactIcon.tsx | 6 +- .../icons/brand-icons/RedditIcon.tsx | 6 +- .../icons/brand-icons/TelegramIcon.tsx | 4 +- .../icons/brand-icons/TiktokIcon.tsx | 6 +- .../icons/brand-icons/TypeScriptIcon.tsx | 6 +- .../icons/brand-icons/UnityIcon.tsx | 6 +- .../icons/brand-icons/UnrealIcon.tsx | 6 +- .../components/icons/brand-icons/XIcon.tsx | 4 +- .../icons/brand-icons/YoutubeIcon.tsx | 6 +- .../components/inputs/BasisPointsInput.tsx | 9 +- .../src/components/ipfs-upload/button.tsx | 10 +- .../src/components/not-found-page.tsx | 18 +- .../components/notices/AnnouncementBanner.tsx | 12 +- .../onboarding/ApplyForOpCreditsForm.tsx | 54 +- .../onboarding/ApplyForOpCreditsModal.tsx | 57 +- .../src/components/onboarding/PlanCard.tsx | 6 +- .../onboarding/applyOpSponsorship.ts | 4 +- .../pay/PayAnalytics/PayAnalytics.tsx | 26 +- .../pay/PayAnalytics/PayEmbedFTUX.tsx | 28 +- .../components/PayAnalyticsFilter.tsx | 32 +- .../components/PayCustomersTable.tsx | 22 +- .../components/PayNewCustomers.tsx | 26 +- .../components/PaymentHistory.tsx | 44 +- .../components/PaymentsSuccessRate.tsx | 31 +- .../pay/PayAnalytics/components/Payouts.tsx | 24 +- .../components/TotalPayVolume.tsx | 30 +- .../components/TotalVolumePieChart.tsx | 44 +- .../src/components/pay/PayConfig.tsx | 44 +- .../src/components/pay/RouteDiscovery.tsx | 47 +- .../selects/CustomChainRenderer.tsx | 19 +- .../selects/NetworkSelectDropdown.tsx | 18 +- .../selects/NetworkSelectorButton.tsx | 91 +- .../CancelPlanModal/CancelPlanModal.tsx | 30 +- .../settings/Account/Billing/CreditsItem.tsx | 10 +- .../Account/Billing/GatedSwitch.stories.tsx | 10 +- .../settings/Account/Billing/GatedSwitch.tsx | 16 +- .../settings/Account/Billing/PlanCard.tsx | 10 +- .../settings/Account/Billing/Pricing.tsx | 46 +- .../SubscriptionCoupons/Coupons.stories.tsx | 101 +- .../Billing/SubscriptionCoupons/Coupons.tsx | 21 +- .../SubscriptionCoupons/CouponsClient.tsx | 40 +- .../Billing/SubscriptionCoupons/CouponsUI.tsx | 30 +- .../Account/Billing/formatToDollars.tsx | 2 +- .../Account/Billing/planToTierRecord.ts | 6 +- .../renew-subscription-button.tsx | 16 +- .../settings/Account/Notifications.tsx | 24 +- .../components/settings/ApiKeys/Alerts.tsx | 8 +- .../Create/CreateApiKeyModal.stories.tsx | 18 +- .../ApiKeys/Create/LazyCreateAPIKeyDialog.tsx | 2 +- .../settings/ApiKeys/Create/index.tsx | 116 +- .../settings/ApiKeys/validations.ts | 10 +- .../AuthorizedWalletRevokeModal.tsx | 6 +- .../AuthorizedWalletsTable.tsx | 16 +- .../components/shared/CurrencySelector.tsx | 28 +- .../src/components/shared/DeprecatedAlert.tsx | 25 +- .../src/components/shared/DocLink.tsx | 4 +- .../src/components/shared/FileInput.tsx | 28 +- .../src/components/shared/TWTable.tsx | 63 +- .../AccountAbstractionSummary.tsx | 16 +- ...SponsoredTransactionsChartCard.stories.tsx | 12 +- .../SponsoredTransactionsChartCard.tsx | 46 +- .../TotalSponsoredChartCard.stories.tsx | 16 +- .../TotalSponsoredChartCard.tsx | 48 +- .../AccountAbstractionAnalytics/index.tsx | 12 +- .../AccountAbstractionAnalytics/storyUtils.ts | 4 +- .../AccountFactories/account-cell.tsx | 6 +- .../AccountFactories/factory-contracts.tsx | 24 +- .../smart-wallets/AccountFactories/index.tsx | 18 +- .../SponsorshipPolicies/index.tsx | 105 +- apps/dashboard/src/constants/currencies.ts | 26 +- apps/dashboard/src/constants/fee-config.ts | 8 +- apps/dashboard/src/constants/mappings.ts | 14 +- apps/dashboard/src/constants/schemas.ts | 10 +- apps/dashboard/src/contexts/error-handler.tsx | 34 +- apps/dashboard/src/contexts/map-chains.tsx | 10 +- .../solidity-inputs/address-input.tsx | 12 +- .../components/solidity-inputs/bool-input.tsx | 8 +- .../solidity-inputs/bytes-input.tsx | 4 +- .../components/solidity-inputs/helpers.ts | 20 +- .../components/solidity-inputs/index.tsx | 10 +- .../components/solidity-inputs/int-input.tsx | 12 +- .../components/solidity-inputs/raw-input.tsx | 4 +- .../solidity-inputs/string-input.tsx | 11 +- .../solidity-inputs/tuple-input.tsx | 4 +- .../src/contract-ui/hooks/permissions.ts | 6 +- .../hooks/useContractFunctionComment.ts | 14 +- .../hooks/useContractFunctionSelectors.ts | 6 +- .../contract-ui/hooks/useContractSources.ts | 14 +- .../tabs/code/components/code-overview.tsx | 290 +- .../core-ui/batch-upload/batch-lazy-mint.tsx | 98 +- .../src/core-ui/batch-upload/batch-table.tsx | 39 +- .../lazy-mint-form/select-option.tsx | 4 +- .../src/core-ui/batch-upload/upload-step.tsx | 12 +- .../analytics/contract-event-breakdown.ts | 4 +- .../src/data/analytics/contract-events.ts | 2 +- .../analytics/contract-function-breakdown.ts | 4 +- .../data/analytics/contract-transactions.ts | 2 +- .../analytics/contract-wallet-analytics.ts | 2 +- apps/dashboard/src/data/analytics/hooks.ts | 76 +- apps/dashboard/src/data/explore.ts | 136 +- apps/dashboard/src/hooks/chains/allChains.ts | 8 +- apps/dashboard/src/hooks/tokens/tokens.ts | 11 +- apps/dashboard/src/hooks/useClipboard.ts | 2 +- apps/dashboard/src/hooks/useCsvUpload.ts | 23 +- .../dashboard/src/hooks/useTxNotifications.ts | 2 +- apps/dashboard/src/instrumentation-client.ts | 10 +- apps/dashboard/src/lib/cookie.ts | 2 + .../dashboard/src/lib/defineDashboardChain.ts | 2 +- .../src/lib/deployment/template-values.ts | 4 +- apps/dashboard/src/lib/ens.ts | 8 +- .../src/lib/project-showcase-constants.ts | 350 +- apps/dashboard/src/lib/redis.ts | 2 +- apps/dashboard/src/lib/rpc.ts | 2 +- apps/dashboard/src/lib/sdk.ts | 2 +- apps/dashboard/src/lib/search.ts | 34 +- apps/dashboard/src/lib/time.ts | 8 +- apps/dashboard/src/lib/wallet/nfts/alchemy.ts | 10 +- apps/dashboard/src/lib/wallet/nfts/moralis.ts | 14 +- apps/dashboard/src/lib/wallet/nfts/types.ts | 72 +- apps/dashboard/src/middleware.ts | 10 +- .../src/stores/SyncStoreToCookies.tsx | 2 +- apps/dashboard/src/stores/chainStores.tsx | 6 +- apps/dashboard/src/stories/stubs.ts | 160 +- apps/dashboard/src/stories/utils.tsx | 8 +- .../src/theme/chakra-componens/skeleton.ts | 10 +- apps/dashboard/src/theme/colors.ts | 132 +- apps/dashboard/src/theme/index.ts | 430 +- apps/dashboard/src/theme/typography.ts | 18 +- apps/dashboard/src/tw-components/button.tsx | 26 +- apps/dashboard/src/tw-components/card.tsx | 28 +- apps/dashboard/src/tw-components/form.tsx | 10 +- apps/dashboard/src/tw-components/heading.tsx | 6 +- apps/dashboard/src/tw-components/link.tsx | 8 +- .../dashboard/src/tw-components/nft-media.tsx | 26 +- apps/dashboard/src/tw-components/text.tsx | 8 +- apps/dashboard/src/utils/batch.ts | 37 +- apps/dashboard/src/utils/date-utils.ts | 2 +- apps/dashboard/src/utils/errorParser.tsx | 2 +- apps/dashboard/src/utils/number.ts | 8 +- apps/dashboard/src/utils/pricing.tsx | 72 +- apps/dashboard/src/utils/zeroAddress.ts | 2 +- apps/dashboard/tailwind.config.js | 102 +- apps/dashboard/tsconfig.json | 34 +- apps/login/.gitignore | 41 - apps/login/README.md | 36 - apps/login/components.json | 21 - apps/login/eslint.config.mjs | 16 - apps/login/next.config.ts | 7 - apps/login/package.json | 49 - apps/login/postcss.config.mjs | 8 - apps/login/public/placeholder.svg | 1 - apps/login/src/actions/create-code.ts | 63 - apps/login/src/actions/siwe.ts | 58 - apps/login/src/api/login/config.ts | 144 - apps/login/src/app/api/jwks/route.ts | 18 - apps/login/src/app/api/token/route.ts | 269 - apps/login/src/app/authorize/page.tsx | 92 - apps/login/src/app/favicon.ico | Bin 15406 -> 0 bytes apps/login/src/app/globals.css | 115 - apps/login/src/app/layout.tsx | 44 - apps/login/src/components/login-form.tsx | 207 - apps/login/src/components/permission-card.tsx | 210 - apps/login/src/components/theme-toggle.tsx | 39 - apps/login/src/components/ui/button.tsx | 56 - apps/login/src/components/ui/card.tsx | 86 - .../login/src/components/ui/dropdown-menu.tsx | 200 - apps/login/src/components/ui/input.tsx | 22 - apps/login/src/components/ui/label.tsx | 26 - apps/login/src/components/ui/select.tsx | 160 - apps/login/src/components/ui/separator.tsx | 31 - apps/login/src/components/ui/sonner.tsx | 31 - apps/login/src/components/ui/switch.tsx | 29 - apps/login/src/components/ui/tooltip.tsx | 30 - apps/login/src/lib/dev-mode.ts | 26 - apps/login/src/lib/keys.ts | 34 - apps/login/src/lib/oauth.ts | 47 - apps/login/src/lib/siwe-server.ts | 45 - apps/login/src/lib/thirdweb-client.ts | 8 - apps/login/src/lib/urls.ts | 21 - apps/login/src/lib/utils.ts | 6 - apps/login/src/lib/vercel.ts | 9 - apps/login/src/providers/theme-provider.tsx | 10 - .../login/src/providers/thirdweb-provider.tsx | 9 - apps/login/tailwind.config.ts | 61 - apps/login/tsconfig.json | 27 - apps/nebula/.eslintrc.js | 132 +- apps/nebula/biome.json | 15 +- apps/nebula/components.json | 16 +- apps/nebula/knip.json | 8 +- apps/nebula/next-sitemap.config.js | 10 +- apps/nebula/next.config.ts | 44 +- apps/nebula/package.json | 39 +- apps/nebula/postcss.config.js | 2 +- .../src/@/components/blocks/ChainIcon.tsx | 11 +- .../@/components/blocks/FormFieldSetup.tsx | 4 +- .../src/@/components/blocks/Img.stories.tsx | 16 +- apps/nebula/src/@/components/blocks/Img.tsx | 18 +- .../markdown-renderer.stories.tsx | 9 +- .../MarkdownRenderer/markdown-renderer.tsx | 159 +- .../blocks/MultiNetworkSelector.stories.tsx | 11 +- .../@/components/blocks/NetworkSelectors.tsx | 52 +- .../blocks/SingleNetworkSelector.stories.tsx | 14 +- .../src/@/components/blocks/auto-connect.tsx | 2 +- .../blocks/buttons/MismatchButton.tsx | 102 +- .../buttons/TransactionButton.stories.tsx | 70 +- .../blocks/buttons/TransactionButton.tsx | 26 +- .../src/@/components/blocks/client-only.tsx | 2 +- .../blocks/multi-select.stories.tsx | 20 +- .../src/@/components/blocks/multi-select.tsx | 94 +- .../blocks/select-with-search.stories.tsx | 16 +- .../components/blocks/select-with-search.tsx | 54 +- .../blocks/skeletons/GenericLoadingPage.tsx | 6 +- .../@/components/blocks/wallet-address.tsx | 29 +- .../src/@/components/color-mode-toggle.tsx | 10 +- .../src/@/components/ui/CopyTextButton.tsx | 4 +- .../src/@/components/ui/DynamicHeight.tsx | 8 +- apps/nebula/src/@/components/ui/NavLink.tsx | 8 +- .../ui/ScrollShadow/ScrollShadow.tsx | 6 +- .../components/ui/Spinner/Spinner.module.css | 1 - .../src/@/components/ui/Spinner/Spinner.tsx | 4 +- apps/nebula/src/@/components/ui/avatar.tsx | 6 +- apps/nebula/src/@/components/ui/badge.tsx | 16 +- .../src/@/components/ui/button.stories.tsx | 20 +- apps/nebula/src/@/components/ui/button.tsx | 36 +- .../components/ui/code/CodeBlockContainer.tsx | 20 +- .../src/@/components/ui/code/RenderCode.tsx | 4 +- .../src/@/components/ui/code/code.client.tsx | 22 +- .../src/@/components/ui/code/code.stories.tsx | 4 +- .../src/@/components/ui/code/getCodeHtml.tsx | 4 +- .../ui/code/plaintext-code.stories.tsx | 4 +- .../@/components/ui/code/plaintext-code.tsx | 4 +- .../src/@/components/ui/decimal-input.tsx | 10 +- apps/nebula/src/@/components/ui/dialog.tsx | 8 +- apps/nebula/src/@/components/ui/form.tsx | 24 +- .../nebula/src/@/components/ui/hover-card.tsx | 4 +- .../@/components/ui/image-upload-button.tsx | 16 +- .../src/@/components/ui/inline-code.tsx | 5 +- apps/nebula/src/@/components/ui/input.tsx | 2 +- apps/nebula/src/@/components/ui/label.tsx | 4 +- apps/nebula/src/@/components/ui/popover.tsx | 4 +- .../src/@/components/ui/select.stories.tsx | 4 +- apps/nebula/src/@/components/ui/select.tsx | 10 +- apps/nebula/src/@/components/ui/separator.tsx | 6 +- apps/nebula/src/@/components/ui/sheet.tsx | 16 +- apps/nebula/src/@/components/ui/skeleton.tsx | 2 +- apps/nebula/src/@/components/ui/sonner.tsx | 8 +- .../src/@/components/ui/table.stories.tsx | 27 +- apps/nebula/src/@/components/ui/table.tsx | 20 +- apps/nebula/src/@/components/ui/tabs.tsx | 26 +- .../src/@/components/ui/text-shimmer.tsx | 5 +- apps/nebula/src/@/components/ui/tooltip.tsx | 8 +- .../src/@/config/sdk-component-theme.ts | 36 +- apps/nebula/src/@/constants/nebula-client.ts | 16 +- apps/nebula/src/@/hooks/chains.ts | 8 +- apps/nebula/src/@/hooks/use-clipboard.tsx | 2 +- apps/nebula/src/@/icons/NebulaIcon.tsx | 10 +- apps/nebula/src/@/lib/DashboardRouter.tsx | 12 +- .../@/lib/resolveSchemeWithErrorHandler.ts | 2 +- apps/nebula/src/@/storybook/utils.tsx | 4 +- apps/nebula/src/@/utils/authToken.ts | 2 +- apps/nebula/src/@/utils/isAuthTokenValid.ts | 4 +- apps/nebula/src/@/utils/isLoggedIntoNebula.ts | 4 +- apps/nebula/src/@/utils/map-chains.ts | 10 +- apps/nebula/src/@/utils/nebula-chains.ts | 2 +- .../src/@/utils/verifyTurnstileToken.ts | 10 +- apps/nebula/src/app/(app)/api/chat.ts | 32 +- apps/nebula/src/app/(app)/api/feedback.ts | 10 +- .../src/app/(app)/api/fetchWithAuthToken.ts | 6 +- apps/nebula/src/app/(app)/api/session.ts | 32 +- .../src/app/(app)/chat/[session_id]/page.tsx | 4 +- .../chat/history/ChatHistoryPage.stories.tsx | 25 +- .../(app)/chat/history/ChatHistoryPage.tsx | 36 +- .../src/app/(app)/chat/history/page.tsx | 2 +- apps/nebula/src/app/(app)/chat/page.tsx | 2 +- .../AssetsSection/AssetsSection.stories.tsx | 48 +- .../AssetsSection/AssetsSection.tsx | 55 +- .../src/app/(app)/components/ChatBar.tsx | 196 +- .../app/(app)/components/ChatPageContent.tsx | 130 +- .../components/ChatPageLayout.stories.tsx | 10 +- .../app/(app)/components/ChatPageLayout.tsx | 4 +- .../src/app/(app)/components/ChatSidebar.tsx | 76 +- .../app/(app)/components/ChatSidebarLink.tsx | 20 +- .../app/(app)/components/Chatbar.stories.tsx | 119 +- .../app/(app)/components/Chats.stories.tsx | 52 +- .../nebula/src/app/(app)/components/Chats.tsx | 76 +- .../EmptyStateChatPageContent.stories.tsx | 20 +- .../components/EmptyStateChatPageContent.tsx | 30 +- .../ExecuteTransactionCard.stories.tsx | 25 +- .../components/ExecuteTransactionCard.tsx | 34 +- .../app/(app)/components/MessageActions.tsx | 34 +- .../(app)/components/NebulaConnectButton.tsx | 58 +- .../src/app/(app)/components/NebulaImage.tsx | 26 +- .../app/(app)/components/NebulaMobileNav.tsx | 16 +- .../Reasoning/Reasoning.stories.tsx | 4 +- .../(app)/components/Reasoning/Reasoning.tsx | 19 +- .../components/Swap/SwapCards.stories.tsx | 52 +- .../app/(app)/components/Swap/SwapCards.tsx | 72 +- .../src/app/(app)/components/Swap/common.tsx | 45 +- .../TransactionsSection.stories.tsx | 90 +- .../TransactionsSection.tsx | 28 +- .../src/app/(app)/data/examplePrompts.ts | 18 +- apps/nebula/src/app/(app)/layout.tsx | 6 +- apps/nebula/src/app/(app)/page.tsx | 6 +- .../nebula/src/app/(app)/utils/getChainIds.ts | 2 +- apps/nebula/src/app/layout.tsx | 16 +- .../src/app/login/NebulaConnectEmbedLogin.tsx | 48 +- apps/nebula/src/app/login/NebulaLoginPage.tsx | 36 +- apps/nebula/src/app/login/auth-actions.ts | 46 +- apps/nebula/src/app/login/page.tsx | 2 +- .../src/app/move-funds/connect-button.tsx | 10 +- .../src/app/move-funds/dashboard-client.ts | 14 +- apps/nebula/src/app/move-funds/move-funds.tsx | 265 +- apps/nebula/src/app/move-funds/page.tsx | 4 +- apps/nebula/src/app/not-found.tsx | 14 +- apps/nebula/src/app/providers.tsx | 6 +- apps/nebula/src/instrumentation-client.ts | 10 +- apps/nebula/tailwind.config.js | 102 +- apps/nebula/tsconfig.json | 30 +- apps/playground-web/.eslintrc.json | 14 +- apps/playground-web/biome.json | 4 + apps/playground-web/components.json | 14 +- apps/playground-web/knip.json | 5 +- apps/playground-web/next.config.mjs | 44 +- apps/playground-web/package.json | 33 +- apps/playground-web/postcss.config.js | 2 +- apps/playground-web/src/app/AppSidebar.tsx | 14 +- apps/playground-web/src/app/MobileHeader.tsx | 18 +- .../connect/account-abstraction/5792/page.tsx | 34 +- .../connect/account-abstraction/7702/page.tsx | 20 +- .../account-abstraction/connect/page.tsx | 30 +- .../account-abstraction/native-aa/page.tsx | 10 +- .../account-abstraction/sponsor/page.tsx | 40 +- .../src/app/connect/auth/page.tsx | 52 +- .../app/connect/auth/server/actions/auth.ts | 8 +- .../src/app/connect/blockchain-api/page.tsx | 68 +- .../connect/in-app-wallet/ecosystem/page.tsx | 20 +- .../src/app/connect/in-app-wallet/page.tsx | 32 +- .../connect/in-app-wallet/sponsor/page.tsx | 10 +- .../src/app/connect/pay/backend/layout.tsx | 6 +- .../src/app/connect/pay/backend/page.tsx | 10 +- .../connect/pay/backend/reference/page.tsx | 8 +- .../src/app/connect/pay/commerce/page.tsx | 34 +- .../app/connect/pay/components/CodeGen.tsx | 10 +- .../src/app/connect/pay/embed/LeftSection.tsx | 142 +- .../app/connect/pay/embed/RightSection.tsx | 36 +- .../src/app/connect/pay/embed/page.tsx | 20 +- .../src/app/connect/pay/fund-wallet/page.tsx | 30 +- .../src/app/connect/pay/page.tsx | 8 +- .../src/app/connect/pay/transactions/page.tsx | 58 +- .../connect/sign-in/button/LeftSection.tsx | 109 +- .../connect/sign-in/button/RightSection.tsx | 98 +- .../src/app/connect/sign-in/button/page.tsx | 36 +- .../connect/sign-in/components/CodeGen.tsx | 32 +- .../sign-in/components/CollapsibleSection.tsx | 8 +- .../sign-in/components/ColorFormGroup.tsx | 22 +- .../sign-in/components/ColorInput/index.tsx | 8 +- .../components/InAppWalletFormGroup.tsx | 12 +- .../sign-in/components/LocaleFormControl.tsx | 26 +- .../sign-in/components/WalletsSelection.tsx | 26 +- .../src/app/connect/sign-in/embed/page.tsx | 10 +- .../src/app/connect/sign-in/headless/page.tsx | 30 +- .../src/app/connect/social/page.tsx | 22 +- .../src/app/connect/ui/chain/page.tsx | 8 +- .../src/app/connect/ui/nft/page.tsx | 8 +- .../src/app/connect/ui/page.tsx | 8 +- .../src/app/connect/ui/token/page.tsx | 10 +- .../src/app/connect/ui/wallet/page.tsx | 9 +- .../app/engine/_hooks/useEngineTxStatus.ts | 61 +- apps/playground-web/src/app/engine/actions.ts | 9 +- .../airdrop/_components/airdrop-card.tsx | 26 +- .../airdrop/_components/airdrop-code.tsx | 2 +- .../airdrop/_components/airdrop-preview.tsx | 16 +- .../src/app/engine/airdrop/constants.ts | 10 +- .../src/app/engine/airdrop/page.tsx | 2 +- .../minting/_components/mint-preview.tsx | 112 +- .../src/app/engine/minting/constants.ts | 4 +- .../src/app/engine/minting/page.tsx | 2 +- .../webhooks/_components/webhooks-preview.tsx | 44 +- .../src/app/engine/webhooks/constants.ts | 8 +- .../src/app/engine/webhooks/page.tsx | 2 +- apps/playground-web/src/app/hooks/chains.ts | 4 +- .../aggregate-parameter-input.client.tsx | 37 +- .../blueprint-playground.client.tsx | 156 +- .../src/app/insight/[blueprint_slug]/page.tsx | 10 +- .../src/app/insight/insightBlueprints.ts | 72 +- .../playground-web/src/app/insight/layout.tsx | 8 +- apps/playground-web/src/app/insight/page.tsx | 16 +- apps/playground-web/src/app/insight/utils.ts | 4 +- apps/playground-web/src/app/layout.tsx | 12 +- apps/playground-web/src/app/login/_sdk_.ts | 10 +- apps/playground-web/src/app/login/page.tsx | 2 +- apps/playground-web/src/app/navLinks.ts | 72 +- apps/playground-web/src/app/otherLinks.ts | 6 +- apps/playground-web/src/app/providers.tsx | 5 +- .../src/components/ClientOnly.tsx | 2 +- .../5792-get-capabilities.tsx | 13 +- .../account-abstraction/5792-send-calls.tsx | 59 +- .../7702-smart-account.tsx | 43 +- .../connect-smart-account.tsx | 22 +- .../sponsored-tx-zksync.tsx | 42 +- .../account-abstraction/sponsored-tx.tsx | 42 +- .../src/components/auth/auth-button.tsx | 20 +- .../src/components/auth/auth-hook.tsx | 20 +- .../src/components/auth/basic-auth-hook.tsx | 2 +- .../src/components/auth/basic-auth.tsx | 2 +- .../src/components/auth/gated-content.tsx | 10 +- .../auth/smart-account-auth-button.tsx | 10 +- .../components/auth/smart-account-auth.tsx | 2 +- .../read-contract-extension.tsx | 6 +- .../blockchain-api/read-contract-raw.tsx | 4 +- .../blockchain-api/watch-event-preview.tsx | 6 +- .../write-contract-extension.tsx | 64 +- .../blockchain-api/write-contract-raw.tsx | 60 +- .../src/components/blocks/APIHeader.tsx | 8 +- .../src/components/blocks/ChainIcon.tsx | 10 +- .../components/blocks/NetworkSelectors.tsx | 18 +- .../src/components/blocks/multi-select.tsx | 59 +- .../src/components/blocks/upload-image.tsx | 15 +- .../src/components/code/RenderCode.tsx | 6 +- .../src/components/code/code-example.tsx | 8 +- .../src/components/code/code.client.tsx | 8 +- .../src/components/code/code.tsx | 4 +- .../src/components/code/getCodeHtml.tsx | 4 +- .../headless-ui/account-examples.tsx | 50 +- .../headless-ui/account-previews.tsx | 8 +- .../components/headless-ui/chain-examples.tsx | 20 +- .../components/headless-ui/chain-previews.tsx | 4 +- .../components/headless-ui/nft-examples.tsx | 44 +- .../components/headless-ui/nft-previews.tsx | 14 +- .../components/headless-ui/token-examples.tsx | 32 +- .../components/headless-ui/token-previews.tsx | 10 +- .../headless-ui/wallet-examples.tsx | 22 +- .../headless-ui/wallet-previews.tsx | 3 + .../in-app-wallet/custom-login-form.tsx | 45 +- .../in-app-wallet/profile-sections.tsx | 36 +- .../src/components/in-app-wallet/profiles.tsx | 12 +- .../components/in-app-wallet/sponsored-tx.tsx | 22 +- .../src/components/pay/direct-payment.tsx | 12 +- .../src/components/pay/transaction-button.tsx | 40 +- .../src/components/sign-in/hooks.tsx | 4 +- .../src/components/sign-in/modal.tsx | 16 +- .../src/components/social/social-profiles.tsx | 16 +- .../src/components/styled-connect-button.tsx | 6 +- .../src/components/styled-connect-embed.tsx | 4 +- .../src/components/thirdweb-provider.tsx | 4 +- .../src/components/ui/Anchor.tsx | 4 +- .../src/components/ui/CopyButton.tsx | 4 +- .../src/components/ui/CustomAccordion.tsx | 19 +- .../src/components/ui/CustomRadioGroup.tsx | 10 +- .../src/components/ui/DynamicHeight.tsx | 6 +- apps/playground-web/src/components/ui/Img.tsx | 18 +- .../ui/ScrollShadow/ScrollShadow.tsx | 6 +- .../components/ui/Spinner/Spinner.module.css | 1 - .../src/components/ui/Spinner/Spinner.tsx | 4 +- .../src/components/ui/badge.tsx | 16 +- .../src/components/ui/breadcrumb.tsx | 20 +- .../src/components/ui/button.tsx | 32 +- .../playground-web/src/components/ui/card.tsx | 12 +- .../src/components/ui/checkbox.tsx | 2 +- .../playground-web/src/components/ui/form.tsx | 24 +- .../src/components/ui/input.tsx | 2 +- .../src/components/ui/label.tsx | 4 +- .../src/components/ui/popover.tsx | 4 +- .../src/components/ui/progress.tsx | 2 +- .../src/components/ui/radio-group.tsx | 2 +- .../src/components/ui/select.tsx | 10 +- .../src/components/ui/separator.tsx | 6 +- .../src/components/ui/sidebar.tsx | 18 +- .../src/components/ui/table.tsx | 20 +- .../src/components/ui/tooltip.tsx | 8 +- .../src/components/universal-bridge/buy.tsx | 6 +- .../src/instrumentation-client.ts | 10 +- apps/playground-web/src/lib/client.ts | 12 +- apps/playground-web/src/lib/constants.ts | 2 +- apps/playground-web/tailwind.config.ts | 82 +- apps/playground-web/tsconfig.json | 26 +- apps/portal/.eslintrc.json | 29 +- apps/portal/.gitignore | 1 + apps/portal/.prettierrc | 30 +- apps/portal/biome.json | 7 +- apps/portal/components.json | 16 +- apps/portal/knip.json | 22 +- apps/portal/mdx-components.tsx | 65 +- apps/portal/next-sitemap.config.js | 46 +- apps/portal/next.config.mjs | 26 +- apps/portal/package.json | 41 +- apps/portal/postcss.config.js | 4 +- apps/portal/redirects.mjs | 1274 +-- apps/portal/src/app/Header.tsx | 130 +- apps/portal/src/app/account/layout.tsx | 2 +- apps/portal/src/app/account/sidebar.tsx | 35 +- apps/portal/src/app/api/email-signup/route.ts | 10 +- apps/portal/src/app/api/og/route.tsx | 50 +- .../src/app/api/search/extraction/index.ts | 10 +- .../app/api/search/extraction/llm-extract.ts | 12 +- .../app/api/search/indexing/createIndex.ts | 12 +- apps/portal/src/app/api/search/route.ts | 2 +- .../src/app/api/search/searching/search.ts | 4 +- apps/portal/src/app/changelog/[slug]/page.tsx | 6 +- .../src/app/changelog/components/Author.tsx | 4 +- .../app/changelog/components/RenderData.tsx | 2 +- apps/portal/src/app/changelog/ghost.ts | 6 +- apps/portal/src/app/changelog/page.tsx | 20 +- .../src/app/changelog/utils/transform.tsx | 13 +- apps/portal/src/app/chat/page.tsx | 2 +- apps/portal/src/app/cli/layout.tsx | 2 +- apps/portal/src/app/cli/sidebar.tsx | 22 +- apps/portal/src/app/connect/layout.tsx | 2 +- apps/portal/src/app/connect/sidebar.tsx | 138 +- apps/portal/src/app/contracts/layout.tsx | 6 +- apps/portal/src/app/contracts/sidebar.tsx | 380 +- apps/portal/src/app/dotnet/layout.tsx | 8 +- apps/portal/src/app/dotnet/sidebar.tsx | 140 +- apps/portal/src/app/engine/v2/layout.tsx | 6 +- apps/portal/src/app/engine/v2/sidebar.tsx | 70 +- apps/portal/src/app/engine/v3/layout.tsx | 6 +- apps/portal/src/app/engine/v3/sidebar.tsx | 30 +- apps/portal/src/app/globals.css | 2 + apps/portal/src/app/infrastructure/layout.tsx | 6 +- .../portal/src/app/infrastructure/sidebar.tsx | 24 +- apps/portal/src/app/insight/layout.tsx | 8 +- apps/portal/src/app/insight/sidebar.tsx | 38 +- apps/portal/src/app/knowledge-base/layout.tsx | 7 +- .../portal/src/app/knowledge-base/sidebar.tsx | 35 +- apps/portal/src/app/layout.tsx | 18 +- .../api-reference/chat/EndpointMetadata.tsx | 24 +- .../clear-session/EndpointMetadata.tsx | 8 +- .../src/app/nebula/api-reference/common.ts | 10 +- .../create-session/EndpointMetadata.tsx | 14 +- .../delete-session/EndpointMetadata.tsx | 10 +- .../execute/EndpointMetadata.tsx | 26 +- .../get-session/EndpointMetadata.tsx | 10 +- .../list-session/EndpointMetadata.tsx | 6 +- .../update-session/EndpointMetadata.tsx | 14 +- apps/portal/src/app/nebula/layout.tsx | 12 +- apps/portal/src/app/nebula/sidebar.tsx | 85 +- apps/portal/src/app/page.tsx | 114 +- apps/portal/src/app/pay/layout.tsx | 12 +- apps/portal/src/app/pay/sidebar.tsx | 52 +- .../app/react-native/v5/[...slug]/page.tsx | 2 +- .../portal/src/app/react-native/v5/layout.tsx | 6 +- .../src/app/react-native/v5/sidebar.tsx | 16 +- .../src/app/react/v5/[...slug]/page.tsx | 2 +- apps/portal/src/app/react/v5/layout.tsx | 6 +- apps/portal/src/app/react/v5/sidebar.tsx | 74 +- .../references/components/TDoc/Accessor.tsx | 14 +- .../app/references/components/TDoc/Class.tsx | 34 +- .../references/components/TDoc/Deprecated.tsx | 2 +- .../app/references/components/TDoc/Enum.tsx | 16 +- .../references/components/TDoc/Function.tsx | 57 +- .../references/components/TDoc/PageLayout.tsx | 56 +- .../app/references/components/TDoc/Root.tsx | 4 +- .../references/components/TDoc/SourceLink.tsx | 2 +- .../references/components/TDoc/Summary.tsx | 13 +- .../app/references/components/TDoc/Type.tsx | 14 +- .../components/TDoc/TypeDeclaration.tsx | 10 +- .../references/components/TDoc/Variable.tsx | 12 +- .../TDoc/utils/getSidebarLinkgroups.ts | 104 +- .../components/TDoc/utils/getTags.ts | 4 +- .../references/components/TDoc/utils/slugs.ts | 2 +- .../components/TDoc/utils/subgroups.ts | 2 +- .../typescript/[version]/[[...slug]]/page.tsx | 6 +- .../typescript/[version]/layout.tsx | 8 +- apps/portal/src/app/styleguide/layout.tsx | 2 +- apps/portal/src/app/styleguide/sidebar.tsx | 14 +- .../src/app/typescript/v5/[...slug]/page.tsx | 2 +- .../v5/extensions/built-in/page.tsx | 6 +- apps/portal/src/app/typescript/v5/layout.tsx | 6 +- .../typescript/v5/modular/built-in/page.tsx | 4 +- apps/portal/src/app/typescript/v5/sidebar.tsx | 112 +- .../v5/supported-wallets/[walletId]/page.tsx | 42 +- .../com.coinbase.wallet/page.tsx | 34 +- apps/portal/src/app/unity/v5/layout.tsx | 8 +- apps/portal/src/app/unity/v5/sidebar.tsx | 48 +- .../app/unreal-engine/blueprints/sidebar.ts | 12 +- .../src/app/unreal-engine/cpp/sidebar.ts | 16 +- apps/portal/src/app/unreal-engine/layout.tsx | 8 +- apps/portal/src/app/unreal-engine/sidebar.tsx | 8 +- apps/portal/src/app/unreal-engine/util.ts | 2 +- apps/portal/src/app/vault/layout.tsx | 6 +- apps/portal/src/app/vault/sidebar.tsx | 42 +- apps/portal/src/components/AI/api.ts | 10 +- apps/portal/src/components/AI/chat.tsx | 69 +- .../Document/APIEndpointMeta/ApiEndpoint.tsx | 56 +- .../APIEndpointMeta/RequestExample.tsx | 4 +- .../src/components/Document/AuthList.tsx | 7 +- .../src/components/Document/Breadcrumb.tsx | 7 +- .../src/components/Document/Callout.tsx | 4 +- .../components/Document/Cards/ArticleCard.tsx | 10 +- .../components/Document/Cards/ConnectCard.tsx | 4 +- .../Document/Cards/GithubTemplateCard.tsx | 2 +- apps/portal/src/components/Document/Code.tsx | 24 +- .../Document/ContractDeployCard.tsx | 2 +- .../src/components/Document/Details.tsx | 16 +- .../src/components/Document/DocImage.tsx | 7 +- .../src/components/Document/DocLink.tsx | 4 +- .../src/components/Document/EditPage.tsx | 2 +- .../components/Document/ExpandableGrid.tsx | 6 +- .../src/components/Document/FeatureCard.tsx | 6 +- .../components/Document/GithubButtonLink.tsx | 8 +- .../src/components/Document/Heading.tsx | 12 +- .../src/components/Document/PageFooter.tsx | 18 +- .../src/components/Document/SDKCard.tsx | 2 +- .../src/components/Document/Steps/Steps.tsx | 4 +- .../Document/StickyTopContainer.tsx | 2 +- apps/portal/src/components/Document/index.ts | 35 +- .../src/components/Document/metadata.ts | 26 +- .../src/components/Layouts/DocLayout.tsx | 2 +- .../components/code/CodeBlockContainer.tsx | 18 +- .../portal/src/components/code/RenderCode.tsx | 6 +- .../src/components/code/code.client.tsx | 8 +- .../src/components/code/getCodeHtml.tsx | 4 +- .../src/components/code/plaintext-code.tsx | 4 +- .../components/markdown/MarkdownRenderer.tsx | 172 +- .../components/others/AllSupportedWallets.tsx | 10 +- apps/portal/src/components/others/Banner.tsx | 6 +- .../src/components/others/CopyButton.tsx | 4 +- .../src/components/others/CustomAccordion.tsx | 33 +- .../src/components/others/DocSearch.tsx | 68 +- .../src/components/others/DynamicHeight.tsx | 6 +- .../others/EngineVersionSelector.tsx | 16 +- .../portal/src/components/others/Feedback.tsx | 14 +- .../components/others/PlatformSelector.tsx | 12 +- .../others/ScrollShadow/ScrollShadow.tsx | 6 +- apps/portal/src/components/others/Sidebar.tsx | 44 +- .../src/components/others/Subscribe.tsx | 16 +- .../src/components/others/TableOfContents.tsx | 12 +- .../src/components/others/WalletCard.tsx | 12 +- .../components/others/theme/ThemeSwitcher.tsx | 8 +- apps/portal/src/components/ui/Anchor.tsx | 4 +- apps/portal/src/components/ui/CopyButton.tsx | 4 +- .../ui/ScrollShadow/ScrollShadow.tsx | 6 +- .../components/ui/Spinner/Spinner.module.css | 1 - .../src/components/ui/Spinner/Spinner.tsx | 4 +- apps/portal/src/components/ui/badge.tsx | 16 +- apps/portal/src/components/ui/button.tsx | 30 +- apps/portal/src/components/ui/dialog.tsx | 8 +- .../src/components/ui/dropdown-menu.tsx | 20 +- apps/portal/src/components/ui/inline-code.tsx | 5 +- apps/portal/src/components/ui/input.tsx | 2 +- apps/portal/src/components/ui/select.tsx | 14 +- apps/portal/src/components/ui/table.tsx | 20 +- apps/portal/src/components/ui/tabs.tsx | 6 +- apps/portal/src/components/ui/tooltip.tsx | 8 +- apps/portal/src/contexts/slugger.ts | 2 +- apps/portal/src/hooks/useClipboard.ts | 2 +- apps/portal/src/icons/ExternalLinkIcon.tsx | 10 +- apps/portal/src/icons/index.ts | 21 +- apps/portal/src/icons/products/BridgeIcon.tsx | 10 +- .../portal/src/icons/products/ConnectIcon.tsx | 8 +- apps/portal/src/icons/products/EngineIcon.tsx | 8 +- .../portal/src/icons/products/InsightIcon.tsx | 10 +- apps/portal/src/icons/products/NebulaIcon.tsx | 10 +- .../src/icons/products/PlaygroundIcon.tsx | 8 +- .../products/contracts/ContractDeployIcon.tsx | 43 +- .../contracts/ContractExploreIcon.tsx | 48 +- .../contracts/ContractInteractIcon.tsx | 39 +- .../contracts/ContractModularContractIcon.tsx | 55 +- .../contracts/ContractPublishIcon.tsx | 35 +- .../src/icons/products/infra/InfraRPCIcon.tsx | 51 +- .../icons/products/infra/InfraStorageIcon.tsx | 45 +- .../products/wallets/EcosystemWalletsIcon.tsx | 43 +- .../products/wallets/WalletsAuthIcon.tsx | 46 +- .../products/wallets/WalletsConnectIcon.tsx | 47 +- .../products/wallets/WalletsSmartIcon.tsx | 45 +- apps/portal/src/icons/sdks/DotNetIcon.tsx | 12 +- apps/portal/src/icons/sdks/ReactIcon.tsx | 6 +- apps/portal/src/icons/sdks/TypeScriptIcon.tsx | 14 +- apps/portal/src/icons/sdks/UnityIcon.tsx | 12 +- .../src/icons/sdks/UnrealEngineIcon.tsx | 4 +- .../src/icons/sidebar/NebulaSideIcon.tsx | 8 +- apps/portal/src/icons/thirdweb.tsx | 39 +- apps/portal/src/instrumentation-client.ts | 10 +- apps/portal/tailwind.config.ts | 142 +- apps/portal/tsconfig.json | 36 +- apps/wallet-ui/.eslintrc.js | 86 +- apps/wallet-ui/biome.json | 16 +- apps/wallet-ui/components.json | 16 +- apps/wallet-ui/knip.json | 3 +- apps/wallet-ui/next.config.mjs | 18 +- apps/wallet-ui/package.json | 23 +- apps/wallet-ui/postcss.config.mjs | 2 +- .../src/app/[ecosystem]/(authed)/layout.tsx | 8 +- .../(authed)/wallet/[address]/layout.tsx | 10 +- .../(authed)/wallet/[address]/page.tsx | 4 +- apps/wallet-ui/src/app/[ecosystem]/layout.tsx | 10 +- .../src/app/[ecosystem]/login/layout.tsx | 5 +- apps/wallet-ui/src/app/[ecosystem]/page.tsx | 4 +- apps/wallet-ui/src/app/globals.css | 1 - apps/wallet-ui/src/app/layout.tsx | 2 +- apps/wallet-ui/src/app/not-found.tsx | 2 +- .../src/components/ChainCombobox.tsx | 21 +- apps/wallet-ui/src/components/ChainIcon.tsx | 23 +- .../src/components/ConnectButton.tsx | 8 +- .../wallet-ui/src/components/ConnectEmbed.tsx | 22 +- apps/wallet-ui/src/components/NftCard.tsx | 14 +- apps/wallet-ui/src/components/NftGallery.tsx | 20 +- apps/wallet-ui/src/components/NftModal.tsx | 27 +- .../components/TransactionToastProvider.tsx | 45 +- apps/wallet-ui/src/components/ui/badge.tsx | 12 +- apps/wallet-ui/src/components/ui/button.tsx | 28 +- apps/wallet-ui/src/components/ui/card.tsx | 5 +- apps/wallet-ui/src/components/ui/command.tsx | 14 +- apps/wallet-ui/src/components/ui/dialog.tsx | 8 +- apps/wallet-ui/src/components/ui/form.tsx | 22 +- apps/wallet-ui/src/components/ui/image.tsx | 1 - apps/wallet-ui/src/components/ui/input.tsx | 2 +- apps/wallet-ui/src/components/ui/label.tsx | 4 +- apps/wallet-ui/src/components/ui/popover.tsx | 4 +- apps/wallet-ui/src/components/ui/sonner.tsx | 8 +- apps/wallet-ui/src/hooks/useRouter.ts | 2 +- apps/wallet-ui/src/hooks/useWalletConnect.tsx | 14 +- apps/wallet-ui/src/lib/assets/erc721.ts | 16 +- apps/wallet-ui/src/lib/auth.ts | 16 +- apps/wallet-ui/src/lib/ecosystems.ts | 2 +- apps/wallet-ui/src/util/simplehash.ts | 58 +- apps/wallet-ui/tailwind.config.ts | 58 +- apps/wallet-ui/tsconfig.json | 39 +- biome.json | 65 +- package.json | 120 +- packages/engine/biome.json | 4 +- packages/engine/openapi-ts.config.ts | 2 +- packages/engine/package.json | 117 +- packages/engine/src/client/client.gen.ts | 2 +- packages/engine/src/client/index.ts | 3 +- packages/engine/src/configure.ts | 2 +- packages/engine/src/exports/thirdweb.ts | 2 +- packages/engine/tsconfig.base.json | 52 +- packages/engine/tsconfig.build.json | 14 +- packages/engine/tsconfig.json | 9 +- packages/insight/biome.json | 7 +- packages/insight/package.json | 1 + packages/insight/src/client/client.gen.ts | 2 +- packages/insight/src/client/index.ts | 3 +- packages/insight/src/client/types.gen.ts | 8624 +++++++++-------- packages/insight/src/exports/thirdweb.ts | 2 +- packages/insight/tsconfig.base.json | 53 +- packages/insight/tsconfig.build.json | 14 +- packages/insight/tsconfig.json | 9 +- packages/react-native-adapter/biome.json | 4 + packages/react-native-adapter/package.json | 62 +- packages/react-native-adapter/src/shims.ts | 1 + .../react-native-adapter/tsconfig.base.json | 53 +- .../react-native-adapter/tsconfig.build.json | 14 +- packages/react-native-adapter/tsconfig.json | 9 +- packages/service-utils/biome.json | 4 + packages/service-utils/package.json | 97 +- packages/service-utils/src/cf-worker/index.ts | 52 +- packages/service-utils/src/cf-worker/usage.ts | 15 +- .../service-utils/src/cf-worker/usageV2.ts | 4 +- packages/service-utils/src/core/api.ts | 2 +- .../src/core/authorize/authorize.test.ts | 16 +- .../src/core/authorize/client.test.ts | 26 +- .../src/core/authorize/client.ts | 22 +- .../service-utils/src/core/authorize/index.ts | 26 +- .../src/core/authorize/service.test.ts | 6 +- .../src/core/authorize/service.ts | 14 +- .../src/core/get-auth-headers.test.ts | 20 +- .../service-utils/src/core/rateLimit/index.ts | 14 +- .../src/core/rateLimit/rateLimit.test.ts | 34 +- .../rateLimit/strategies/sliding-window.ts | 6 +- packages/service-utils/src/core/services.ts | 106 +- packages/service-utils/src/core/usage.ts | 105 +- packages/service-utils/src/index.ts | 13 +- packages/service-utils/src/mocks.ts | 120 +- packages/service-utils/src/node/index.ts | 52 +- packages/service-utils/src/node/kafka.ts | 12 +- packages/service-utils/src/node/usageV2.ts | 18 +- packages/service-utils/tsconfig.base.json | 53 +- packages/service-utils/tsconfig.build.json | 14 +- packages/service-utils/tsconfig.json | 9 +- packages/thirdweb/.eslintrc.cjs | 52 +- packages/thirdweb/.size-limit.json | 28 +- packages/thirdweb/biome.json | 53 +- packages/thirdweb/knip.json | 6 +- packages/thirdweb/package.json | 468 +- packages/thirdweb/scripts/wallets/generate.ts | 494 +- .../src/adapters/eip1193/from-eip1193.test.ts | 10 +- .../src/adapters/eip1193/from-eip1193.ts | 54 +- .../src/adapters/eip1193/to-eip1193.test.ts | 38 +- .../src/adapters/eip1193/to-eip1193.ts | 6 +- .../thirdweb/src/adapters/eip1193/types.ts | 6 +- .../thirdweb/src/adapters/ethers5.test.ts | 30 +- packages/thirdweb/src/adapters/ethers5.ts | 224 +- .../thirdweb/src/adapters/ethers6.test.ts | 28 +- packages/thirdweb/src/adapters/ethers6.ts | 136 +- .../thirdweb/src/adapters/viem-legacy.test.ts | 18 +- packages/thirdweb/src/adapters/viem.test.ts | 16 +- packages/thirdweb/src/adapters/viem.ts | 144 +- .../thirdweb/src/adapters/wallet-adapter.ts | 8 +- packages/thirdweb/src/ai/chat.test.ts | 20 +- packages/thirdweb/src/ai/chat.ts | 2 +- packages/thirdweb/src/ai/common.ts | 12 +- packages/thirdweb/src/ai/execute.test.ts | 20 +- packages/thirdweb/src/ai/execute.ts | 2 +- packages/thirdweb/src/ai/index.ts | 2 +- .../src/analytics/track/connect.test.ts | 10 +- .../thirdweb/src/analytics/track/connect.ts | 8 +- .../src/analytics/track/helpers.test.ts | 4 +- .../thirdweb/src/analytics/track/helpers.ts | 2 +- .../thirdweb/src/analytics/track/index.ts | 2 +- .../thirdweb/src/analytics/track/pay.test.ts | 34 +- packages/thirdweb/src/analytics/track/pay.ts | 16 +- .../thirdweb/src/analytics/track/siwe.test.ts | 28 +- packages/thirdweb/src/analytics/track/siwe.ts | 6 +- .../src/analytics/track/track.test.ts | 12 +- .../src/analytics/track/transaction.test.ts | 84 +- .../src/analytics/track/transaction.ts | 24 +- packages/thirdweb/src/auth/auth.ts | 4 +- .../auth/core/create-login-message.test.ts | 22 +- .../src/auth/core/generate-jwt.test.ts | 28 +- .../thirdweb/src/auth/core/generate-jwt.ts | 10 +- .../auth/core/generate-login-payload.test.ts | 10 +- .../src/auth/core/generate-login-payload.ts | 4 +- .../src/auth/core/sign-login-payload.ts | 2 +- .../thirdweb/src/auth/core/verify-jwt.test.ts | 26 +- packages/thirdweb/src/auth/core/verify-jwt.ts | 18 +- .../auth/core/verify-login-payload.test.ts | 36 +- .../src/auth/core/verify-login-payload.ts | 32 +- .../thirdweb/src/auth/verify-hash.test.ts | 12 +- packages/thirdweb/src/auth/verify-hash.ts | 22 +- .../src/auth/verify-signature.test.ts | 24 +- .../thirdweb/src/auth/verify-signature.ts | 8 +- .../src/auth/verify-typed-data.test.ts | 24 +- .../thirdweb/src/auth/verify-typed-data.ts | 8 +- packages/thirdweb/src/bridge/Buy.test.ts | 56 +- packages/thirdweb/src/bridge/Buy.ts | 70 +- packages/thirdweb/src/bridge/Chains.ts | 2 +- packages/thirdweb/src/bridge/Onramp.test.ts | 26 +- packages/thirdweb/src/bridge/Onramp.ts | 14 +- packages/thirdweb/src/bridge/OnrampStatus.ts | 2 +- packages/thirdweb/src/bridge/Routes.test.ts | 4 +- packages/thirdweb/src/bridge/Routes.ts | 2 +- packages/thirdweb/src/bridge/Sell.test.ts | 54 +- packages/thirdweb/src/bridge/Sell.ts | 70 +- packages/thirdweb/src/bridge/Status.test.ts | 8 +- packages/thirdweb/src/bridge/Status.ts | 38 +- packages/thirdweb/src/bridge/Token.test.ts | 2 +- packages/thirdweb/src/bridge/Token.ts | 8 +- packages/thirdweb/src/bridge/Transfer.test.ts | 38 +- packages/thirdweb/src/bridge/Transfer.ts | 48 +- packages/thirdweb/src/bridge/Webhook.test.ts | 80 +- packages/thirdweb/src/bridge/Webhook.ts | 48 +- packages/thirdweb/src/bridge/index.ts | 19 +- packages/thirdweb/src/bridge/types/Errors.ts | 2 +- .../chain-definitions/abstract-testnet.ts | 6 +- .../src/chains/chain-definitions/abstract.ts | 6 +- .../src/chains/chain-definitions/anvil.ts | 6 +- .../chains/chain-definitions/arbitrum-nova.ts | 6 +- .../chain-definitions/arbitrum-sepolia.ts | 16 +- .../src/chains/chain-definitions/arbitrum.ts | 8 +- .../chain-definitions/assetchain-testnet.ts | 16 +- .../chain-definitions/astria-evm-dusknet.ts | 6 +- .../chain-definitions/avalanche-fuji.ts | 14 +- .../src/chains/chain-definitions/avalanche.ts | 14 +- .../chains/chain-definitions/base-sepolia.ts | 8 +- .../src/chains/chain-definitions/base.ts | 8 +- .../chain-definitions/berachain-bepolia.ts | 6 +- .../src/chains/chain-definitions/berachain.ts | 8 +- .../chains/chain-definitions/blast-sepolia.ts | 6 +- .../src/chains/chain-definitions/blast.ts | 8 +- .../chains/chain-definitions/bsc-testnet.ts | 14 +- .../src/chains/chain-definitions/bsc.ts | 14 +- .../celo-alfajores-testnet.ts | 6 +- .../src/chains/chain-definitions/celo.ts | 14 +- .../src/chains/chain-definitions/cronos.ts | 14 +- .../src/chains/chain-definitions/degen.ts | 4 +- .../src/chains/chain-definitions/ethereum.ts | 14 +- .../chain-definitions/fantom-testnet.ts | 14 +- .../src/chains/chain-definitions/fantom.ts | 14 +- .../chains/chain-definitions/frame-testnet.ts | 14 +- .../chain-definitions/fraxtal-testnet.ts | 6 +- .../gnosis-chiado-testnet.ts | 6 +- .../src/chains/chain-definitions/gnosis.ts | 6 +- .../chain-definitions/god-woken-testnet-v1.ts | 14 +- .../src/chains/chain-definitions/god-woken.ts | 14 +- .../src/chains/chain-definitions/hardhat.ts | 6 +- .../chains/chain-definitions/hokum-testnet.ts | 14 +- .../chains/chain-definitions/linea-sepolia.ts | 8 +- .../src/chains/chain-definitions/linea.ts | 8 +- .../src/chains/chain-definitions/localhost.ts | 6 +- .../src/chains/chain-definitions/loot.ts | 14 +- .../manta-pacific-testnet.ts | 6 +- .../chains/chain-definitions/manta-pacific.ts | 6 +- .../chain-definitions/metal-l2-testnet.ts | 6 +- .../chains/chain-definitions/mode-testnet.ts | 6 +- .../src/chains/chain-definitions/mode.ts | 6 +- .../chains/chain-definitions/monad-testnet.ts | 6 +- .../src/chains/chain-definitions/moonbeam.ts | 14 +- .../chain-definitions/optimism-sepolia.ts | 8 +- .../src/chains/chain-definitions/optimism.ts | 8 +- .../chains/chain-definitions/palm-testnet.ts | 14 +- .../src/chains/chain-definitions/palm.ts | 14 +- .../chains/chain-definitions/polygon-amoy.ts | 8 +- .../chain-definitions/polygon-mumbai.ts | 8 +- .../polygon-zkevm-testnet.ts | 6 +- .../chains/chain-definitions/polygon-zkevm.ts | 6 +- .../src/chains/chain-definitions/polygon.ts | 8 +- .../chains/chain-definitions/rari-testnet.ts | 14 +- .../src/chains/chain-definitions/rari.ts | 14 +- .../chain-definitions/scroll-alpha-testnet.ts | 14 +- .../scroll-sepolia-testnet.ts | 14 +- .../src/chains/chain-definitions/scroll.ts | 14 +- .../src/chains/chain-definitions/sepolia.ts | 8 +- .../chain-definitions/soneium-minato.ts | 6 +- .../src/chains/chain-definitions/treasure.ts | 6 +- .../chains/chain-definitions/treasureTopaz.ts | 6 +- .../chains/chain-definitions/xai-sepolia.ts | 6 +- .../src/chains/chain-definitions/xai.ts | 12 +- .../chain-definitions/zk-candy-sepolia.ts | 12 +- .../chain-definitions/zksync-sepolia.ts | 14 +- .../src/chains/chain-definitions/zksync.ts | 14 +- .../chains/chain-definitions/zora-sepolia.ts | 14 +- .../src/chains/chain-definitions/zora.ts | 14 +- packages/thirdweb/src/chains/constants.ts | 6 +- packages/thirdweb/src/chains/utils.test.ts | 102 +- packages/thirdweb/src/chains/utils.ts | 70 +- .../src/cli/commands/generate/generate.ts | 14 +- .../src/cli/commands/generate/utils.ts | 6 +- .../src/cli/commands/stylus/builder.ts | 16 +- .../src/cli/commands/stylus/create.ts | 12 +- .../src/contract/actions/compiler-metadata.ts | 8 +- .../contract/actions/get-compiler-metadata.ts | 2 +- .../src/contract/actions/resolve-abi.test.ts | 2 +- .../src/contract/actions/resolve-abi.ts | 6 +- .../thirdweb/src/contract/contract.test.ts | 2 +- .../deployment/deploy-deterministic.test.ts | 16 +- .../deployment/deploy-deterministic.ts | 12 +- .../deployment/deploy-dynamic.test.ts | 12 +- .../deployment/deploy-via-autofactory.test.ts | 44 +- .../deployment/deploy-via-autofactory.ts | 14 +- .../contract/deployment/deploy-with-abi.ts | 18 +- .../src/contract/deployment/publisher.test.ts | 12 +- .../src/contract/deployment/publisher.ts | 20 +- .../deployment/utils/bootstrap.test.ts | 16 +- .../contract/deployment/utils/bootstrap.ts | 40 +- .../deployment/utils/clone-factory.ts | 2 +- .../deployment/utils/create-2-factory.test.ts | 6 +- .../deployment/utils/create-2-factory.ts | 82 +- .../src/contract/deployment/utils/infra.ts | 18 +- .../deployment/zksync/implementations.ts | 50 +- .../deployment/zksync/zkDeployContract.ts | 8 +- .../zksync/zkDeployCreate2Factory.ts | 8 +- .../zksync/zkDeployDeterministic.ts | 14 +- .../deployment/zksync/zkDeployProxy.ts | 10 +- .../verification/constructor-params.ts | 2 +- .../src/contract/verification/index.ts | 38 +- .../src/contract/verification/source-files.ts | 2 +- .../src/engine/create-server-wallet.ts | 4 +- packages/thirdweb/src/engine/get-status.ts | 10 +- packages/thirdweb/src/engine/index.ts | 28 +- .../src/engine/search-transactions.ts | 6 +- .../thirdweb/src/engine/server-wallet.test.ts | 52 +- packages/thirdweb/src/engine/server-wallet.ts | 74 +- .../thirdweb/src/engine/wait-for-tx-hash.ts | 8 +- .../src/event/actions/get-events.test.ts | 40 +- .../thirdweb/src/event/actions/get-events.ts | 30 +- .../src/event/actions/parse-logs.test.ts | 38 +- .../thirdweb/src/event/actions/parse-logs.ts | 2 +- .../src/event/actions/watch-events.ts | 13 +- .../thirdweb/src/event/prepare-event.test.ts | 4 +- packages/thirdweb/src/event/prepare-event.ts | 2 +- .../thirdweb/src/exports/adapters/ethers5.ts | 2 +- .../thirdweb/src/exports/adapters/ethers6.ts | 2 +- packages/thirdweb/src/exports/auth.ts | 43 +- packages/thirdweb/src/exports/chains.ts | 120 +- packages/thirdweb/src/exports/contract.ts | 54 +- packages/thirdweb/src/exports/deploys.ts | 62 +- packages/thirdweb/src/exports/event.ts | 20 +- .../src/exports/extensions/airdrop.ts | 43 +- .../thirdweb/src/exports/extensions/common.ts | 71 +- .../exports/extensions/dynamic-contracts.ts | 4 +- .../thirdweb/src/exports/extensions/ens.ts | 31 +- .../src/exports/extensions/erc1155.ts | 280 +- .../thirdweb/src/exports/extensions/erc20.ts | 206 +- .../src/exports/extensions/erc4337.ts | 101 +- .../src/exports/extensions/erc4626.ts | 55 +- .../thirdweb/src/exports/extensions/erc721.ts | 323 +- .../src/exports/extensions/farcaster.ts | 68 +- .../exports/extensions/farcaster/idGateway.ts | 4 +- .../extensions/farcaster/idRegistry.ts | 50 +- .../extensions/farcaster/keyGateway.ts | 2 +- .../extensions/farcaster/keyRegistry.ts | 16 +- .../extensions/farcaster/storageRegistry.ts | 10 +- .../thirdweb/src/exports/extensions/lens.ts | 188 +- .../src/exports/extensions/marketplace.ts | 273 +- .../src/exports/extensions/multicall3.ts | 16 +- .../thirdweb/src/exports/extensions/pack.ts | 58 +- .../src/exports/extensions/permissions.ts | 70 +- .../thirdweb/src/exports/extensions/split.ts | 49 +- .../thirdweb/src/exports/extensions/stylus.ts | 2 +- .../src/exports/extensions/thirdweb.ts | 58 +- .../src/exports/extensions/uniswap.ts | 28 +- .../exports/extensions/unstoppable-domains.ts | 22 +- .../thirdweb/src/exports/extensions/vote.ts | 92 +- packages/thirdweb/src/exports/modules.ts | 235 +- packages/thirdweb/src/exports/pay.ts | 83 +- packages/thirdweb/src/exports/react.native.ts | 222 +- packages/thirdweb/src/exports/react.ts | 410 +- packages/thirdweb/src/exports/rpc.ts | 32 +- packages/thirdweb/src/exports/social.ts | 2 +- packages/thirdweb/src/exports/storage.ts | 12 +- packages/thirdweb/src/exports/thirdweb.ts | 351 +- packages/thirdweb/src/exports/transaction.ts | 110 +- packages/thirdweb/src/exports/utils.ts | 222 +- .../thirdweb/src/exports/wallets.native.ts | 166 +- packages/thirdweb/src/exports/wallets.ts | 203 +- .../thirdweb/src/exports/wallets/eip5792.ts | 32 +- .../thirdweb/src/exports/wallets/embedded.ts | 6 +- .../src/exports/wallets/in-app.native.ts | 34 +- .../thirdweb/src/exports/wallets/in-app.ts | 41 +- .../src/exports/wallets/private-key.ts | 12 +- .../thirdweb/src/exports/wallets/smart.ts | 54 +- .../Airdrop/events/OwnerUpdated.ts | 4 +- .../Airdrop/read/eip712Domain.ts | 19 +- .../__generated__/Airdrop/read/isClaimed.ts | 10 +- .../__generated__/Airdrop/read/owner.ts | 5 +- .../Airdrop/read/tokenConditionId.ts | 6 +- .../Airdrop/read/tokenMerkleRoot.ts | 6 +- .../Airdrop/write/airdropERC1155.ts | 38 +- .../write/airdropERC1155WithSignature.ts | 48 +- .../Airdrop/write/airdropERC20.ts | 36 +- .../write/airdropERC20WithSignature.ts | 46 +- .../Airdrop/write/airdropERC721.ts | 36 +- .../write/airdropERC721WithSignature.ts | 46 +- .../Airdrop/write/airdropNativeToken.ts | 34 +- .../Airdrop/write/claimERC1155.ts | 36 +- .../__generated__/Airdrop/write/claimERC20.ts | 34 +- .../Airdrop/write/claimERC721.ts | 34 +- .../__generated__/Airdrop/write/initialize.ts | 28 +- .../Airdrop/write/setMerkleRoot.ts | 32 +- .../__generated__/Airdrop/write/setOwner.ts | 28 +- .../write/airdropERC1155WithSignature.test.ts | 30 +- .../write/airdropERC1155WithSignature.ts | 14 +- .../write/airdropERC20WithSignature.test.ts | 32 +- .../write/airdropERC20WithSignature.ts | 14 +- .../write/airdropERC721WithSignature.test.ts | 24 +- .../write/airdropERC721WithSignature.ts | 14 +- .../airdrop/write/claimERC1155.test.ts | 44 +- .../extensions/airdrop/write/claimERC1155.ts | 10 +- .../airdrop/write/claimERC20.test.ts | 40 +- .../extensions/airdrop/write/claimERC20.ts | 12 +- .../airdrop/write/claimERC721.test.ts | 38 +- .../extensions/airdrop/write/claimERC721.ts | 8 +- .../airdrop/write/merkleInfoERC1155.ts | 2 +- .../airdrop/write/merkleInfoERC20.ts | 4 +- .../airdrop/write/merkleInfoERC721.ts | 2 +- .../extensions/airdrop/write/saveSnapshot.ts | 2 +- .../write/setClaimConditions.ts | 48 +- .../IContractMetadata/read/contractURI.ts | 5 +- .../IContractMetadata/read/name.ts | 5 +- .../IContractMetadata/read/symbol.ts | 5 +- .../IContractMetadata/write/setContractURI.ts | 28 +- .../IMulticall/write/multicall.ts | 30 +- .../IOwnable/events/OwnerUpdated.ts | 4 +- .../__generated__/IOwnable/read/owner.ts | 5 +- .../__generated__/IOwnable/write/setOwner.ts | 28 +- .../events/PlatformFeeInfoUpdated.ts | 4 +- .../IPlatformFee/read/getPlatformFeeInfo.ts | 5 +- .../IPlatformFee/write/setPlatformFeeInfo.ts | 30 +- .../events/PrimarySaleRecipientUpdated.ts | 4 +- .../IPrimarySale/read/primarySaleRecipient.ts | 5 +- .../write/setPrimarySaleRecipient.ts | 28 +- .../IRoyalty/events/DefaultRoyalty.ts | 4 +- .../IRoyalty/events/RoyaltyForToken.ts | 4 +- .../IRoyalty/read/getDefaultRoyaltyInfo.ts | 5 +- .../IRoyalty/read/getRoyaltyInfoForToken.ts | 6 +- .../IRoyalty/read/royaltyInfo.ts | 12 +- .../IRoyalty/read/supportsInterface.ts | 6 +- .../IRoyalty/write/setDefaultRoyaltyInfo.ts | 30 +- .../IRoyalty/write/setRoyaltyInfoForToken.ts | 32 +- .../events/RoyaltyEngineUpdated.ts | 4 +- .../read/supportsInterface.ts | 6 +- .../IRoyaltyPayments/write/getRoyalty.ts | 36 +- .../write/setRoyaltyEngine.ts | 28 +- .../common/write/setContractMetadata.ts | 2 +- .../read/getAllExtensions.ts | 25 +- .../IExtensionManager/write/addExtension.ts | 48 +- .../write/removeExtension.ts | 28 +- .../write/installPublishedExtension.test.ts | 17 +- .../write/installPublishedExtension.ts | 12 +- .../write/uninstallExtension.test.ts | 17 +- .../__generated__/AddressResolver/read/ABI.ts | 8 +- .../AddressResolver/read/addr.ts | 6 +- .../AddressResolver/read/contenthash.ts | 6 +- .../AddressResolver/read/name.ts | 6 +- .../AddressResolver/read/pubkey.ts | 10 +- .../AddressResolver/read/text.ts | 8 +- .../ens/__generated__/L2Resolver/read/name.ts | 6 +- .../UniversalResolver/read/resolve.ts | 8 +- .../UniversalResolver/read/reverse.ts | 6 +- .../extensions/ens/resolve-address.test.ts | 2 +- .../src/extensions/ens/resolve-address.ts | 6 +- .../src/extensions/ens/resolve-avatar.ts | 2 +- .../extensions/ens/resolve-l2-name.test.ts | 8 +- .../src/extensions/ens/resolve-l2-name.ts | 4 +- .../src/extensions/ens/resolve-name.test.ts | 4 +- .../src/extensions/ens/resolve-name.ts | 4 +- .../src/extensions/ens/resolve-text.test.ts | 4 +- .../src/extensions/ens/resolve-text.ts | 8 +- .../BatchMintMetadata/read/getBaseURICount.ts | 5 +- .../read/getBatchIdAtIndex.ts | 6 +- .../DropERC1155/read/verifyClaim.ts | 30 +- .../DropERC1155/write/freezeBatchBaseURI.ts | 28 +- .../DropERC1155/write/setMaxTotalSupply.ts | 30 +- .../write/setSaleRecipientForToken.ts | 30 +- .../DropERC1155/write/updateBatchBaseURI.ts | 30 +- .../IAirdropERC1155/events/AirdropFailed.ts | 4 +- .../IAirdropERC1155/write/airdropERC1155.ts | 40 +- .../events/TokensClaimed.ts | 4 +- .../IAirdropERC1155Claimable/write/claim.ts | 36 +- .../IBurnableERC1155/write/burn.ts | 32 +- .../IBurnableERC1155/write/burnBatch.ts | 32 +- .../IClaimableERC1155/events/TokensClaimed.ts | 4 +- .../IClaimableERC1155/read/verifyClaim.ts | 6 +- .../IClaimableERC1155/write/claim.ts | 32 +- .../events/ClaimConditionsUpdated.ts | 4 +- .../IDrop1155/events/TokensClaimed.ts | 4 +- .../IDrop1155/read/claimCondition.ts | 10 +- .../read/getActiveClaimConditionId.ts | 6 +- .../IDrop1155/read/getClaimConditionById.ts | 28 +- .../__generated__/IDrop1155/write/claim.ts | 50 +- .../IDrop1155/write/setClaimConditions.ts | 50 +- .../events/ClaimConditionUpdated.ts | 4 +- .../events/TokensClaimed.ts | 4 +- .../read/claimCondition.ts | 22 +- .../IDropSinglePhase1155/write/claim.ts | 50 +- .../write/setClaimConditions.ts | 50 +- .../IERC1155/events/ApprovalForAll.ts | 4 +- .../IERC1155/events/TransferBatch.ts | 4 +- .../IERC1155/events/TransferSingle.ts | 4 +- .../__generated__/IERC1155/events/URI.ts | 4 +- .../__generated__/IERC1155/read/balanceOf.ts | 8 +- .../IERC1155/read/balanceOfBatch.ts | 8 +- .../IERC1155/read/isApprovedForAll.ts | 8 +- .../IERC1155/read/totalSupply.ts | 6 +- .../__generated__/IERC1155/read/uri.ts | 6 +- .../IERC1155/write/safeBatchTransferFrom.ts | 36 +- .../IERC1155/write/safeTransferFrom.ts | 36 +- .../IERC1155/write/setApprovalForAll.ts | 30 +- .../read/nextTokenIdToMint.ts | 5 +- .../read/supportsInterface.ts | 6 +- .../write/onERC1155BatchReceived.ts | 36 +- .../write/onERC1155Received.ts | 36 +- .../write/depositRewardTokens.ts | 28 +- .../write/withdrawRewardTokens.ts | 28 +- .../ILazyMint/events/TokensLazyMinted.ts | 4 +- .../__generated__/ILazyMint/write/lazyMint.ts | 34 +- .../IMintableERC1155/events/TokensMinted.ts | 4 +- .../IMintableERC1155/write/mintTo.ts | 34 +- .../INFTMetadata/read/supportsInterface.ts | 6 +- .../INFTMetadata/write/freezeMetadata.ts | 2 +- .../INFTMetadata/write/setTokenURI.ts | 30 +- .../__generated__/IPack/events/PackCreated.ts | 4 +- .../__generated__/IPack/events/PackOpened.ts | 4 +- .../__generated__/IPack/events/PackUpdated.ts | 4 +- .../__generated__/IPack/write/createPack.ts | 52 +- .../__generated__/IPack/write/openPack.ts | 40 +- .../events/PackOpenRequested.ts | 4 +- .../events/PackRandomnessFulfilled.ts | 4 +- .../IPackVRFDirect/read/canClaimRewards.ts | 6 +- .../IPackVRFDirect/write/claimRewards.ts | 14 +- .../write/openPackAndClaimRewards.ts | 32 +- .../events/TokensMintedWithSignature.ts | 4 +- .../ISignatureMintERC1155/read/verify.ts | 38 +- .../write/mintWithSignature.ts | 56 +- .../IStaking1155/events/RewardsClaimed.ts | 4 +- .../IStaking1155/events/TokensStaked.ts | 4 +- .../IStaking1155/events/TokensWithdrawn.ts | 4 +- .../events/UpdatedRewardsPerUnitTime.ts | 4 +- .../IStaking1155/events/UpdatedTimeUnit.ts | 4 +- .../IStaking1155/read/getStakeInfo.ts | 12 +- .../IStaking1155/read/getStakeInfoForToken.ts | 12 +- .../IStaking1155/write/claimRewards.ts | 28 +- .../__generated__/IStaking1155/write/stake.ts | 30 +- .../IStaking1155/write/withdraw.ts | 30 +- .../Zora1155/read/nextTokenId.ts | 5 +- .../extensions/erc1155/customDrop1155.test.ts | 69 +- .../src/extensions/erc1155/drop1155.test.ts | 106 +- .../extensions/erc1155/drops/read/canClaim.ts | 14 +- .../drops/read/getActiveClaimCondition.ts | 10 +- .../erc1155/drops/read/getClaimConditions.ts | 10 +- .../extensions/erc1155/drops/write/claimTo.ts | 10 +- .../drops/write/resetClaimEligibility.ts | 18 +- .../erc1155/drops/write/setClaimConditions.ts | 6 +- .../erc1155/drops/write/updateMetadata.ts | 2 +- .../src/extensions/erc1155/read/getNFT.ts | 11 +- .../src/extensions/erc1155/read/getNFTs.ts | 2 +- .../erc1155/read/getOwnedNFTs.test.ts | 4 +- .../extensions/erc1155/read/getOwnedNFTs.ts | 2 +- .../erc1155/read/getOwnedTokenIds.ts | 2 +- .../src/extensions/erc1155/token1155.test.ts | 56 +- .../src/extensions/erc1155/write/lazyMint.ts | 2 +- .../erc1155/write/mintAdditionalSupplyTo.ts | 8 +- .../write/mintAdditionalSupplyToBatch.test.ts | 10 +- .../write/mintAdditionalSupplyToBatch.ts | 6 +- .../src/extensions/erc1155/write/mintTo.ts | 6 +- .../extensions/erc1155/write/mintToBatch.ts | 4 +- .../src/extensions/erc1155/write/sigMint.ts | 30 +- .../erc1155/write/sigMint1155.test.ts | 70 +- .../erc1155/write/updateTokenURI.ts | 2 +- .../isValidSignature/read/isValidSignature.ts | 8 +- .../erc1271/checkContractWalletSignature.ts | 2 +- .../checkContractWalletSignedTypedData.ts | 2 +- .../IERC165/read/supportsInterface.ts | 6 +- .../IERC1822Proxiable/read/proxiableUUID.ts | 5 +- .../DropERC20/read/verifyClaim.ts | 28 +- .../IAirdropERC20/events/AirdropFailed.ts | 4 +- .../IAirdropERC20/write/airdropERC20.ts | 38 +- .../events/TokensClaimed.ts | 4 +- .../IAirdropERC20Claimable/write/claim.ts | 34 +- .../IBurnableERC20/write/burn.ts | 28 +- .../IBurnableERC20/write/burnFrom.ts | 30 +- .../IDropERC20/events/TokensClaimed.ts | 4 +- .../IDropERC20/read/claimCondition.ts | 9 +- .../read/getActiveClaimConditionId.ts | 5 +- .../IDropERC20/read/getClaimConditionById.ts | 26 +- .../__generated__/IDropERC20/write/claim.ts | 48 +- .../IDropERC20/write/setClaimConditions.ts | 48 +- .../__generated__/IERC20/events/Approval.ts | 4 +- .../__generated__/IERC20/events/Transfer.ts | 4 +- .../__generated__/IERC20/read/allowance.ts | 8 +- .../__generated__/IERC20/read/balanceOf.ts | 6 +- .../__generated__/IERC20/read/decimals.ts | 5 +- .../__generated__/IERC20/read/totalSupply.ts | 5 +- .../__generated__/IERC20/write/approve.ts | 30 +- .../__generated__/IERC20/write/transfer.ts | 30 +- .../IERC20/write/transferFrom.ts | 32 +- .../IERC20Permit/read/DOMAIN_SEPARATOR.ts | 5 +- .../__generated__/IERC20Permit/read/nonces.ts | 6 +- .../IERC20Permit/write/permit.ts | 40 +- .../IMintableERC20/events/TokensMinted.ts | 4 +- .../IMintableERC20/write/mintTo.ts | 30 +- .../events/TokensMintedWithSignature.ts | 4 +- .../ISignatureMintERC20/read/verify.ts | 30 +- .../write/mintWithSignature.ts | 48 +- .../IStaking20/events/RewardsClaimed.ts | 4 +- .../IStaking20/events/TokensStaked.ts | 4 +- .../IStaking20/events/TokensWithdrawn.ts | 4 +- .../IStaking20/read/getStakeInfo.ts | 10 +- .../IStaking20/write/claimRewards.ts | 2 +- .../__generated__/IStaking20/write/stake.ts | 28 +- .../IStaking20/write/withdraw.ts | 28 +- .../ITokenStake/write/depositRewardTokens.ts | 28 +- .../ITokenStake/write/withdrawRewardTokens.ts | 28 +- .../IVotes/events/DelegateChanged.ts | 4 +- .../IVotes/events/DelegateVotesChanged.ts | 4 +- .../__generated__/IVotes/read/delegates.ts | 6 +- .../IVotes/read/getPastTotalSupply.ts | 6 +- .../__generated__/IVotes/read/getPastVotes.ts | 8 +- .../__generated__/IVotes/read/getVotes.ts | 6 +- .../__generated__/IVotes/write/delegate.ts | 28 +- .../IVotes/write/delegateBySig.ts | 38 +- .../__generated__/IWETH/write/deposit.ts | 2 +- .../__generated__/IWETH/write/transfer.ts | 30 +- .../__generated__/IWETH/write/withdraw.ts | 28 +- .../src/extensions/erc20/customDrop20.test.ts | 19 +- .../src/extensions/erc20/drop20.test.ts | 116 +- .../extensions/erc20/drops/read/canClaim.ts | 14 +- .../extensions/erc20/drops/write/claimTo.ts | 10 +- .../drops/write/resetClaimEligibility.ts | 2 +- .../erc20/drops/write/setClaimConditions.ts | 4 +- .../extensions/erc20/read/getBalance.test.ts | 2 +- .../src/extensions/erc20/read/getBalance.ts | 4 +- .../erc20/read/getCurrencyMetadata.test.ts | 2 +- .../erc20/read/getCurrencyMetadata.ts | 4 +- .../extensions/erc20/write/approve.test.ts | 4 +- .../src/extensions/erc20/write/approve.ts | 6 +- .../src/extensions/erc20/write/deposit.ts | 4 +- .../write/getApprovalForTransaction.test.ts | 38 +- .../erc20/write/getApprovalForTransaction.ts | 2 +- .../src/extensions/erc20/write/mintTo.test.ts | 14 +- .../src/extensions/erc20/write/mintTo.ts | 4 +- .../src/extensions/erc20/write/sigMint.ts | 26 +- .../extensions/erc20/write/sigMint20.test.ts | 50 +- .../src/extensions/erc20/write/transfer.ts | 6 +- .../erc20/write/transferBatch.test.ts | 60 +- .../extensions/erc20/write/transferBatch.ts | 8 +- .../erc20/write/transferFrom.test.ts | 36 +- .../extensions/erc20/write/transferFrom.ts | 9 +- .../read/isTrustedForwarder.ts | 6 +- .../IERC2981/read/royaltyInfo.ts | 12 +- .../IAccount/write/validateUserOp.ts | 58 +- .../IAccountFactory/events/AccountCreated.ts | 4 +- .../IAccountFactory/events/SignerAdded.ts | 4 +- .../IAccountFactory/events/SignerRemoved.ts | 4 +- .../read/accountImplementation.ts | 5 +- .../IAccountFactory/read/getAccounts.ts | 8 +- .../read/getAccountsOfSigner.ts | 8 +- .../IAccountFactory/read/getAddress.ts | 8 +- .../IAccountFactory/read/getAllAccounts.ts | 5 +- .../IAccountFactory/read/isRegistered.ts | 6 +- .../IAccountFactory/read/totalAccounts.ts | 5 +- .../IAccountFactory/write/createAccount.ts | 32 +- .../IAccountFactory/write/onSignerAdded.ts | 32 +- .../IAccountFactory/write/onSignerRemoved.ts | 32 +- .../events/AdminUpdated.ts | 4 +- .../events/SignerPermissionsUpdated.ts | 4 +- .../read/getAllActiveSigners.ts | 19 +- .../IAccountPermissions/read/getAllAdmins.ts | 7 +- .../IAccountPermissions/read/getAllSigners.ts | 19 +- .../read/getPermissionsForSigner.ts | 20 +- .../read/isActiveSigner.ts | 6 +- .../IAccountPermissions/read/isAdmin.ts | 6 +- .../read/verifySignerPermissionRequest.ts | 32 +- .../write/setPermissionsForSigner.ts | 50 +- .../IEntryPoint/events/AccountDeployed.ts | 4 +- .../IEntryPoint/events/Deposited.ts | 4 +- .../events/SignatureAggregatorChanged.ts | 4 +- .../IEntryPoint/events/StakeLocked.ts | 4 +- .../IEntryPoint/events/StakeUnlocked.ts | 4 +- .../IEntryPoint/events/StakeWithdrawn.ts | 4 +- .../IEntryPoint/events/UserOperationEvent.ts | 4 +- .../events/UserOperationRevertReason.ts | 4 +- .../IEntryPoint/events/Withdrawn.ts | 4 +- .../IEntryPoint/read/balanceOf.ts | 6 +- .../IEntryPoint/read/getDepositInfo.ts | 20 +- .../IEntryPoint/read/getNonce.ts | 10 +- .../IEntryPoint/read/getUserOpHash.ts | 30 +- .../IEntryPoint/write/addStake.ts | 28 +- .../IEntryPoint/write/depositTo.ts | 28 +- .../IEntryPoint/write/getSenderAddress.ts | 28 +- .../IEntryPoint/write/handleAggregatedOps.ts | 62 +- .../IEntryPoint/write/handleOps.ts | 54 +- .../IEntryPoint/write/incrementNonce.ts | 28 +- .../IEntryPoint/write/simulateHandleOp.ts | 56 +- .../IEntryPoint/write/simulateValidation.ts | 52 +- .../IEntryPoint/write/unlockStake.ts | 2 +- .../IEntryPoint/write/withdrawStake.ts | 28 +- .../IEntryPoint/write/withdrawTo.ts | 30 +- .../events/PostOpRevertReason.ts | 4 +- .../IEntryPoint_v07/read/getUserOpHash.ts | 26 +- .../__generated__/IPaymaster/write/postOp.ts | 32 +- .../write/validatePaymasterUserOp.ts | 60 +- .../extensions/erc4337/account/addAdmin.ts | 6 +- .../erc4337/account/addSessionKey.ts | 8 +- .../src/extensions/erc4337/account/common.ts | 26 +- .../erc4337/account/isAccountDeployed.ts | 2 +- .../erc4337/account/permissions.test.ts | 32 +- .../extensions/erc4337/account/removeAdmin.ts | 6 +- .../erc4337/account/removeSessionKey.ts | 8 +- .../__generated__/IERC4626/events/Deposit.ts | 4 +- .../__generated__/IERC4626/events/Withdraw.ts | 4 +- .../__generated__/IERC4626/read/asset.ts | 7 +- .../IERC4626/read/convertToAssets.ts | 8 +- .../IERC4626/read/convertToShares.ts | 8 +- .../__generated__/IERC4626/read/maxDeposit.ts | 8 +- .../__generated__/IERC4626/read/maxMint.ts | 8 +- .../__generated__/IERC4626/read/maxRedeem.ts | 8 +- .../IERC4626/read/maxWithdraw.ts | 8 +- .../IERC4626/read/previewDeposit.ts | 8 +- .../IERC4626/read/previewMint.ts | 6 +- .../IERC4626/read/previewRedeem.ts | 8 +- .../IERC4626/read/previewWithdraw.ts | 8 +- .../IERC4626/read/totalAssets.ts | 7 +- .../__generated__/IERC4626/write/deposit.ts | 32 +- .../__generated__/IERC4626/write/mint.ts | 32 +- .../__generated__/IERC4626/write/redeem.ts | 34 +- .../__generated__/IERC4626/write/withdraw.ts | 34 +- .../IERC6551Account/read/isValidSigner.ts | 10 +- .../IERC6551Account/read/state.ts | 5 +- .../IERC6551Account/read/token.ts | 11 +- .../DropERC721/read/verifyClaim.ts | 28 +- .../DropERC721/write/freezeBatchBaseURI.ts | 28 +- .../DropERC721/write/setMaxTotalSupply.ts | 28 +- .../DropERC721/write/updateBatchBaseURI.ts | 30 +- .../IAirdropERC721/events/AirdropFailed.ts | 4 +- .../IAirdropERC721/write/airdropERC721.ts | 38 +- .../events/TokensClaimed.ts | 4 +- .../IAirdropERC721Claimable/write/claim.ts | 34 +- .../read/getBaseURICount.ts | 5 +- .../read/getBatchIdAtIndex.ts | 6 +- .../IBurnableERC721/write/burn.ts | 28 +- .../IClaimableERC721/events/TokensClaimed.ts | 4 +- .../IClaimableERC721/read/verifyClaim.ts | 4 +- .../IClaimableERC721/write/claim.ts | 30 +- .../IDelayedReveal/events/TokenURIRevealed.ts | 4 +- .../IDelayedReveal/read/encryptDecrypt.ts | 10 +- .../IDelayedReveal/read/encryptedData.ts | 6 +- .../IDelayedReveal/write/reveal.ts | 32 +- .../IDrop/events/TokensClaimed.ts | 4 +- .../IDrop/read/baseURIIndices.ts | 6 +- .../IDrop/read/claimCondition.ts | 9 +- .../IDrop/read/getActiveClaimConditionId.ts | 5 +- .../IDrop/read/getClaimConditionById.ts | 26 +- .../IDrop/read/nextTokenIdToClaim.ts | 5 +- .../erc721/__generated__/IDrop/write/claim.ts | 48 +- .../IDrop/write/setClaimConditions.ts | 48 +- .../IDropSinglePhase/events/TokensClaimed.ts | 4 +- .../IDropSinglePhase/read/claimCondition.ts | 25 +- .../IDropSinglePhase/write/claim.ts | 48 +- .../write/setClaimConditions.ts | 48 +- .../__generated__/IERC721A/events/Approval.ts | 4 +- .../IERC721A/events/ApprovalForAll.ts | 4 +- .../__generated__/IERC721A/events/Transfer.ts | 4 +- .../__generated__/IERC721A/read/balanceOf.ts | 6 +- .../IERC721A/read/getApproved.ts | 6 +- .../IERC721A/read/isApprovedForAll.ts | 8 +- .../__generated__/IERC721A/read/name.ts | 5 +- .../__generated__/IERC721A/read/ownerOf.ts | 6 +- .../IERC721A/read/startTokenId.ts | 5 +- .../__generated__/IERC721A/read/symbol.ts | 5 +- .../__generated__/IERC721A/read/tokenURI.ts | 6 +- .../IERC721A/read/totalSupply.ts | 5 +- .../__generated__/IERC721A/write/approve.ts | 30 +- .../IERC721A/write/safeTransferFrom.ts | 32 +- .../IERC721A/write/setApprovalForAll.ts | 30 +- .../IERC721A/write/transferFrom.ts | 32 +- .../events/ConsecutiveTransfer.ts | 4 +- .../IERC721AQueryable/read/tokensOfOwner.ts | 6 +- .../IERC721AQueryable/read/tokensOfOwnerIn.ts | 10 +- .../read/nextTokenIdToMint.ts | 5 +- .../IERC721Enumerable/read/tokenByIndex.ts | 6 +- .../read/tokenOfOwnerByIndex.ts | 8 +- .../IERC721Receiver/write/onERC721Received.ts | 34 +- .../ILazyMint/events/TokensLazyMinted.ts | 4 +- .../__generated__/ILazyMint/write/lazyMint.ts | 34 +- .../IMintableERC721/events/TokensMinted.ts | 4 +- .../IMintableERC721/write/mintTo.ts | 30 +- .../INFTMetadata/read/supportsInterface.ts | 6 +- .../INFTMetadata/write/freezeMetadata.ts | 2 +- .../INFTMetadata/write/setTokenURI.ts | 30 +- .../INFTStake/write/depositRewardTokens.ts | 28 +- .../INFTStake/write/withdrawRewardTokens.ts | 28 +- .../ISharedMetadata/read/sharedMetadata.ts | 13 +- .../write/setSharedMetadata.ts | 38 +- .../events/SharedMetadataDeleted.ts | 4 +- .../events/SharedMetadataUpdated.ts | 4 +- .../read/getAllSharedMetadata.ts | 23 +- .../write/deleteSharedMetadata.ts | 28 +- .../write/setSharedMetadata.ts | 40 +- .../events/TokensMintedWithSignature.ts | 4 +- .../ISignatureMintERC721/read/verify.ts | 34 +- .../write/mintWithSignature.ts | 54 +- .../events/TokensMintedWithSignature.ts | 4 +- .../ISignatureMintERC721_v2/read/verify.ts | 36 +- .../write/mintWithSignature.ts | 56 +- .../IStaking721/events/RewardsClaimed.ts | 4 +- .../IStaking721/events/TokensStaked.ts | 4 +- .../IStaking721/events/TokensWithdrawn.ts | 4 +- .../IStaking721/read/getStakeInfo.ts | 10 +- .../IStaking721/write/claimRewards.ts | 2 +- .../__generated__/IStaking721/write/stake.ts | 28 +- .../IStaking721/write/withdraw.ts | 28 +- .../LoyaltyCard/events/TokensMinted.ts | 4 +- .../events/TokensMintedWithSignature.ts | 4 +- .../LoyaltyCard/read/nextTokenIdToMint.ts | 5 +- .../LoyaltyCard/read/supportsInterface.ts | 6 +- .../LoyaltyCard/read/tokenURI.ts | 6 +- .../LoyaltyCard/read/totalMinted.ts | 5 +- .../__generated__/LoyaltyCard/write/cancel.ts | 28 +- .../LoyaltyCard/write/initialize.ts | 46 +- .../__generated__/LoyaltyCard/write/mintTo.ts | 32 +- .../LoyaltyCard/write/mintWithSignature.ts | 54 +- .../__generated__/LoyaltyCard/write/revoke.ts | 28 +- .../Multiwrap/events/TokensUnwrapped.ts | 4 +- .../Multiwrap/events/TokensWrapped.ts | 4 +- .../Multiwrap/read/contractType.ts | 5 +- .../Multiwrap/read/contractVersion.ts | 5 +- .../Multiwrap/read/getWrappedContents.ts | 18 +- .../Multiwrap/read/nextTokenIdToMint.ts | 5 +- .../Multiwrap/read/supportsInterface.ts | 6 +- .../__generated__/Multiwrap/read/tokenURI.ts | 6 +- .../Multiwrap/write/initialize.ts | 40 +- .../__generated__/Multiwrap/write/unwrap.ts | 30 +- .../__generated__/Multiwrap/write/wrap.ts | 44 +- .../extensions/erc721/customDrop721.test.ts | 17 +- .../src/extensions/erc721/drop721.test.ts | 72 +- .../extensions/erc721/drops/read/canClaim.ts | 12 +- .../extensions/erc721/drops/write/claimTo.ts | 8 +- .../erc721/drops/write/claimToBatch.test.ts | 44 +- .../erc721/drops/write/claimToBatch.ts | 16 +- .../drops/write/resetClaimEligibility.ts | 2 +- .../erc721/drops/write/setClaimConditions.ts | 4 +- .../erc721/drops/write/updateMetadata.test.ts | 49 +- .../erc721/drops/write/updateMetadata.ts | 4 +- .../read/getBatchesToReveal.test.ts | 12 +- .../lazyMinting/read/getBatchesToReveal.ts | 2 +- .../lazyMinting/write/createAndReveal.test.ts | 27 +- .../write/createDelayedRevealBatch.test.ts | 18 +- .../write/createDelayedRevealBatch.ts | 2 +- .../erc721/lazyMinting/write/reveal.test.ts | 6 +- .../erc721/lazyMinting/write/reveal.ts | 2 +- .../extensions/erc721/read/getAllOwners.ts | 2 +- .../src/extensions/erc721/read/getNFT.test.ts | 8 +- .../src/extensions/erc721/read/getNFT.ts | 18 +- .../src/extensions/erc721/read/getNFTs.ts | 6 +- .../erc721/read/getOwnedNFTs.test.ts | 8 +- .../extensions/erc721/read/getOwnedNFTs.ts | 2 +- .../erc721/read/getTotalClaimedSupply.test.ts | 22 +- .../read/getTotalUnclaimedSupply.test.ts | 22 +- .../src/extensions/erc721/token721.test.ts | 26 +- .../src/extensions/erc721/write/lazyMint.ts | 2 +- .../src/extensions/erc721/write/mintTo.ts | 4 +- .../erc721/write/setSharedMetadata.ts | 6 +- .../src/extensions/erc721/write/sigMint.ts | 70 +- .../erc721/write/sigMint721.test.ts | 88 +- .../erc721/write/updateTokenURI.test.ts | 14 +- .../extensions/erc721/write/updateTokenURI.ts | 2 +- .../IRouterState/read/getAllExtensions.ts | 27 +- .../IERC7579Account/read/accountId.ts | 7 +- .../IERC7579Account/read/isModuleInstalled.ts | 10 +- .../IERC7579Account/read/isValidSignature.ts | 8 +- .../read/supportsExecutionMode.ts | 6 +- .../IERC7579Account/read/supportsModule.ts | 6 +- .../IERC7579Account/write/execute.ts | 30 +- .../write/executeFromExecutor.ts | 32 +- .../IERC7579Account/write/installModule.ts | 32 +- .../IERC7579Account/write/uninstallModule.ts | 32 +- .../events/OwnershipTransferred.ts | 4 +- .../ModularAccountFactory/events/Upgraded.ts | 4 +- .../read/accountImplementation.ts | 5 +- .../ModularAccountFactory/read/entrypoint.ts | 5 +- .../ModularAccountFactory/read/getAddress.ts | 10 +- .../read/implementation.ts | 7 +- .../ModularAccountFactory/read/owner.ts | 7 +- .../ModularAccountFactory/write/addStake.ts | 28 +- .../write/createAccountWithModules.ts | 40 +- .../write/renounceOwnership.ts | 2 +- .../write/transferOwnership.ts | 28 +- .../write/unlockStake.ts | 2 +- .../ModularAccountFactory/write/upgradeTo.ts | 28 +- .../ModularAccountFactory/write/withdraw.ts | 32 +- .../write/withdrawStake.ts | 28 +- .../MinimalAccount/events/Executed.ts | 4 +- .../MinimalAccount/events/SessionCreated.ts | 4 +- .../MinimalAccount/read/eip712Domain.ts | 19 +- .../read/getCallPoliciesForSigner.ts | 44 +- .../read/getSessionExpirationForSigner.ts | 6 +- .../read/getSessionStateForSigner.ts | 44 +- .../read/getTransferPoliciesForSigner.ts | 22 +- .../MinimalAccount/read/isWildcardSigner.ts | 6 +- .../write/createSessionWithSig.ts | 98 +- .../MinimalAccount/write/execute.ts | 36 +- .../MinimalAccount/write/executeWithSig.ts | 44 +- .../__generated__/IBundler/read/idGateway.ts | 5 +- .../__generated__/IBundler/read/keyGateway.ts | 5 +- .../__generated__/IBundler/read/price.ts | 6 +- .../__generated__/IBundler/write/register.ts | 58 +- .../IIdGateway/read/REGISTER_TYPEHASH.ts | 5 +- .../IIdGateway/read/idRegistry.ts | 5 +- .../__generated__/IIdGateway/read/price.ts | 6 +- .../IIdGateway/read/storageRegistry.ts | 5 +- .../IIdGateway/write/register.ts | 34 +- .../IIdGateway/write/registerFor.ts | 40 +- .../IIdRegistry/events/AdminReset.ts | 4 +- .../events/ChangeRecoveryAddress.ts | 4 +- .../IIdRegistry/events/Recover.ts | 4 +- .../IIdRegistry/events/Register.ts | 4 +- .../IIdRegistry/events/Transfer.ts | 4 +- .../read/CHANGE_RECOVERY_ADDRESS_TYPEHASH.ts | 5 +- .../TRANSFER_AND_CHANGE_RECOVERY_TYPEHASH.ts | 5 +- .../IIdRegistry/read/TRANSFER_TYPEHASH.ts | 5 +- .../IIdRegistry/read/custodyOf.ts | 8 +- .../IIdRegistry/read/gatewayFrozen.ts | 5 +- .../IIdRegistry/read/idCounter.ts | 5 +- .../IIdRegistry/read/idGateway.ts | 5 +- .../__generated__/IIdRegistry/read/idOf.ts | 8 +- .../IIdRegistry/read/recoveryOf.ts | 8 +- .../IIdRegistry/read/verifyFidSignature.ts | 14 +- .../write/changeRecoveryAddress.ts | 28 +- .../write/changeRecoveryAddressFor.ts | 34 +- .../IIdRegistry/write/recover.ts | 34 +- .../IIdRegistry/write/recoverFor.ts | 38 +- .../IIdRegistry/write/transfer.ts | 32 +- .../write/transferAndChangeRecovery.ts | 34 +- .../write/transferAndChangeRecoveryFor.ts | 40 +- .../IIdRegistry/write/transferFor.ts | 38 +- .../IKeyGateway/read/ADD_TYPEHASH.ts | 5 +- .../IKeyGateway/read/keyRegistry.ts | 5 +- .../__generated__/IKeyGateway/read/nonces.ts | 6 +- .../__generated__/IKeyGateway/write/add.ts | 34 +- .../__generated__/IKeyGateway/write/addFor.ts | 40 +- .../__generated__/IKeyRegistry/events/Add.ts | 4 +- .../IKeyRegistry/events/AdminReset.ts | 4 +- .../IKeyRegistry/events/Remove.ts | 4 +- .../IKeyRegistry/read/REMOVE_TYPEHASH.ts | 5 +- .../IKeyRegistry/read/gatewayFrozen.ts | 5 +- .../IKeyRegistry/read/idRegistry.ts | 5 +- .../__generated__/IKeyRegistry/read/keyAt.ts | 10 +- .../IKeyRegistry/read/keyDataOf.ts | 8 +- .../IKeyRegistry/read/keyGateway.ts | 5 +- .../__generated__/IKeyRegistry/read/keysOf.ts | 8 +- .../IKeyRegistry/read/maxKeysPerFid.ts | 5 +- .../IKeyRegistry/read/totalKeys.ts | 8 +- .../IKeyRegistry/write/remove.ts | 28 +- .../IKeyRegistry/write/removeFor.ts | 34 +- .../read/deprecationTimestamp.ts | 5 +- .../IStorageRegistry/read/maxUnits.ts | 5 +- .../IStorageRegistry/read/price.ts | 6 +- .../IStorageRegistry/read/rentedUnits.ts | 5 +- .../IStorageRegistry/read/unitPrice.ts | 5 +- .../IStorageRegistry/read/usdUnitPrice.ts | 5 +- .../IStorageRegistry/write/batchRent.ts | 30 +- .../IStorageRegistry/write/rent.ts | 32 +- .../farcaster/contracts/getBundler.ts | 4 +- .../farcaster/contracts/getIdGateway.ts | 4 +- .../farcaster/contracts/getIdRegistry.ts | 4 +- .../farcaster/contracts/getKeyGateway.ts | 4 +- .../farcaster/contracts/getStorageRegistry.ts | 4 +- .../src/extensions/farcaster/ed25519.ts | 2 +- .../eip712Signatures/addSignature.ts | 6 +- .../eip712Signatures/keyRequestSignature.ts | 16 +- .../eip712Signatures/registerSignature.ts | 6 +- .../extensions/farcaster/read/getFid.test.ts | 8 +- .../src/extensions/farcaster/read/getFid.ts | 2 +- .../farcaster/read/getNonce.test.ts | 4 +- .../src/extensions/farcaster/read/getNonce.ts | 4 +- .../read/getRegistrationPrice.test.ts | 4 +- .../farcaster/read/getRegistrationPrice.ts | 2 +- .../farcaster/read/getStoragePrice.test.ts | 6 +- .../farcaster/read/getStoragePrice.ts | 2 +- .../read/getUsdRegistrationPrice.test.ts | 4 +- .../farcaster/read/getUsdRegistrationPrice.ts | 2 +- .../farcaster/read/getUsdStoragePrice.test.ts | 4 +- .../farcaster/read/getUsdStoragePrice.ts | 2 +- .../extensions/farcaster/write/addSigner.ts | 18 +- .../farcaster/write/addSignerFor.ts | 32 +- .../extensions/farcaster/write/registerFid.ts | 16 +- .../farcaster/write/registerFidAndSigner.ts | 92 +- .../extensions/farcaster/write/rentStorage.ts | 12 +- .../FollowNFT/read/getFollowData.ts | 16 +- .../FollowNFT/read/getFollowTimestamp.ts | 6 +- .../FollowNFT/read/getFollowTokenId.ts | 6 +- .../FollowNFT/read/getFollowerCount.ts | 5 +- .../FollowNFT/read/getFollowerProfileId.ts | 6 +- .../read/getOriginalFollowTimestamp.ts | 6 +- .../read/getProfileIdAllowedToRecover.ts | 6 +- .../FollowNFT/read/isFollowing.ts | 6 +- .../FollowNFT/read/mintTimestampOf.ts | 6 +- .../LensHandle/read/getHandle.ts | 6 +- .../read/getHandleTokenURIContract.ts | 5 +- .../LensHandle/read/getLocalName.ts | 6 +- .../LensHandle/read/getTokenId.ts | 6 +- .../lens/__generated__/LensHub/read/exists.ts | 6 +- .../LensHub/read/getContentURI.ts | 8 +- .../__generated__/LensHub/read/getProfile.ts | 22 +- .../LensHub/read/getProfileIdByHandleHash.ts | 6 +- .../LensHub/read/getPublication.ts | 28 +- .../LensHub/read/mintTimestampOf.ts | 6 +- .../lens/__generated__/LensHub/read/nonces.ts | 6 +- .../__generated__/LensHub/read/tokenDataOf.ts | 12 +- .../ModuleRegistry/read/getModuleTypes.ts | 6 +- .../read/isErc20CurrencyRegistered.ts | 6 +- .../ModuleRegistry/read/isModuleRegistered.ts | 6 +- .../read/isModuleRegisteredAs.ts | 8 +- .../read/getDefaultHandle.ts | 6 +- .../TokenHandleRegistry/read/nonces.ts | 8 +- .../TokenHandleRegistry/read/resolve.ts | 6 +- .../lens/read/getFullProfile.test.ts | 6 +- .../extensions/lens/read/getFullProfile.ts | 4 +- .../lens/read/getHandleFromProfileId.test.ts | 6 +- .../lens/read/getProfileMetadata.test.ts | 6 +- .../lens/read/getProfileMetadata.ts | 2 +- .../events/BuyerApprovedForListing.ts | 4 +- .../events/CancelledListing.ts | 4 +- .../events/CurrencyApprovedForListing.ts | 4 +- .../IDirectListings/events/NewListing.ts | 4 +- .../IDirectListings/events/NewSale.ts | 4 +- .../IDirectListings/events/UpdatedListing.ts | 4 +- .../read/currencyPriceForListing.ts | 8 +- .../IDirectListings/read/getAllListings.ts | 36 +- .../read/getAllValidListings.ts | 36 +- .../IDirectListings/read/getListing.ts | 34 +- .../read/isBuyerApprovedForListing.ts | 8 +- .../read/isCurrencyApprovedForListing.ts | 8 +- .../IDirectListings/read/totalListings.ts | 5 +- .../write/approveBuyerForListing.ts | 32 +- .../write/approveCurrencyForListing.ts | 32 +- .../IDirectListings/write/buyFromListing.ts | 36 +- .../IDirectListings/write/cancelListing.ts | 28 +- .../IDirectListings/write/createListing.ts | 48 +- .../IDirectListings/write/updateListing.ts | 48 +- .../IEnglishAuctions/events/AuctionClosed.ts | 4 +- .../events/CancelledAuction.ts | 4 +- .../IEnglishAuctions/events/NewAuction.ts | 4 +- .../IEnglishAuctions/events/NewBid.ts | 4 +- .../IEnglishAuctions/read/getAllAuctions.ts | 40 +- .../read/getAllValidAuctions.ts | 40 +- .../IEnglishAuctions/read/getAuction.ts | 38 +- .../IEnglishAuctions/read/getWinningBid.ts | 12 +- .../IEnglishAuctions/read/isAuctionExpired.ts | 6 +- .../IEnglishAuctions/read/isNewWinningBid.ts | 8 +- .../IEnglishAuctions/read/totalAuctions.ts | 5 +- .../IEnglishAuctions/write/bidInAuction.ts | 30 +- .../IEnglishAuctions/write/cancelAuction.ts | 28 +- .../write/collectAuctionPayout.ts | 28 +- .../write/collectAuctionTokens.ts | 28 +- .../IEnglishAuctions/write/createAuction.ts | 52 +- .../IMarketplace/events/AuctionClosed.ts | 4 +- .../IMarketplace/events/ListingAdded.ts | 4 +- .../IMarketplace/events/ListingRemoved.ts | 4 +- .../IMarketplace/events/ListingUpdated.ts | 4 +- .../IMarketplace/events/NewOffer.ts | 4 +- .../IMarketplace/events/NewSale.ts | 4 +- .../events/PlatformFeeInfoUpdated.ts | 4 +- .../IMarketplace/read/contractType.ts | 5 +- .../IMarketplace/read/contractURI.ts | 5 +- .../IMarketplace/read/contractVersion.ts | 5 +- .../IMarketplace/read/getPlatformFeeInfo.ts | 5 +- .../IMarketplace/write/acceptOffer.ts | 34 +- .../__generated__/IMarketplace/write/buy.ts | 36 +- .../IMarketplace/write/cancelDirectListing.ts | 28 +- .../IMarketplace/write/closeAuction.ts | 30 +- .../IMarketplace/write/createListing.ts | 48 +- .../__generated__/IMarketplace/write/offer.ts | 36 +- .../IMarketplace/write/setContractURI.ts | 28 +- .../IMarketplace/write/setPlatformFeeInfo.ts | 30 +- .../IMarketplace/write/updateListing.ts | 40 +- .../IOffers/events/AcceptedOffer.ts | 4 +- .../IOffers/events/CancelledOffer.ts | 4 +- .../__generated__/IOffers/events/NewOffer.ts | 4 +- .../IOffers/read/getAllOffers.ts | 32 +- .../IOffers/read/getAllValidOffers.ts | 32 +- .../__generated__/IOffers/read/getOffer.ts | 30 +- .../__generated__/IOffers/read/totalOffers.ts | 5 +- .../IOffers/write/acceptOffer.ts | 28 +- .../IOffers/write/cancelOffer.ts | 28 +- .../__generated__/IOffers/write/makeOffer.ts | 44 +- .../direct-listings/direct-listings.test.ts | 72 +- .../direct-listings/read/getAllListings.ts | 4 +- .../read/getAllValidListings.ts | 4 +- .../read/isBuyerApprovedForListing.ts | 2 +- .../marketplace/direct-listings/utils.ts | 36 +- .../direct-listings/write/buyFromListing.ts | 14 +- .../direct-listings/write/createListing.ts | 18 +- .../direct-listings/write/updateListing.ts | 18 +- .../english-auctions/english-auctions.test.ts | 52 +- .../english-auctions/read/getAllAuctions.ts | 4 +- .../read/getAllValidAuctions.ts | 4 +- .../english-auctions/read/getWinningBid.ts | 2 +- .../marketplace/english-auctions/utils.ts | 44 +- .../english-auctions/write/bidInAuction.ts | 12 +- .../english-auctions/write/buyoutAuction.ts | 8 +- .../english-auctions/write/cancelAuction.ts | 4 +- .../english-auctions/write/createAuction.ts | 22 +- .../english-auctions/write/executeSale.ts | 4 +- .../marketplace/getAllInBatches.test.ts | 32 +- .../marketplace/offers/offers.test.ts | 42 +- .../marketplace/offers/read/getAllOffers.ts | 4 +- .../offers/read/getAllValidOffers.ts | 4 +- .../extensions/marketplace/offers/utils.ts | 20 +- .../marketplace/offers/write/acceptOffer.ts | 4 +- .../marketplace/offers/write/makeOffer.ts | 20 +- .../modules/BatchMetadataERC1155/index.ts | 6 +- .../modules/BatchMetadataERC721/index.ts | 6 +- .../BatchMetadataERC721/uploadMetadata.ts | 2 +- .../ClaimableERC1155/claimableERC1155.test.ts | 80 +- .../modules/ClaimableERC1155/index.ts | 11 +- .../modules/ClaimableERC1155/mint.ts | 14 +- .../ClaimableERC1155/setClaimConditions.ts | 28 +- .../ClaimableERC20/claimableERC20.test.ts | 42 +- .../modules/ClaimableERC20/index.ts | 11 +- .../extensions/modules/ClaimableERC20/mint.ts | 14 +- .../ClaimableERC20/setClaimConditions.ts | 30 +- .../ClaimableERC721/claimableERC721.test.ts | 56 +- .../modules/ClaimableERC721/index.ts | 11 +- .../modules/ClaimableERC721/mint.ts | 12 +- .../ClaimableERC721/setClaimConditions.ts | 26 +- .../modules/MintableERC1155/index.ts | 17 +- .../modules/MintableERC1155/mintWithRole.ts | 6 +- .../MintableERC1155/mintWithSignature.ts | 36 +- .../MintableERC1155/mintableERC1155.test.ts | 58 +- .../extensions/modules/MintableERC20/index.ts | 18 +- .../modules/MintableERC20/mintWithRole.ts | 6 +- .../MintableERC20/mintWithSignature.ts | 28 +- .../MintableERC20/mintableERC20.test.ts | 32 +- .../modules/MintableERC721/index.ts | 17 +- .../modules/MintableERC721/mintWithRole.ts | 4 +- .../MintableERC721/mintWithSignature.ts | 28 +- .../MintableERC721/mintableERC721.test.ts | 44 +- .../OpenEditionMetadataERC721/index.ts | 7 +- .../openEditionERC721.test.ts | 54 +- .../modules/RoyaltyERC1155/index.ts | 23 +- .../extensions/modules/RoyaltyERC721/index.ts | 23 +- .../modules/SequentialTokenIdERC1155/index.ts | 2 +- .../modules/TransferableERC1155/index.ts | 6 +- .../modules/TransferableERC20/index.ts | 6 +- .../modules/TransferableERC721/index.ts | 6 +- .../BatchMetadataERC1155/module/install.ts | 4 +- .../read/encodeBytesOnInstall.ts | 5 +- .../read/getAllMetadataBatches.ts | 13 +- .../read/getBatchIndex.ts | 6 +- .../read/getMetadataBatch.ts | 14 +- .../read/getModuleConfig.ts | 29 +- .../BatchMetadataERC1155/write/setBaseURI.ts | 30 +- .../write/uploadMetadata.ts | 30 +- .../BatchMetadataERC721/module/install.ts | 4 +- .../read/encodeBytesOnInstall.ts | 5 +- .../read/getAllMetadataBatches.ts | 13 +- .../BatchMetadataERC721/read/getBatchIndex.ts | 6 +- .../read/getMetadataBatch.ts | 14 +- .../read/getModuleConfig.ts | 29 +- .../BatchMetadataERC721/write/setBaseURI.ts | 30 +- .../write/uploadMetadata.ts | 30 +- .../encode/encodeBytesBeforeMintERC1155.ts | 10 +- ...codeBytesBeforeMintWithSignatureERC1155.ts | 16 +- .../encode/encodeBytesOnInstall.ts | 2 +- .../ClaimableERC1155/module/install.ts | 8 +- .../read/getClaimConditionByTokenId.ts | 26 +- .../ClaimableERC1155/read/getSaleConfig.ts | 7 +- .../write/setClaimConditionByTokenId.ts | 48 +- .../ClaimableERC1155/write/setSaleConfig.ts | 28 +- .../encode/encodeBytesBeforeMintERC20.ts | 10 +- ...encodeBytesBeforeMintWithSignatureERC20.ts | 16 +- .../encode/encodeBytesOnInstall.ts | 2 +- .../ClaimableERC20/module/install.ts | 8 +- .../ClaimableERC20/read/getClaimCondition.ts | 25 +- .../ClaimableERC20/read/getSaleConfig.ts | 7 +- .../ClaimableERC20/write/setClaimCondition.ts | 46 +- .../ClaimableERC20/write/setSaleConfig.ts | 28 +- .../encode/encodeBytesBeforeMintERC721.ts | 10 +- ...ncodeBytesBeforeMintWithSignatureERC721.ts | 16 +- .../encode/encodeBytesOnInstall.ts | 2 +- .../ClaimableERC721/module/install.ts | 8 +- .../ClaimableERC721/read/getClaimCondition.ts | 25 +- .../ClaimableERC721/read/getSaleConfig.ts | 7 +- .../write/setClaimCondition.ts | 46 +- .../ClaimableERC721/write/setSaleConfig.ts | 28 +- .../__generated__/ERC1155Core/write/burn.ts | 34 +- .../ERC1155Core/write/initialize.ts | 38 +- .../__generated__/ERC1155Core/write/mint.ts | 36 +- .../ERC1155Core/write/mintWithSignature.ts | 38 +- .../__generated__/ERC20Core/write/burn.ts | 32 +- .../ERC20Core/write/initialize.ts | 38 +- .../__generated__/ERC20Core/write/mint.ts | 32 +- .../ERC20Core/write/mintWithSignature.ts | 34 +- .../ERC721Core/read/totalMinted.ts | 5 +- .../__generated__/ERC721Core/write/burn.ts | 30 +- .../ERC721Core/write/initialize.ts | 38 +- .../__generated__/ERC721Core/write/mint.ts | 34 +- .../ERC721Core/write/mintWithSignature.ts | 36 +- .../IModularCore/read/getInstalledModules.ts | 33 +- .../read/getSupportedCallbackFunctions.ts | 11 +- .../IModularCore/read/supportsInterface.ts | 6 +- .../IModularCore/write/installModule.ts | 30 +- .../IModularCore/write/uninstallModule.ts | 30 +- .../IModule/read/getModuleConfig.ts | 27 +- ...codeBytesBeforeMintWithSignatureERC1155.ts | 14 +- .../encode/encodeBytesOnInstall.ts | 2 +- .../MintableERC1155/module/install.ts | 8 +- .../MintableERC1155/read/getSaleConfig.ts | 7 +- .../MintableERC1155/write/setSaleConfig.ts | 28 +- .../MintableERC1155/write/setTokenURI.ts | 30 +- ...encodeBytesBeforeMintWithSignatureERC20.ts | 14 +- .../encode/encodeBytesOnInstall.ts | 2 +- .../MintableERC20/module/install.ts | 8 +- .../MintableERC20/read/getSaleConfig.ts | 7 +- .../MintableERC20/write/setSaleConfig.ts | 28 +- ...ncodeBytesBeforeMintWithSignatureERC721.ts | 14 +- .../encode/encodeBytesOnInstall.ts | 2 +- .../MintableERC721/events/NewMetadataBatch.ts | 4 +- .../MintableERC721/module/install.ts | 8 +- .../MintableERC721/read/getSaleConfig.ts | 7 +- .../MintableERC721/write/setSaleConfig.ts | 28 +- .../module/install.ts | 4 +- .../read/encodeBytesOnInstall.ts | 5 +- .../read/onTokenURI.ts | 6 +- .../write/setSharedMetadata.ts | 38 +- .../events/OwnershipHandoverCanceled.ts | 4 +- .../events/OwnershipHandoverRequested.ts | 4 +- .../events/OwnershipTransferred.ts | 4 +- .../OwnableRoles/events/RolesUpdated.ts | 4 +- .../OwnableRoles/read/hasAllRoles.ts | 8 +- .../OwnableRoles/read/hasAnyRole.ts | 8 +- .../__generated__/OwnableRoles/read/owner.ts | 7 +- .../read/ownershipHandoverExpiresAt.ts | 8 +- .../OwnableRoles/read/rolesOf.ts | 8 +- .../write/cancelOwnershipHandover.ts | 2 +- .../write/completeOwnershipHandover.ts | 28 +- .../OwnableRoles/write/grantRoles.ts | 30 +- .../OwnableRoles/write/renounceOwnership.ts | 2 +- .../OwnableRoles/write/renounceRoles.ts | 28 +- .../write/requestOwnershipHandover.ts | 2 +- .../OwnableRoles/write/revokeRoles.ts | 30 +- .../OwnableRoles/write/transferOwnership.ts | 28 +- .../encode/encodeBytesOnInstall.ts | 6 +- .../events/DefaultRoyaltyUpdated.ts | 4 +- .../events/TokenRoyaltyUpdated.ts | 4 +- .../RoyaltyERC1155/module/install.ts | 8 +- .../read/getDefaultRoyaltyInfo.ts | 5 +- .../read/getRoyaltyInfoForToken.ts | 6 +- .../read/getTransferValidationFunction.ts | 9 +- .../read/getTransferValidator.ts | 7 +- .../RoyaltyERC1155/read/royaltyInfo.ts | 12 +- .../write/setDefaultRoyaltyInfo.ts | 30 +- .../write/setRoyaltyInfoForToken.ts | 32 +- .../write/setTransferValidator.ts | 28 +- .../encode/encodeBytesOnInstall.ts | 6 +- .../events/DefaultRoyaltyUpdated.ts | 4 +- .../events/TokenRoyaltyUpdated.ts | 4 +- .../RoyaltyERC721/module/install.ts | 8 +- .../read/getDefaultRoyaltyInfo.ts | 5 +- .../read/getRoyaltyInfoForToken.ts | 6 +- .../read/getTransferValidationFunction.ts | 9 +- .../read/getTransferValidator.ts | 7 +- .../RoyaltyERC721/read/royaltyInfo.ts | 12 +- .../write/setDefaultRoyaltyInfo.ts | 30 +- .../write/setRoyaltyInfoForToken.ts | 32 +- .../write/setTransferValidator.ts | 28 +- .../encode/encodeBytesOnInstall.ts | 2 +- .../module/install.ts | 8 +- .../read/getModuleConfig.ts | 29 +- .../read/getNextTokenId.ts | 5 +- .../write/updateTokenIdERC1155.ts | 28 +- .../TransferableERC1155/module/install.ts | 4 +- .../read/encodeBytesOnInstall.ts | 5 +- .../read/isTransferEnabled.ts | 5 +- .../read/isTransferEnabledFor.ts | 6 +- .../write/setTransferable.ts | 28 +- .../write/setTransferableFor.ts | 30 +- .../TransferableERC20/module/install.ts | 4 +- .../read/encodeBytesOnInstall.ts | 5 +- .../read/isTransferEnabled.ts | 5 +- .../read/isTransferEnabledFor.ts | 6 +- .../write/setTransferable.ts | 28 +- .../write/setTransferableFor.ts | 30 +- .../TransferableERC721/module/install.ts | 4 +- .../read/encodeBytesOnInstall.ts | 5 +- .../read/isTransferEnabled.ts | 5 +- .../read/isTransferEnabledFor.ts | 6 +- .../write/setTransferable.ts | 28 +- .../write/setTransferableFor.ts | 30 +- .../common/checkModulesCompatibility.test.ts | 12 +- .../common/checkModulesCompatibility.ts | 8 +- .../modules/common/getOrDeployModule.ts | 6 +- .../modules/common/grantMinterRole.ts | 2 +- .../modules/common/installPublishedModule.ts | 14 +- .../modules/common/uninstallModuleByProxy.ts | 8 +- .../common/uninstallPublishedModule.ts | 4 +- .../IMulticall3/read/getBasefee.ts | 7 +- .../IMulticall3/read/getBlockHash.ts | 8 +- .../IMulticall3/read/getBlockNumber.ts | 7 +- .../IMulticall3/read/getChainId.ts | 7 +- .../read/getCurrentBlockCoinbase.ts | 7 +- .../read/getCurrentBlockDifficulty.ts | 7 +- .../read/getCurrentBlockGasLimit.ts | 7 +- .../read/getCurrentBlockTimestamp.ts | 7 +- .../IMulticall3/read/getEthBalance.ts | 8 +- .../IMulticall3/read/getLastBlockHash.ts | 7 +- .../IMulticall3/write/aggregate.ts | 38 +- .../IMulticall3/write/aggregate3.ts | 44 +- .../IMulticall3/write/aggregate3Value.ts | 46 +- .../IMulticall3/write/blockAndAggregate.ts | 46 +- .../IMulticall3/write/tryAggregate.ts | 44 +- .../IMulticall3/write/tryBlockAndAggregate.ts | 48 +- .../__generated__/IPack/events/PackCreated.ts | 4 +- .../__generated__/IPack/events/PackOpened.ts | 4 +- .../__generated__/IPack/events/PackUpdated.ts | 4 +- .../__generated__/IPack/read/canUpdatePack.ts | 6 +- .../IPack/read/getPackContents.ts | 20 +- .../IPack/read/getTokenCountOfBundle.ts | 6 +- .../IPack/read/getTokenOfBundle.ts | 18 +- .../IPack/read/getUriOfBundle.ts | 6 +- .../IPack/write/addPackContents.ts | 48 +- .../__generated__/IPack/write/createPack.ts | 52 +- .../__generated__/IPack/write/openPack.ts | 40 +- .../events/PackOpenRequested.ts | 4 +- .../events/PackRandomnessFulfilled.ts | 4 +- .../IPackVRFDirect/read/canClaimRewards.ts | 6 +- .../IPackVRFDirect/write/claimRewards.ts | 14 +- .../write/openPackAndClaimRewards.ts | 32 +- .../src/extensions/pack/createNewPack.test.ts | 58 +- .../src/extensions/pack/createNewPack.ts | 29 +- .../IPermissions/events/RoleAdminChanged.ts | 4 +- .../IPermissions/events/RoleGranted.ts | 4 +- .../IPermissions/events/RoleRevoked.ts | 4 +- .../IPermissions/read/getRoleAdmin.ts | 6 +- .../IPermissions/read/hasRole.ts | 8 +- .../IPermissions/write/grantRole.ts | 30 +- .../IPermissions/write/renounceRole.ts | 30 +- .../IPermissions/write/revokeRole.ts | 30 +- .../events/RoleAdminChanged.ts | 4 +- .../events/RoleGranted.ts | 4 +- .../events/RoleRevoked.ts | 4 +- .../read/getRoleAdmin.ts | 6 +- .../read/getRoleMember.ts | 8 +- .../read/getRoleMemberCount.ts | 6 +- .../IPermissionsEnumerable/read/hasRole.ts | 8 +- .../IPermissionsEnumerable/write/grantRole.ts | 30 +- .../write/renounceRole.ts | 30 +- .../write/revokeRole.ts | 30 +- .../permissions/permissions.test.ts | 16 +- .../permissions/read/getAllMembers.ts | 4 +- .../permissions/read/getRoleAdmin.ts | 2 +- .../permissions/read/getRoleMember.ts | 4 +- .../permissions/read/getRoleMemberCount.ts | 2 +- .../extensions/permissions/read/hasRole.ts | 4 +- .../src/extensions/permissions/utils.ts | 14 +- .../extensions/permissions/write/grantRole.ts | 4 +- .../permissions/write/renounceRole.ts | 4 +- .../permissions/write/revokeRole.ts | 4 +- .../DropERC1155/write/initialize.ts | 46 +- .../DropERC20/write/initialize.ts | 42 +- .../DropERC721/write/initialize.ts | 46 +- .../Marketplace/write/initialize.ts | 36 +- .../OpenEditionERC721/write/initialize.ts | 42 +- .../__generated__/Pack/write/initialize.ts | 40 +- .../__generated__/Split/write/initialize.ts | 36 +- .../TokenERC1155/write/initialize.ts | 46 +- .../TokenERC20/write/initialize.ts | 42 +- .../TokenERC721/write/initialize.ts | 46 +- .../VoteERC20/write/initialize.ts | 42 +- .../prebuilts/compute-ref-deployments.ts | 12 +- .../extensions/prebuilts/deploy-erc1155.ts | 38 +- .../src/extensions/prebuilts/deploy-erc20.ts | 30 +- .../prebuilts/deploy-erc721.test.ts | 40 +- .../src/extensions/prebuilts/deploy-erc721.ts | 58 +- .../prebuilts/deploy-marketplace.ts | 48 +- .../prebuilts/deploy-modular-core.test.ts | 62 +- .../extensions/prebuilts/deploy-modular.ts | 39 +- .../extensions/prebuilts/deploy-pack.test.ts | 2 +- .../src/extensions/prebuilts/deploy-pack.ts | 32 +- .../extensions/prebuilts/deploy-published.ts | 74 +- .../src/extensions/prebuilts/deploy-split.ts | 20 +- .../extensions/prebuilts/deploy-vote.test.ts | 6 +- .../src/extensions/prebuilts/deploy-vote.ts | 26 +- .../get-required-transactions.test.ts | 8 +- .../prebuilts/get-required-transactions.ts | 60 +- .../prebuilts/process-ref-deployments.test.ts | 106 +- .../prebuilts/process-ref-deployments.ts | 16 +- .../split/__generated__/Split/read/payee.ts | 6 +- .../__generated__/Split/read/payeeCount.ts | 5 +- .../__generated__/Split/read/releasable.ts | 6 +- .../__generated__/Split/read/released.ts | 6 +- .../split/__generated__/Split/read/shares.ts | 6 +- .../__generated__/Split/read/totalReleased.ts | 5 +- .../__generated__/Split/read/totalShares.ts | 5 +- .../__generated__/Split/write/distribute.ts | 2 +- .../__generated__/Split/write/release.ts | 28 +- .../split/read/getAllRecipientsPercentages.ts | 2 +- .../split/read/getRecipientSplitPercentage.ts | 2 +- .../src/extensions/split/split.test.ts | 6 +- .../IArbWasm/write/activateProgram.ts | 28 +- .../stylus/write/activateStylusContract.ts | 10 +- .../__generated__/IAppURI/read/appURI.ts | 5 +- .../__generated__/IAppURI/write/setAppURI.ts | 28 +- .../IContractFactory/events/ProxyDeployed.ts | 4 +- .../events/ProxyDeployedV2.ts | 4 +- .../write/deployProxyByImplementation.ts | 32 +- .../write/deployProxyByImplementationV2.ts | 34 +- .../events/ContractPublished.ts | 4 +- .../events/ContractUnpublished.ts | 4 +- .../events/PublisherProfileUpdated.ts | 4 +- .../read/getAllPublishedContracts.ts | 20 +- .../read/getPublishedContract.ts | 22 +- .../read/getPublishedContractVersions.ts | 22 +- .../read/getPublishedUriFromCompilerUri.ts | 8 +- .../read/getPublisherProfileUri.ts | 8 +- .../write/publishContract.ts | 38 +- .../write/setPublisherProfileUri.ts | 30 +- .../write/unpublishContract.ts | 30 +- .../IRulesEngine/events/RuleCreated.ts | 4 +- .../IRulesEngine/events/RuleDeleted.ts | 4 +- .../events/RulesEngineOverriden.ts | 4 +- .../IRulesEngine/read/getAllRules.ts | 23 +- .../read/getRulesEngineOverride.ts | 7 +- .../IRulesEngine/read/getScore.ts | 8 +- .../write/createRuleMultiplicative.ts | 40 +- .../IRulesEngine/write/createRuleThreshold.ts | 42 +- .../IRulesEngine/write/deleteRule.ts | 28 +- .../write/setRulesEngineOverride.ts | 28 +- .../events/RequestExecuted.ts | 4 +- .../ISignatureAction/read/verify.ts | 22 +- .../__generated__/ITWFee/read/getFeeInfo.ts | 12 +- .../ITWMultichainRegistry/events/Added.ts | 4 +- .../ITWMultichainRegistry/events/Deleted.ts | 4 +- .../ITWMultichainRegistry/read/count.ts | 8 +- .../ITWMultichainRegistry/read/getAll.ts | 16 +- .../read/getMetadataUri.ts | 10 +- .../ITWMultichainRegistry/write/add.ts | 34 +- .../ITWMultichainRegistry/write/remove.ts | 32 +- .../IThirdwebContract/read/contractType.ts | 5 +- .../IThirdwebContract/read/contractURI.ts | 5 +- .../IThirdwebContract/read/contractVersion.ts | 5 +- .../IThirdwebContract/write/setContractURI.ts | 28 +- .../extensions/thirdweb/write/publish.test.ts | 29 +- .../src/extensions/thirdweb/write/publish.ts | 30 +- .../IQuoter/write/quoteExactInput.ts | 32 +- .../IQuoter/write/quoteExactInputSingle.ts | 38 +- .../IQuoter/write/quoteExactOutput.ts | 32 +- .../IQuoter/write/quoteExactOutputSingle.ts | 38 +- .../ISwapRouter/write/exactInput.ts | 42 +- .../ISwapRouter/write/exactInputSingle.ts | 48 +- .../ISwapRouter/write/exactOutput.ts | 42 +- .../ISwapRouter/write/exactOutputSingle.ts | 48 +- .../IUniswapV3Factory/events/OwnerChanged.ts | 4 +- .../IUniswapV3Factory/events/PoolCreated.ts | 4 +- .../read/feeAmountTickSpacing.ts | 6 +- .../IUniswapV3Factory/read/getPool.ts | 12 +- .../IUniswapV3Factory/read/owner.ts | 5 +- .../IUniswapV3Factory/write/createPool.ts | 34 +- .../write/enableFeeAmount.ts | 30 +- .../IUniswapV3Factory/write/setOwner.ts | 28 +- .../uniswap/read/getUniswapV3Pools.test.ts | 8 +- .../uniswap/read/getUniswapV3Pools.ts | 8 +- .../UnstoppableDomains/read/exists.ts | 6 +- .../UnstoppableDomains/read/getMany.ts | 10 +- .../UnstoppableDomains/read/namehash.ts | 8 +- .../UnstoppableDomains/read/reverseNameOf.ts | 8 +- .../read/resolveAddress.test.ts | 4 +- .../read/resolveAddress.ts | 6 +- .../read/resolveName.test.ts | 2 +- .../unstoppable-domains/read/resolveName.ts | 6 +- .../Vote/read/BALLOT_TYPEHASH.ts | 5 +- .../__generated__/Vote/read/COUNTING_MODE.ts | 5 +- .../Vote/read/getAllProposals.ts | 27 +- .../vote/__generated__/Vote/read/getVotes.ts | 8 +- .../Vote/read/getVotesWithParams.ts | 10 +- .../vote/__generated__/Vote/read/hasVoted.ts | 8 +- .../__generated__/Vote/read/hashProposal.ts | 12 +- .../Vote/read/proposalDeadline.ts | 6 +- .../__generated__/Vote/read/proposalIndex.ts | 5 +- .../Vote/read/proposalSnapshot.ts | 6 +- .../Vote/read/proposalThreshold.ts | 5 +- .../__generated__/Vote/read/proposalVotes.ts | 12 +- .../vote/__generated__/Vote/read/proposals.ts | 16 +- .../vote/__generated__/Vote/read/quorum.ts | 6 +- .../Vote/read/quorumDenominator.ts | 5 +- .../vote/__generated__/Vote/read/state.ts | 6 +- .../vote/__generated__/Vote/read/token.ts | 5 +- .../__generated__/Vote/read/votingDelay.ts | 5 +- .../__generated__/Vote/read/votingPeriod.ts | 5 +- .../vote/__generated__/Vote/write/castVote.ts | 30 +- .../__generated__/Vote/write/castVoteBySig.ts | 36 +- .../Vote/write/castVoteWithReason.ts | 32 +- .../Vote/write/castVoteWithReasonAndParams.ts | 34 +- .../write/castVoteWithReasonAndParamsBySig.ts | 40 +- .../vote/__generated__/Vote/write/execute.ts | 34 +- .../vote/__generated__/Vote/write/propose.ts | 36 +- .../vote/__generated__/Vote/write/relay.ts | 32 +- .../Vote/write/setProposalThreshold.ts | 28 +- .../Vote/write/setVotingDelay.ts | 28 +- .../Vote/write/setVotingPeriod.ts | 28 +- .../Vote/write/updateQuorumNumerator.ts | 28 +- .../src/extensions/vote/read/getAll.ts | 16 +- .../vote/read/getProposalVoteCounts.ts | 2 +- .../thirdweb/src/extensions/vote/types.ts | 2 - .../thirdweb/src/extensions/vote/vote.test.ts | 24 +- .../extensions/vote/write/executeProposal.ts | 4 +- .../events/ContractDeployed.ts | 4 +- packages/thirdweb/src/gas/estimate-l1-fee.ts | 6 +- packages/thirdweb/src/gas/fee-data.ts | 6 +- packages/thirdweb/src/gas/get-gas-price.ts | 2 +- .../thirdweb/src/gas/op-gas-fee-reducer.ts | 1 - packages/thirdweb/src/insight/get-events.ts | 2 +- packages/thirdweb/src/insight/get-nfts.ts | 36 +- packages/thirdweb/src/insight/get-tokens.ts | 12 +- .../thirdweb/src/insight/get-transactions.ts | 6 +- packages/thirdweb/src/insight/index.ts | 4 +- .../thirdweb/src/merkletree/MerkleTree.ts | 7 +- .../src/pay/buyWithCrypto/getQuote.ts | 198 +- .../src/pay/buyWithCrypto/getStatus.ts | 158 +- .../src/pay/buyWithCrypto/getTransfer.ts | 60 +- .../src/pay/buyWithFiat/getPostOnRampQuote.ts | 8 +- .../thirdweb/src/pay/buyWithFiat/getQuote.ts | 48 +- .../thirdweb/src/pay/buyWithFiat/getStatus.ts | 26 +- .../buyWithFiat/isSwapRequiredPostOnramp.ts | 12 +- .../src/pay/convert/cryptoToFiat.test.ts | 20 +- .../src/pay/convert/fiatToCrypto.test.ts | 18 +- .../thirdweb/src/pay/convert/get-token.ts | 4 +- .../design-system/CustomThemeProvider.tsx | 2 +- .../src/react/core/design-system/index.ts | 105 +- .../react/core/errors/mapBridgeError.test.ts | 6 +- .../src/react/core/hooks/auth/useSiweAuth.ts | 23 +- .../core/hooks/contract/useContractEvents.ts | 8 +- .../core/hooks/contract/useReadContract.ts | 4 +- .../core/hooks/contract/useWaitForReceipt.ts | 16 +- .../react/core/hooks/others/useChainQuery.ts | 48 +- .../react/core/hooks/others/useTokenInfo.ts | 8 +- .../hooks/others/useWalletBalance.test.tsx | 16 +- .../core/hooks/others/useWalletBalance.ts | 24 +- .../src/react/core/hooks/pay/useBuyHistory.ts | 4 +- .../core/hooks/pay/useBuyWithCryptoHistory.ts | 4 +- .../core/hooks/pay/useBuyWithCryptoQuote.ts | 6 +- .../core/hooks/pay/useBuyWithCryptoStatus.ts | 4 +- .../core/hooks/pay/useBuyWithFiatHistory.ts | 4 +- .../core/hooks/pay/useBuyWithFiatQuote.ts | 4 +- .../pay/useBuyWithFiatQuotesForProviders.ts | 12 +- .../core/hooks/pay/useBuyWithFiatStatus.ts | 4 +- .../core/hooks/pay/usePostOnrampQuote.ts | 4 +- .../react/core/hooks/rpc/useBlockNumber.ts | 12 +- .../core/hooks/transaction/useEstimateGas.ts | 2 +- .../hooks/transaction/useEstimateGasCost.ts | 2 +- .../useSendAndConfirmTransaction.ts | 2 +- .../transaction/useSendBatchTransaction.ts | 2 +- .../hooks/transaction/useSendTransaction.ts | 50 +- .../src/react/core/hooks/useBridgeError.ts | 16 +- .../react/core/hooks/useBridgePrepare.test.ts | 78 +- .../src/react/core/hooks/useBridgePrepare.ts | 14 +- .../src/react/core/hooks/useBridgeQuote.ts | 42 +- .../react/core/hooks/useBridgeRoutes.test.ts | 40 +- .../src/react/core/hooks/useBridgeRoutes.ts | 24 +- .../src/react/core/hooks/usePaymentMethods.ts | 40 +- .../src/react/core/hooks/useStepExecutor.ts | 30 +- .../react/core/hooks/useTransactionDetails.ts | 40 +- .../wallets/useAddConnectedWallet.test.tsx | 2 +- .../core/hooks/wallets/useAutoConnect.ts | 10 +- .../hooks/wallets/useAutoConnectCore.test.tsx | 12 +- .../core/hooks/wallets/useCapabilities.ts | 4 +- .../core/hooks/wallets/useConnect.test.tsx | 2 +- .../react/core/hooks/wallets/useConnect.ts | 2 +- .../hooks/wallets/useSendAndConfirmCalls.ts | 2 +- .../react/core/hooks/wallets/useSendToken.ts | 12 +- .../hooks/wallets/useSetActiveWallet.test.tsx | 2 +- .../useSwitchActiveWalletChain.test.tsx | 2 +- .../hooks/wallets/useWaitForCallsReceipt.ts | 4 +- .../core/machines/paymentMachine.test.ts | 166 +- .../src/react/core/machines/paymentMachine.ts | 10 +- .../core/providers/thirdweb-provider.tsx | 6 +- .../react/core/social/useSocialProfiles.ts | 4 +- .../thirdweb/src/react/core/utils/account.ts | 8 +- .../src/react/core/utils/createQuery.ts | 2 +- .../src/react/core/utils/defaultTokens.ts | 124 +- .../src/react/core/utils/storage.test.ts | 4 +- .../src/react/core/utils/structuralSharing.ts | 4 +- .../src/react/core/utils/wallet.test.ts | 14 +- .../thirdweb/src/react/core/utils/wallet.ts | 46 +- .../src/react/core/utils/walletIcon.ts | 14 +- .../src/react/core/utils/walletname.ts | 6 +- .../src/react/core/wallet/provider.test.tsx | 3 +- .../src/react/native/design-system/index.ts | 24 +- .../hooks/transaction/useSendTransaction.tsx | 2 +- .../native/hooks/wallets/useLinkProfile.ts | 2 +- .../react/native/hooks/wallets/useProfiles.ts | 8 +- .../hooks/wallets/useUnlinkProfile.test.tsx | 10 +- .../native/hooks/wallets/useUnlinkProfile.ts | 2 +- .../react/native/ui/components/Address.tsx | 10 +- .../react/native/ui/components/ChainIcon.tsx | 8 +- .../src/react/native/ui/components/Header.tsx | 16 +- .../react/native/ui/components/RNImage.tsx | 8 +- .../react/native/ui/components/Skeleton.tsx | 20 +- .../react/native/ui/components/TokenIcon.tsx | 2 +- .../native/ui/components/WalletImage.tsx | 8 +- .../src/react/native/ui/components/button.tsx | 22 +- .../src/react/native/ui/components/input.tsx | 28 +- .../src/react/native/ui/components/text.tsx | 14 +- .../react/native/ui/connect/ConnectButton.tsx | 58 +- .../react/native/ui/connect/ConnectModal.tsx | 182 +- .../native/ui/connect/ConnectedButton.tsx | 36 +- .../native/ui/connect/ConnectedModal.tsx | 133 +- .../src/react/native/ui/connect/ErrorView.tsx | 16 +- .../native/ui/connect/ExternalWalletsList.tsx | 98 +- .../react/native/ui/connect/InAppWalletUI.tsx | 148 +- .../react/native/ui/connect/LoadingView.tsx | 10 +- .../react/native/ui/connect/ReceiveScreen.tsx | 38 +- .../react/native/ui/connect/SendScreen.tsx | 72 +- .../react/native/ui/connect/SuccessView.tsx | 16 +- .../native/ui/connect/TokenListScreen.tsx | 46 +- .../ui/connect/WalletLoadingThumbnail.tsx | 24 +- .../native/ui/prebuilt/Account/avatar.tsx | 14 +- .../native/ui/prebuilt/Account/balance.tsx | 18 +- .../native/ui/prebuilt/Account/blobbie.tsx | 8 +- .../react/native/ui/prebuilt/Account/name.tsx | 14 +- .../react/native/ui/prebuilt/Wallet/name.tsx | 2 +- .../ui/transaction/TransactionButton.tsx | 24 +- .../hooks/transaction/useSendTransaction.tsx | 26 +- .../react/web/hooks/wallets/useLinkProfile.ts | 2 +- .../react/web/hooks/wallets/useProfiles.ts | 8 +- .../hooks/wallets/useUnlinkProfile.test.tsx | 6 +- .../web/hooks/wallets/useUnlinkProfile.ts | 2 +- .../web/ui/AutoConnect/AutoConnect.test.tsx | 2 +- .../web/ui/Bridge/BridgeOrchestrator.tsx | 94 +- .../src/react/web/ui/Bridge/BuyWidget.tsx | 38 +- .../react/web/ui/Bridge/CheckoutWidget.tsx | 42 +- .../src/react/web/ui/Bridge/DirectPayment.tsx | 50 +- .../src/react/web/ui/Bridge/ErrorBanner.tsx | 22 +- .../src/react/web/ui/Bridge/FundWallet.tsx | 96 +- .../src/react/web/ui/Bridge/QuoteLoader.tsx | 72 +- .../src/react/web/ui/Bridge/StepRunner.tsx | 86 +- .../web/ui/Bridge/TransactionPayment.tsx | 216 +- .../react/web/ui/Bridge/TransactionWidget.tsx | 32 +- .../web/ui/Bridge/UnsupportedTokenScreen.tsx | 10 +- .../web/ui/Bridge/common/TokenAndChain.tsx | 60 +- .../web/ui/Bridge/common/TokenBalanceRow.tsx | 34 +- .../react/web/ui/Bridge/common/WithHeader.tsx | 14 +- .../Bridge/payment-details/PaymentDetails.tsx | 113 +- .../payment-details/PaymentOverview.tsx | 90 +- .../FiatProviderSelection.tsx | 60 +- .../payment-selection/PaymentSelection.tsx | 40 +- .../payment-selection/TokenSelection.tsx | 82 +- .../payment-selection/WalletFiatSelection.tsx | 54 +- .../Bridge/payment-success/PaymentReceipt.tsx | 124 +- .../Bridge/payment-success/SuccessScreen.tsx | 30 +- .../react/web/ui/ConnectWallet/Blobbie.tsx | 4 +- .../web/ui/ConnectWallet/ConnectButton.tsx | 142 +- .../web/ui/ConnectWallet/Details.test.tsx | 204 +- .../react/web/ui/ConnectWallet/Details.tsx | 485 +- .../react/web/ui/ConnectWallet/MenuButton.tsx | 46 +- .../ui/ConnectWallet/Modal/AllWalletsUI.tsx | 59 +- .../Modal/AnyWalletConnectUI.tsx | 110 +- .../ui/ConnectWallet/Modal/ConnectEmbed.tsx | 86 +- .../ui/ConnectWallet/Modal/ConnectModal.tsx | 28 +- .../Modal/ConnectModalContent.tsx | 84 +- .../Modal/ConnectModalSkeleton.tsx | 8 +- .../ConnectWallet/Modal/DeepLinkConnectUI.tsx | 24 +- .../ConnectWallet/Modal/InjectedConnectUI.tsx | 14 +- .../Modal/SmartWalletConnectUI.tsx | 34 +- .../react/web/ui/ConnectWallet/Modal/TOS.tsx | 25 +- .../web/ui/ConnectWallet/Modal/screen.tsx | 2 +- .../ui/ConnectWallet/NetworkSelector.test.tsx | 32 +- .../web/ui/ConnectWallet/NetworkSelector.tsx | 185 +- .../web/ui/ConnectWallet/PoweredByTW.tsx | 13 +- .../ui/ConnectWallet/TransactionsScreen.tsx | 24 +- .../ui/ConnectWallet/WalletEntryButton.tsx | 40 +- .../web/ui/ConnectWallet/WalletSelector.tsx | 243 +- .../ui/ConnectWallet/WalletTypeRowButton.tsx | 12 +- .../react/web/ui/ConnectWallet/constants.ts | 4 +- .../ui/ConnectWallet/icons/AccentFailIcon.tsx | 23 +- .../ui/ConnectWallet/icons/AddUserIcon.tsx | 8 +- .../web/ui/ConnectWallet/icons/AppleIcon.tsx | 8 +- .../web/ui/ConnectWallet/icons/ChromeIcon.tsx | 16 +- .../web/ui/ConnectWallet/icons/CoinsIcon.tsx | 12 +- .../ui/ConnectWallet/icons/CreditCardIcon.tsx | 14 +- .../web/ui/ConnectWallet/icons/EmailIcon.tsx | 6 +- .../ConnectWallet/icons/FingerPrintIcon.tsx | 24 +- .../web/ui/ConnectWallet/icons/FundsIcon.tsx | 12 +- .../web/ui/ConnectWallet/icons/GlobalIcon.tsx | 6 +- .../web/ui/ConnectWallet/icons/GuestIcon.tsx | 12 +- .../web/ui/ConnectWallet/icons/ImageIcon.tsx | 14 +- .../web/ui/ConnectWallet/icons/KeyIcon.tsx | 12 +- .../web/ui/ConnectWallet/icons/LockIcon.tsx | 6 +- .../ui/ConnectWallet/icons/MultiUserIcon.tsx | 8 +- .../ConnectWallet/icons/OutlineWalletIcon.tsx | 10 +- .../web/ui/ConnectWallet/icons/PhoneIcon.tsx | 16 +- .../ui/ConnectWallet/icons/PlayStoreIcon.tsx | 8 +- .../ConnectWallet/icons/ThirdwebTextIcon.tsx | 19 +- .../ConnectWallet/icons/WalletConnectIcon.tsx | 6 +- .../icons/currencies/CADIcon.tsx | 20 +- .../icons/currencies/EURIcon.tsx | 18 +- .../icons/currencies/GBPIcon.tsx | 39 +- .../icons/currencies/JPYIcon.tsx | 4 +- .../icons/currencies/USDIcon.tsx | 20 +- .../react/web/ui/ConnectWallet/locale/br.ts | 148 +- .../react/web/ui/ConnectWallet/locale/de.ts | 148 +- .../react/web/ui/ConnectWallet/locale/en.ts | 148 +- .../react/web/ui/ConnectWallet/locale/es.ts | 148 +- .../react/web/ui/ConnectWallet/locale/fr.ts | 148 +- .../ConnectWallet/locale/getConnectLocale.ts | 4 +- .../react/web/ui/ConnectWallet/locale/ja.ts | 148 +- .../react/web/ui/ConnectWallet/locale/kr.ts | 149 +- .../react/web/ui/ConnectWallet/locale/ru.ts | 148 +- .../react/web/ui/ConnectWallet/locale/tl.ts | 148 +- .../react/web/ui/ConnectWallet/locale/vi.ts | 150 +- .../ConnectWallet/screens/Buy/BuyScreen.tsx | 370 +- .../screens/Buy/DirectPaymentModeScreen.tsx | 72 +- .../screens/Buy/EstimatedTimeAndFees.tsx | 30 +- .../screens/Buy/LazyBuyScreen.tsx | 2 +- .../screens/Buy/PayProviderSelection.tsx | 22 +- .../screens/Buy/PayTokenIcon.tsx | 8 +- .../screens/Buy/PayWIthCreditCard.tsx | 36 +- .../ui/ConnectWallet/screens/Buy/Stepper.tsx | 35 +- .../screens/Buy/TransactionModeScreen.tsx | 106 +- .../screens/Buy/fiat/CurrencySelection.tsx | 16 +- .../screens/Buy/fiat/FiatScreenContent.tsx | 66 +- .../screens/Buy/fiat/FiatSteps.tsx | 24 +- .../screens/Buy/fiat/OnRampScreen.tsx | 182 +- .../screens/Buy/fiat/Providers.tsx | 6 +- .../screens/Buy/fiat/currencies.tsx | 34 +- .../screens/Buy/main/useBuyTxStates.ts | 40 +- .../Buy/main/useEnabledPaymentMethods.ts | 2 +- .../screens/Buy/main/useUISelectionStates.ts | 10 +- .../pay-transactions/SwapDetailsScreen.tsx | 94 +- .../Buy/pay-transactions/TokenInfoRow.tsx | 4 +- .../Buy/pay-transactions/statusMeta.test.ts | 14 +- .../Buy/pay-transactions/statusMeta.ts | 14 +- .../screens/Buy/swap/BuyTokenInput.tsx | 72 +- .../screens/Buy/swap/ConfirmationScreen.tsx | 118 +- .../screens/Buy/swap/ErrorText.tsx | 11 +- .../ConnectWallet/screens/Buy/swap/Fees.tsx | 18 +- .../screens/Buy/swap/FiatValue.tsx | 22 +- .../screens/Buy/swap/PayWithCrypto.tsx | 28 +- .../screens/Buy/swap/StepConnector.tsx | 18 +- .../screens/Buy/swap/SwapFlow.tsx | 34 +- .../screens/Buy/swap/SwapScreenContent.tsx | 86 +- .../screens/Buy/swap/SwapStatusScreen.tsx | 42 +- .../screens/Buy/swap/SwapSummary.tsx | 22 +- .../screens/Buy/swap/TokenSelectorScreen.tsx | 146 +- .../Buy/swap/TransferConfirmationScreen.tsx | 218 +- .../screens/Buy/swap/TransferFlow.tsx | 14 +- .../screens/Buy/swap/WalletRow.tsx | 20 +- .../Buy/swap/fetchBalancesForWallet.tsx | 32 +- .../Buy/swap/useSwapSupportedChains.ts | 14 +- .../web/ui/ConnectWallet/screens/Buy/types.ts | 6 +- .../screens/Details/WalletManagerScreen.tsx | 32 +- .../screens/LinkProfileScreen.tsx | 44 +- .../screens/LinkedProfilesScreen.test.tsx | 34 +- .../screens/LinkedProfilesScreen.tsx | 52 +- .../screens/ManageWalletScreen.test.tsx | 6 +- .../screens/ManageWalletScreen.tsx | 12 +- .../ConnectWallet/screens/PrivateKey.test.tsx | 6 +- .../ui/ConnectWallet/screens/PrivateKey.tsx | 39 +- .../screens/ReceiveFunds.test.tsx | 6 +- .../ui/ConnectWallet/screens/ReceiveFunds.tsx | 34 +- .../ConnectWallet/screens/SendFunds.test.tsx | 24 +- .../ui/ConnectWallet/screens/SendFunds.tsx | 122 +- .../screens/SignatureScreen.test.tsx | 94 +- .../ConnectWallet/screens/SignatureScreen.tsx | 88 +- .../screens/StartScreen.test.tsx | 26 +- .../ui/ConnectWallet/screens/StartScreen.tsx | 33 +- .../ConnectWallet/screens/TokenSelector.tsx | 86 +- .../ui/ConnectWallet/screens/ViewAssets.tsx | 14 +- .../web/ui/ConnectWallet/screens/ViewNFTs.tsx | 74 +- .../ui/ConnectWallet/screens/ViewTokens.tsx | 44 +- .../screens/WalletConnectDisconnectScreen.tsx | 19 +- .../screens/WalletConnectReceiverScreen.tsx | 47 +- .../screens/WalletLogoSpinner.tsx | 63 +- .../WalletSwitcherConnectionScreen.tsx | 16 +- .../screens/WalletTransactionHistory.tsx | 66 +- .../screens/formatTokenBalance.test.ts | 6 +- .../ConnectWallet/screens/nativeToken.test.ts | 2 +- .../web/ui/ConnectWallet/useConnectModal.tsx | 30 +- .../ui/MediaRenderer/MediaRenderer.test.tsx | 12 +- .../web/ui/MediaRenderer/MediaRenderer.tsx | 250 +- .../src/react/web/ui/MediaRenderer/icons.tsx | 30 +- .../web/ui/MediaRenderer/mime/mime.test.ts | 1 - .../react/web/ui/MediaRenderer/mime/types.ts | 164 +- .../useResolvedMediaType.test.tsx | 2 +- .../ui/MediaRenderer/useResolvedMediaType.ts | 14 +- .../thirdweb/src/react/web/ui/PayEmbed.tsx | 58 +- .../src/react/web/ui/SiteEmbed.test.tsx | 6 +- .../thirdweb/src/react/web/ui/SiteEmbed.tsx | 14 +- .../src/react/web/ui/SiteLink.test.tsx | 8 +- .../thirdweb/src/react/web/ui/SiteLink.tsx | 10 +- .../ui/TransactionButton/DepositScreen.tsx | 106 +- .../ui/TransactionButton/ExecutingScreen.tsx | 40 +- .../TransactionButton.test.tsx | 2 +- .../ui/TransactionButton/TransactionModal.tsx | 40 +- .../react/web/ui/TransactionButton/index.tsx | 27 +- .../web/ui/components/ChainActiveDot.tsx | 10 +- .../web/ui/components/ChainIcon.test.tsx | 6 +- .../src/react/web/ui/components/ChainIcon.tsx | 16 +- .../src/react/web/ui/components/ChainName.tsx | 4 +- .../src/react/web/ui/components/CopyIcon.tsx | 17 +- .../src/react/web/ui/components/Drawer.tsx | 32 +- .../react/web/ui/components/DynamicHeight.tsx | 6 +- .../react/web/ui/components/IconContainer.tsx | 12 +- .../src/react/web/ui/components/Img.tsx | 50 +- .../src/react/web/ui/components/Modal.tsx | 4 +- .../src/react/web/ui/components/OTPInput.tsx | 58 +- .../src/react/web/ui/components/Overlay.tsx | 8 +- .../src/react/web/ui/components/QRCode.tsx | 110 +- .../ui/components/QRCode/QRCodeRenderer.tsx | 24 +- .../src/react/web/ui/components/Skeleton.tsx | 12 +- .../src/react/web/ui/components/Spinner.tsx | 10 +- .../src/react/web/ui/components/StepBar.tsx | 4 +- .../react/web/ui/components/SwitchNetwork.tsx | 4 +- .../src/react/web/ui/components/Tabs.tsx | 26 +- .../react/web/ui/components/TextDivider.tsx | 10 +- .../src/react/web/ui/components/TokenIcon.tsx | 12 +- .../src/react/web/ui/components/Tooltip.tsx | 14 +- .../react/web/ui/components/WalletImage.tsx | 24 +- .../src/react/web/ui/components/basic.tsx | 40 +- .../src/react/web/ui/components/buttons.tsx | 92 +- .../react/web/ui/components/formElements.tsx | 80 +- .../react/web/ui/components/modalElements.tsx | 8 +- .../src/react/web/ui/components/text.tsx | 26 +- .../web/ui/components/token/TokenRow.tsx | 48 +- .../web/ui/components/token/TokenSymbol.tsx | 10 +- .../react/web/ui/hooks/useCopyClipboard.ts | 2 +- .../web/ui/hooks/useDebouncedValue.test.tsx | 16 +- .../react/web/ui/prebuilt/Account/avatar.tsx | 14 +- .../web/ui/prebuilt/Account/balance.test.tsx | 36 +- .../react/web/ui/prebuilt/Account/balance.tsx | 18 +- .../react/web/ui/prebuilt/Account/name.tsx | 14 +- .../react/web/ui/prebuilt/Chain/icon.test.tsx | 18 +- .../src/react/web/ui/prebuilt/Chain/icon.tsx | 6 +- .../src/react/web/ui/prebuilt/Chain/name.tsx | 2 +- .../web/ui/prebuilt/NFT/description.test.tsx | 6 +- .../react/web/ui/prebuilt/NFT/description.tsx | 4 +- .../react/web/ui/prebuilt/NFT/media.test.tsx | 36 +- .../src/react/web/ui/prebuilt/NFT/media.tsx | 14 +- .../react/web/ui/prebuilt/NFT/name.test.tsx | 20 +- .../src/react/web/ui/prebuilt/NFT/name.tsx | 8 +- .../src/react/web/ui/prebuilt/Token/icon.tsx | 30 +- .../react/web/ui/prebuilt/Token/name.test.tsx | 20 +- .../src/react/web/ui/prebuilt/Token/name.tsx | 4 +- .../web/ui/prebuilt/Token/provider.test.tsx | 4 +- .../web/ui/prebuilt/Token/symbol.test.tsx | 20 +- .../react/web/ui/prebuilt/Token/symbol.tsx | 6 +- .../web/ui/prebuilt/Wallet/icon.test.tsx | 1 + .../web/ui/prebuilt/Wallet/name.test.tsx | 5 +- .../src/react/web/ui/prebuilt/Wallet/name.tsx | 2 +- .../BuyDirectListingButton.test.tsx | 2 +- .../thirdweb/BuyDirectListingButton/index.tsx | 8 +- .../thirdweb/ClaimButton/ClaimButton.test.tsx | 78 +- .../prebuilt/thirdweb/ClaimButton/index.tsx | 32 +- .../CreateDirectListingButton.test.tsx | 6 +- .../CreateDirectListingButton/index.tsx | 8 +- .../react/web/utils/canFitWideModal.test.tsx | 4 +- .../thirdweb/src/react/web/utils/errors.ts | 20 +- .../react/web/utils/resolveMimeType.test.ts | 4 +- .../web/utils/usePreloadWalletProviders.ts | 2 +- .../ecosystem/EcosystemWalletConnectUI.tsx | 76 +- .../ecosystem/EcosystemWalletFormUI.tsx | 22 +- .../ecosystem/EcosystemWalletHeader.tsx | 10 +- .../web/wallets/in-app/CountrySelector.tsx | 37 +- .../wallets/in-app/InAppWalletConnectUI.tsx | 78 +- .../web/wallets/in-app/InAppWalletFormUI.tsx | 30 +- .../wallets/in-app/InAppWalletSelectionUI.tsx | 26 +- .../wallets/in-app/InputSelectionUI.test.tsx | 20 +- .../web/wallets/in-app/InputSelectionUI.tsx | 38 +- .../react/web/wallets/in-app/WalletAuth.tsx | 88 +- .../react/web/wallets/injected/locale/br.ts | 14 +- .../react/web/wallets/injected/locale/de.ts | 14 +- .../react/web/wallets/injected/locale/en.ts | 14 +- .../react/web/wallets/injected/locale/es.ts | 14 +- .../react/web/wallets/injected/locale/fr.ts | 14 +- .../locale/getInjectedWalletLocale.test.ts | 18 +- .../react/web/wallets/injected/locale/ja.ts | 15 +- .../react/web/wallets/injected/locale/kr.ts | 15 +- .../react/web/wallets/injected/locale/ru.ts | 14 +- .../react/web/wallets/injected/locale/tl.ts | 14 +- .../react/web/wallets/injected/locale/vi.ts | 14 +- .../wallets/shared/CoinbaseSDKConnection.tsx | 16 +- .../ConnectWalletSocialOptions.test.tsx | 10 +- .../shared/ConnectWalletSocialOptions.tsx | 128 +- .../web/wallets/shared/ConnectingScreen.tsx | 20 +- .../react/web/wallets/shared/ErrorState.tsx | 11 +- .../web/wallets/shared/GetStartedScreen.tsx | 78 +- .../react/web/wallets/shared/GuestLogin.tsx | 18 +- .../web/wallets/shared/LoadingScreen.tsx | 10 +- .../react/web/wallets/shared/LoadingState.tsx | 10 +- .../react/web/wallets/shared/OTPLoginUI.tsx | 82 +- .../react/web/wallets/shared/PassKeyLogin.tsx | 42 +- .../react/web/wallets/shared/ScanScreen.tsx | 42 +- .../react/web/wallets/shared/SocialLogin.tsx | 32 +- .../shared/WalletConnectConnection.tsx | 66 +- .../src/react/web/wallets/shared/locale/br.ts | 78 +- .../src/react/web/wallets/shared/locale/de.ts | 78 +- .../src/react/web/wallets/shared/locale/en.ts | 78 +- .../src/react/web/wallets/shared/locale/es.ts | 74 +- .../src/react/web/wallets/shared/locale/fr.ts | 78 +- .../src/react/web/wallets/shared/locale/ja.ts | 78 +- .../src/react/web/wallets/shared/locale/kr.ts | 76 +- .../src/react/web/wallets/shared/locale/ru.ts | 78 +- .../src/react/web/wallets/shared/locale/tl.ts | 76 +- .../src/react/web/wallets/shared/locale/vi.ts | 78 +- .../react/web/wallets/shared/oauthSignIn.ts | 4 +- .../web/wallets/smartWallet/locale/br.ts | 4 +- .../web/wallets/smartWallet/locale/de.ts | 4 +- .../web/wallets/smartWallet/locale/en.ts | 4 +- .../web/wallets/smartWallet/locale/es.ts | 4 +- .../web/wallets/smartWallet/locale/fr.ts | 4 +- .../locale/getSmartWalletLocale.test.ts | 18 +- .../web/wallets/smartWallet/locale/ja.ts | 5 +- .../web/wallets/smartWallet/locale/kr.ts | 5 +- .../web/wallets/smartWallet/locale/ru.ts | 4 +- .../web/wallets/smartWallet/locale/tl.ts | 4 +- .../web/wallets/smartWallet/locale/vi.ts | 4 +- packages/thirdweb/src/rpc/actions/eth_call.ts | 2 +- .../src/rpc/actions/eth_getBlockByHash.ts | 2 +- .../src/rpc/actions/eth_getBlockByNumber.ts | 2 +- .../thirdweb/src/rpc/actions/eth_getLogs.ts | 4 +- .../rpc/actions/eth_getTransactionByHash.ts | 2 +- .../rpc/actions/eth_getTransactionReceipt.ts | 2 +- packages/thirdweb/src/rpc/fetch-rpc.ts | 8 +- packages/thirdweb/src/rpc/rpc.ts | 9 +- .../thirdweb/src/rpc/watchBlockNumber.test.ts | 24 +- packages/thirdweb/src/rpc/watchBlockNumber.ts | 4 +- .../thirdweb/src/storage/download.test.ts | 10 +- packages/thirdweb/src/storage/download.ts | 4 +- .../thirdweb/src/storage/upload/helpers.ts | 4 +- .../thirdweb/src/storage/upload/mobile.ts | 14 +- .../src/storage/upload/web-node.test.ts | 2 +- .../thirdweb/src/storage/upload/web-node.ts | 6 +- .../Bridge/BridgeOrchestrator.stories.tsx | 161 +- .../stories/Bridge/DirectPayment.stories.tsx | 46 +- .../stories/Bridge/ErrorBanner.stories.tsx | 52 +- .../src/stories/Bridge/FundWallet.stories.tsx | 58 +- .../stories/Bridge/PaymentDetails.stories.tsx | 198 +- .../Bridge/PaymentSelection.stories.tsx | 78 +- .../src/stories/Bridge/StepRunner.stories.tsx | 46 +- .../stories/Bridge/SuccessScreen.stories.tsx | 98 +- .../Bridge/TransactionPayment.stories.tsx | 58 +- .../Bridge/UnsupportedTokenScreen.stories.tsx | 42 +- .../thirdweb/src/stories/Bridge/fixtures.ts | 736 +- .../ConnectButton/hideButtons.stories.tsx | 18 +- .../stories/ConnectButton/themes.stories.tsx | 8 +- .../thirdweb/src/stories/PayEmbed.stories.ts | 10 +- .../src/stories/TokenBalanceRow.stories.tsx | 96 +- .../src/stories/WalletRow.stories.tsx | 84 +- packages/thirdweb/src/stories/utils.tsx | 4 +- .../src/transaction/actions/encode.bench.ts | 7 +- .../src/transaction/actions/encode.test.ts | 20 +- .../actions/estimate-gas-cost.test.ts | 4 +- .../transaction/actions/estimate-gas-cost.ts | 2 +- .../transaction/actions/estimate-gas.test.ts | 2 +- .../src/transaction/actions/estimate-gas.ts | 16 +- .../gasless/providers/biconomy.test.ts | 14 +- .../actions/gasless/providers/biconomy.ts | 20 +- .../actions/gasless/providers/engine.test.ts | 22 +- .../actions/gasless/providers/engine.ts | 38 +- .../gasless/providers/openzeppelin.test.ts | 14 +- .../actions/gasless/providers/openzeppelin.ts | 30 +- .../gasless/send-gasless-transaction.ts | 14 +- .../send-and-confirm-transaction.test.ts | 2 +- .../actions/send-batch-transaction.ts | 4 +- .../actions/send-transaction.test.ts | 4 +- .../transaction/actions/send-transaction.ts | 8 +- .../actions/sign-transaction.test.ts | 22 +- .../src/transaction/actions/simulate.test.ts | 4 +- .../src/transaction/actions/simulate.ts | 4 +- .../to-serializable-transaction.test.ts | 18 +- .../actions/to-serializable-transaction.ts | 10 +- .../actions/wait-for-tx-receipt.test.ts | 18 +- .../actions/wait-for-tx-receipt.ts | 4 +- .../actions/zksync/getEip721Domain.ts | 18 +- .../zksync/send-eip712-transaction.test.ts | 26 +- .../actions/zksync/send-eip712-transaction.ts | 24 +- .../thirdweb/src/transaction/extract-error.ts | 10 +- .../src/transaction/prepare-contract-call.ts | 6 +- .../transaction/prepare-transaction.test.ts | 4 +- .../src/transaction/prepare-transaction.ts | 2 +- .../src/transaction/read-contract.test.ts | 2 +- .../thirdweb/src/transaction/read-contract.ts | 20 +- .../transaction/serialize-transaction.test.ts | 34 +- .../src/transaction/transaction-store.test.ts | 10 +- .../src/transaction/transaction-store.ts | 10 +- packages/thirdweb/src/transaction/utils.ts | 4 +- .../src/utils/abi/encodeAbiParameters.ts | 6 +- .../utils/abi/normalizeFunctionParams.test.ts | 28 +- packages/thirdweb/src/utils/address.ts | 8 +- .../any-evm/compute-deployment-address.ts | 2 +- .../compute-published-contract-address.ts | 4 +- .../compute-published-contract-deploy-info.ts | 24 +- .../src/utils/any-evm/deploy-metadata.ts | 6 +- .../any-evm/encode-extra-data-with-uri.ts | 4 +- .../utils/any-evm/keyless-transaction.test.ts | 14 +- .../src/utils/any-evm/keyless-transaction.ts | 2 +- .../zksync/computeDeploymentAddress.ts | 4 +- .../src/utils/any-evm/zksync/constants.ts | 1 - packages/thirdweb/src/utils/arweave.test.ts | 4 +- .../src/utils/bytecode/cbor-decode.ts | 364 +- ...xtractMinimalProxyImplementationAddress.ts | 1 - .../bytecode/handleBeaconProxyPattern.test.ts | 2 +- .../bytecode/resolveImplementation.test.ts | 19 +- .../utils/bytecode/resolveImplementation.ts | 15 +- .../contract/fetch-contract-metadata.test.ts | 2 +- packages/thirdweb/src/utils/domain.test.ts | 18 +- packages/thirdweb/src/utils/domains.ts | 28 +- .../thirdweb/src/utils/encoding/hex.test.ts | 20 +- packages/thirdweb/src/utils/encoding/hex.ts | 3 +- .../thirdweb/src/utils/encoding/to-bytes.ts | 3 +- .../airdrop/fetch-proofs-erc1155.ts | 2 +- .../extensions/airdrop/fetch-proofs-erc20.ts | 2 +- .../airdrop/process-snapshot-erc1155.ts | 6 +- .../airdrop/process-snapshot-erc20.ts | 6 +- .../airdrop/process-snapshot-erc721.ts | 6 +- .../utils/extensions/convert-erc20-amount.ts | 4 +- .../drops/fetch-proofs-for-claimers.ts | 16 +- .../extensions/drops/get-claim-params.ts | 24 +- ...l-set-claim-claim-conditon-transactions.ts | 18 +- .../src/utils/extensions/drops/hash-entry.ts | 2 +- .../extensions/drops/process-override-list.ts | 8 +- .../extensions/resolve-currency-value.ts | 8 +- packages/thirdweb/src/utils/fetch.test.ts | 2 +- packages/thirdweb/src/utils/fetch.ts | 8 +- .../src/utils/hashing/hashTypedData.test.ts | 63 +- .../src/utils/hashing/hashTypedData.ts | 2 +- packages/thirdweb/src/utils/ipfs.ts | 6 +- packages/thirdweb/src/utils/json.test.ts | 14 +- packages/thirdweb/src/utils/jwt/encode-jwt.ts | 8 +- .../thirdweb/src/utils/jwt/refresh-jwt.ts | 10 +- .../thirdweb/src/utils/nft/parseNft.test.ts | 24 +- packages/thirdweb/src/utils/nft/parseNft.ts | 18 +- packages/thirdweb/src/utils/process.ts | 5 +- .../src/utils/promise/p-limit.test.ts | 2 +- .../thirdweb/src/utils/promise/p-limit.ts | 8 +- .../thirdweb/src/utils/promise/withCache.ts | 2 +- packages/thirdweb/src/utils/retry.test.ts | 8 +- packages/thirdweb/src/utils/royalty-engine.ts | 4 +- .../helpers/parse-typed-data.test.ts | 8 +- .../src/utils/signatures/resolve-signature.ts | 13 +- .../src/utils/signatures/sign-message.test.ts | 6 +- .../src/utils/signatures/sign-message.ts | 5 +- .../utils/signatures/sign-typed-data.test.ts | 16 +- .../src/utils/storage/inMemoryStorage.ts | 6 +- .../src/utils/storage/nativeStorage.ts | 8 +- .../thirdweb/src/utils/storage/webStorage.ts | 10 +- .../thirdweb/src/utils/timeoutPromise.test.ts | 2 +- packages/thirdweb/src/utils/tiny-emitter.ts | 16 +- packages/thirdweb/src/utils/url.test.ts | 8 +- packages/thirdweb/src/utils/url.ts | 4 +- .../wallets/__generated__/getWalletInfo.ts | 1 + .../src/wallets/__generated__/wallet-infos.ts | 856 +- .../__generated__/wallet/ag.jup/index.ts | 32 +- .../__generated__/wallet/ai.hacken/index.ts | 32 +- .../__generated__/wallet/ai.pundi/index.ts | 32 +- .../wallet/ai.purewallet/index.ts | 32 +- .../wallet/ai.spotonchain.platform/index.ts | 32 +- .../__generated__/wallet/app.ammer/index.ts | 32 +- .../wallet/app.backpack/index.ts | 32 +- .../wallet/app.beewallet/index.ts | 32 +- .../__generated__/wallet/app.berasig/index.ts | 28 +- .../wallet/app.catecoin/index.ts | 32 +- .../__generated__/wallet/app.clot/index.ts | 32 +- .../wallet/app.coinstats/index.ts | 32 +- .../wallet/app.core.extension/index.ts | 36 +- .../wallet/app.dfinnwallet/index.ts | 32 +- .../__generated__/wallet/app.edge/index.ts | 32 +- .../wallet/app.everspace/index.ts | 32 +- .../wallet/app.fizzwallet/index.ts | 32 +- .../__generated__/wallet/app.gamic/index.ts | 32 +- .../__generated__/wallet/app.girin/index.ts | 28 +- .../wallet/app.hbwallet/index.ts | 32 +- .../wallet/app.herewallet/index.ts | 32 +- .../__generated__/wallet/app.imem/index.ts | 32 +- .../__generated__/wallet/app.kabila/index.ts | 28 +- .../wallet/app.keeper-wallet/index.ts | 32 +- .../__generated__/wallet/app.keplr/index.ts | 32 +- .../__generated__/wallet/app.keyring/index.ts | 32 +- .../__generated__/wallet/app.krystal/index.ts | 32 +- .../__generated__/wallet/app.linen/index.ts | 32 +- .../__generated__/wallet/app.m1nty/index.ts | 32 +- .../wallet/app.nicegram/index.ts | 32 +- .../__generated__/wallet/app.nightly/index.ts | 28 +- .../__generated__/wallet/app.omni/index.ts | 32 +- .../__generated__/wallet/app.onto/index.ts | 32 +- .../__generated__/wallet/app.phantom/index.ts | 34 +- .../wallet/app.pluswallet/index.ts | 32 +- .../wallet/app.qubic.wallet/index.ts | 32 +- .../__generated__/wallet/app.ryipay/index.ts | 32 +- .../__generated__/wallet/app.sinum/index.ts | 32 +- .../__generated__/wallet/app.status/index.ts | 32 +- .../__generated__/wallet/app.stickey/index.ts | 28 +- .../wallet/app.subwallet/index.ts | 32 +- .../__generated__/wallet/app.tofee/index.ts | 32 +- .../wallet/app.ultimate/index.ts | 32 +- .../__generated__/wallet/app.utorg/index.ts | 32 +- .../wallet/app.walletnow/index.ts | 28 +- .../__generated__/wallet/app.wombat/index.ts | 32 +- .../__generated__/wallet/app.xverse/index.ts | 32 +- .../__generated__/wallet/app.zeal/index.ts | 32 +- .../__generated__/wallet/baby.smart/index.ts | 32 +- .../__generated__/wallet/cc.avacus/index.ts | 32 +- .../__generated__/wallet/cc.dropp/index.ts | 32 +- .../wallet/cc.localtrade.lab/index.ts | 32 +- .../wallet/ch.dssecurity/index.ts | 28 +- .../__generated__/wallet/co.arculus/index.ts | 32 +- .../wallet/co.cyber.wallet/index.ts | 28 +- .../wallet/co.family.wallet/index.ts | 32 +- .../wallet/co.filwallet/index.ts | 32 +- .../__generated__/wallet/co.lifedefi/index.ts | 28 +- .../__generated__/wallet/co.muza/index.ts | 32 +- .../__generated__/wallet/co.swopme/index.ts | 32 +- .../__generated__/wallet/co.xellar/index.ts | 32 +- .../wallet/com.3swallet/index.ts | 32 +- .../__generated__/wallet/com.abra/index.ts | 32 +- .../wallet/com.adftechnology/index.ts | 32 +- .../wallet/com.aktionariat/index.ts | 32 +- .../wallet/com.alicebob/index.ts | 32 +- .../wallet/com.alphawallet/index.ts | 32 +- .../wallet/com.amazewallet/index.ts | 32 +- .../__generated__/wallet/com.ambire/index.ts | 32 +- .../wallet/com.antiersolutions/index.ts | 32 +- .../__generated__/wallet/com.apollox/index.ts | 28 +- .../wallet/com.authentrend/index.ts | 32 +- .../wallet/com.azcoiner/index.ts | 32 +- .../__generated__/wallet/com.ballet/index.ts | 32 +- .../__generated__/wallet/com.bee/index.ts | 32 +- .../__generated__/wallet/com.beexo/index.ts | 32 +- .../__generated__/wallet/com.berasig/index.ts | 32 +- .../wallet/com.bestwallet/index.ts | 32 +- .../wallet/com.bettatrade/index.ts | 32 +- .../wallet/com.bifrostwallet/index.ts | 32 +- .../wallet/com.binance.wallet/index.ts | 32 +- .../__generated__/wallet/com.bitcoin/index.ts | 32 +- .../wallet/com.bitget.web3/index.ts | 32 +- .../__generated__/wallet/com.bitnovo/index.ts | 32 +- .../__generated__/wallet/com.bitpay/index.ts | 32 +- .../__generated__/wallet/com.bitpie/index.ts | 32 +- .../__generated__/wallet/com.bitso/index.ts | 32 +- .../wallet/com.blanqlabs.wallet/index.ts | 32 +- .../wallet/com.blazpay.wallet/index.ts | 28 +- .../wallet/com.blockchain/index.ts | 32 +- .../wallet/com.bmawallet/index.ts | 32 +- .../wallet/com.brave.wallet/index.ts | 28 +- .../__generated__/wallet/com.broearn/index.ts | 32 +- .../wallet/com.bscecowallet/index.ts | 32 +- .../wallet/com.burritowallet/index.ts | 32 +- .../__generated__/wallet/com.bybit/index.ts | 32 +- .../wallet/com.caesiumlab/index.ts | 32 +- .../wallet/com.cakewallet/index.ts | 32 +- .../wallet/com.cardstack/index.ts | 32 +- .../__generated__/wallet/com.chain/index.ts | 32 +- .../__generated__/wallet/com.coin98/index.ts | 32 +- .../wallet/com.coinbase.wallet/index.ts | 28 +- .../wallet/com.coincircle/index.ts | 32 +- .../wallet/com.coinex.wallet/index.ts | 32 +- .../wallet/com.coingrig/index.ts | 32 +- .../__generated__/wallet/com.coininn/index.ts | 32 +- .../__generated__/wallet/com.coinomi/index.ts | 32 +- .../__generated__/wallet/com.coinsdo/index.ts | 32 +- .../wallet/com.companyname.swaptobe/index.ts | 28 +- .../wallet/com.concordium/index.ts | 32 +- .../wallet/com.coolbitx.cwsapp/index.ts | 32 +- .../wallet/com.crossmint/index.ts | 28 +- .../wallet/com.cryptnox/index.ts | 32 +- .../wallet/com.crypto.wallet/index.ts | 32 +- .../wallet/com.cryptokara/index.ts | 32 +- .../wallet/com.daffione/index.ts | 32 +- .../wallet/com.dcentwallet/index.ts | 32 +- .../wallet/com.dextrade/index.ts | 28 +- .../wallet/com.dolletwallet/index.ts | 32 +- .../__generated__/wallet/com.ellipal/index.ts | 32 +- .../wallet/com.elrond.maiar.wallet/index.ts | 32 +- .../__generated__/wallet/com.enkrypt/index.ts | 32 +- .../wallet/com.ennowallet/index.ts | 32 +- .../__generated__/wallet/com.exodus/index.ts | 32 +- .../wallet/com.fastex.wallet/index.ts | 32 +- .../wallet/com.fireblocks/index.ts | 32 +- .../wallet/com.flash-wallet/index.ts | 32 +- .../wallet/com.flowfoundation.wallet/index.ts | 32 +- .../wallet/com.foxwallet/index.ts | 32 +- .../wallet/com.fxwallet/index.ts | 32 +- .../wallet/com.gemwallet/index.ts | 32 +- .../wallet/com.get-verso/index.ts | 32 +- .../wallet/com.getcogni/index.ts | 32 +- .../wallet/com.greengloryglobal/index.ts | 32 +- .../wallet/com.hashpack.wallet/index.ts | 32 +- .../wallet/com.holdstation/index.ts | 32 +- .../__generated__/wallet/com.humbl/index.ts | 32 +- .../__generated__/wallet/com.icewal/index.ts | 32 +- .../__generated__/wallet/com.ipmb/index.ts | 32 +- .../__generated__/wallet/com.itoken/index.ts | 32 +- .../__generated__/wallet/com.ivirse/index.ts | 32 +- .../wallet/com.klipwallet/index.ts | 32 +- .../__generated__/wallet/com.kraken/index.ts | 32 +- .../__generated__/wallet/com.kresus/index.ts | 32 +- .../wallet/com.kriptonio/index.ts | 32 +- .../wallet/com.kryptogo/index.ts | 32 +- .../__generated__/wallet/com.kucoin/index.ts | 32 +- .../__generated__/wallet/com.ledger/index.ts | 28 +- .../wallet/com.liberawallet/index.ts | 32 +- .../__generated__/wallet/com.lif3/index.ts | 32 +- .../wallet/com.lootrush/index.ts | 28 +- .../wallet/com.meld.app/index.ts | 32 +- .../wallet/com.mewwallet/index.ts | 32 +- .../__generated__/wallet/com.midoin/index.ts | 32 +- .../wallet/com.monarchwallet/index.ts | 32 +- .../wallet/com.moongate.one/index.ts | 32 +- .../com.mpcvault.broswerplugin/index.ts | 32 +- .../wallet/com.mtpelerin/index.ts | 32 +- .../wallet/com.neftipedia/index.ts | 32 +- .../wallet/com.neonwallet/index.ts | 32 +- .../__generated__/wallet/com.nodle/index.ts | 32 +- .../wallet/com.nufinetes/index.ts | 34 +- .../wallet/com.oasys-wallet/index.ts | 32 +- .../wallet/com.okex.wallet/index.ts | 32 +- .../__generated__/wallet/com.opera/index.ts | 32 +- .../wallet/com.optowallet/index.ts | 32 +- .../__generated__/wallet/com.opz/index.ts | 32 +- .../wallet/com.paliwallet/index.ts | 32 +- .../wallet/com.pandoshi/index.ts | 32 +- .../wallet/com.passwallet.app/index.ts | 32 +- .../__generated__/wallet/com.paybolt/index.ts | 32 +- .../wallet/com.payperless/index.ts | 32 +- .../wallet/com.peakdefi/index.ts | 32 +- .../wallet/com.pierwallet/index.ts | 32 +- .../wallet/com.plasma-wallet/index.ts | 32 +- .../wallet/com.poolsmobility.wallet/index.ts | 32 +- .../wallet/com.premanft/index.ts | 32 +- .../wallet/com.reown.appkit-lab/index.ts | 32 +- .../wallet/com.reown.docs/index.ts | 32 +- .../__generated__/wallet/com.reown/index.ts | 32 +- .../__generated__/wallet/com.ripio/index.ts | 32 +- .../wallet/com.rktechworks/index.ts | 32 +- .../wallet/com.robinhood.wallet/index.ts | 32 +- .../wallet/com.roninchain.wallet/index.ts | 32 +- .../wallet/com.saakuru.app/index.ts | 32 +- .../wallet/com.sabay.wallet/index.ts | 32 +- .../wallet/com.safemoon/index.ts | 28 +- .../__generated__/wallet/com.safepal/index.ts | 32 +- .../wallet/com.saitamatoken/index.ts | 32 +- .../wallet/com.scramble/index.ts | 30 +- .../wallet/com.secuxtech/index.ts | 32 +- .../wallet/com.shapeshift/index.ts | 32 +- .../wallet/com.sinohope/index.ts | 32 +- .../wallet/com.socios.app/index.ts | 32 +- .../__generated__/wallet/com.tangem/index.ts | 32 +- .../wallet/com.tastycrypto/index.ts | 32 +- .../__generated__/wallet/com.tellaw/index.ts | 32 +- .../wallet/com.thirdweb/index.ts | 28 +- .../wallet/com.tiduswallet/index.ts | 32 +- .../__generated__/wallet/com.tomi/index.ts | 32 +- .../wallet/com.trusteeglobal/index.ts | 32 +- .../wallet/com.trustwallet.app/index.ts | 32 +- .../__generated__/wallet/com.ullapay/index.ts | 32 +- .../wallet/com.unitywallet/index.ts | 32 +- .../wallet/com.unstoppabledomains/index.ts | 32 +- .../wallet/com.valoraapp/index.ts | 32 +- .../__generated__/wallet/com.veworld/index.ts | 32 +- .../wallet/com.vgxfoundation/index.ts | 28 +- .../wallet/com.wallet.reown/index.ts | 28 +- .../wallet/com.walletconnect.com/index.ts | 32 +- .../__generated__/wallet/com.webauth/index.ts | 32 +- .../__generated__/wallet/com.wemix/index.ts | 32 +- .../wallet/com.wemixplay/index.ts | 32 +- .../wallet/com.wigwam.wallet/index.ts | 32 +- .../wallet/com.withpaper/index.ts | 28 +- .../wallet/com.x9wallet/index.ts | 32 +- .../__generated__/wallet/com.xcapit/index.ts | 32 +- .../__generated__/wallet/com.zengo/index.ts | 32 +- .../__generated__/wallet/com.zypto/index.ts | 32 +- .../wallet/dev.auroracloud/index.ts | 32 +- .../wallet/digital.minerva/index.ts | 32 +- .../wallet/eu.flashsoft.clear-wallet/index.ts | 28 +- .../__generated__/wallet/fi.dropmate/index.ts | 32 +- .../__generated__/wallet/fi.pillar/index.ts | 32 +- .../wallet/finance.islamicoin/index.ts | 32 +- .../wallet/finance.openwallet/index.ts | 32 +- .../wallet/finance.panaroma/index.ts | 32 +- .../wallet/finance.plena/index.ts | 32 +- .../wallet/finance.porta/index.ts | 32 +- .../wallet/finance.slingshot/index.ts | 32 +- .../wallet/finance.soulswap.app/index.ts | 32 +- .../wallet/finance.voltage/index.ts | 32 +- .../__generated__/wallet/fun.tobi/index.ts | 28 +- .../__generated__/wallet/gg.indi/index.ts | 32 +- .../__generated__/wallet/global.safe/index.ts | 32 +- .../__generated__/wallet/id.co.pintu/index.ts | 32 +- .../wallet/id.competence/index.ts | 32 +- .../__generated__/wallet/id.plumaa/index.ts | 28 +- .../__generated__/wallet/im.token/index.ts | 32 +- .../__generated__/wallet/inc.tomo/index.ts | 32 +- .../wallet/io.1inch.wallet/index.ts | 32 +- .../wallet/io.alpha-u.wallet.web/index.ts | 32 +- .../__generated__/wallet/io.altme/index.ts | 32 +- .../__generated__/wallet/io.ancrypto/index.ts | 32 +- .../wallet/io.armana.portal/index.ts | 32 +- .../wallet/io.atomicwallet/index.ts | 32 +- .../wallet/io.bharatbox/index.ts | 32 +- .../wallet/io.bimwallet/index.ts | 32 +- .../wallet/io.bladewallet/index.ts | 32 +- .../__generated__/wallet/io.blocto/index.ts | 32 +- .../__generated__/wallet/io.buzz-up/index.ts | 32 +- .../__generated__/wallet/io.certhis/index.ts | 32 +- .../__generated__/wallet/io.clingon/index.ts | 34 +- .../wallet/io.compasswallet/index.ts | 32 +- .../__generated__/wallet/io.copiosa/index.ts | 32 +- .../wallet/io.cosmostation/index.ts | 32 +- .../__generated__/wallet/io.cypherhq/index.ts | 28 +- .../wallet/io.didwallet/index.ts | 32 +- .../__generated__/wallet/io.dttd/index.ts | 32 +- .../wallet/io.earthwallet/index.ts | 28 +- .../__generated__/wallet/io.enjin/index.ts | 32 +- .../wallet/io.ethermail/index.ts | 32 +- .../__generated__/wallet/io.ethos/index.ts | 32 +- .../__generated__/wallet/io.finoa/index.ts | 32 +- .../__generated__/wallet/io.fizen/index.ts | 32 +- .../__generated__/wallet/io.getclave/index.ts | 32 +- .../wallet/io.getjoin.prd/index.ts | 28 +- .../__generated__/wallet/io.goldbit/index.ts | 32 +- .../wallet/io.guardiianwallet/index.ts | 32 +- .../__generated__/wallet/io.harti/index.ts | 32 +- .../__generated__/wallet/io.helixid/index.ts | 32 +- .../wallet/io.hippowallet/index.ts | 32 +- .../__generated__/wallet/io.huddln/index.ts | 32 +- .../__generated__/wallet/io.hyperpay/index.ts | 28 +- .../wallet/io.internetmoney/index.ts | 32 +- .../__generated__/wallet/io.kigo/index.ts | 32 +- .../__generated__/wallet/io.klever/index.ts | 32 +- .../wallet/io.koalawallet/index.ts | 32 +- .../__generated__/wallet/io.konio/index.ts | 32 +- .../wallet/io.kriptomat/index.ts | 32 +- .../wallet/io.leapwallet/index.ts | 32 +- .../wallet/io.legacynetwork/index.ts | 32 +- .../wallet/io.legionnetwork/index.ts | 32 +- .../wallet/io.loopring.wallet/index.ts | 32 +- .../wallet/io.magiceden.wallet/index.ts | 32 +- .../__generated__/wallet/io.metamask/index.ts | 34 +- .../__generated__/wallet/io.miraiapp/index.ts | 32 +- .../wallet/io.moonstake/index.ts | 32 +- .../wallet/io.myabcwallet/index.ts | 32 +- .../__generated__/wallet/io.nabox/index.ts | 32 +- .../__generated__/wallet/io.nash/index.ts | 32 +- .../__generated__/wallet/io.neopin/index.ts | 32 +- .../__generated__/wallet/io.nonbank/index.ts | 32 +- .../__generated__/wallet/io.noone/index.ts | 32 +- .../wallet/io.novawallet/index.ts | 32 +- .../__generated__/wallet/io.okse/index.ts | 32 +- .../__generated__/wallet/io.owallet/index.ts | 32 +- .../__generated__/wallet/io.oxalus/index.ts | 32 +- .../wallet/io.ozonewallet/index.ts | 32 +- .../__generated__/wallet/io.paraswap/index.ts | 32 +- .../__generated__/wallet/io.passpay/index.ts | 32 +- .../__generated__/wallet/io.pitaka/index.ts | 32 +- .../wallet/io.pltwallet/index.ts | 32 +- .../__generated__/wallet/io.plutope/index.ts | 32 +- .../__generated__/wallet/io.pockie/index.ts | 32 +- .../__generated__/wallet/io.rabby/index.ts | 32 +- .../__generated__/wallet/io.ready/index.ts | 32 +- .../wallet/io.ricewallet/index.ts | 32 +- .../wallet/io.safecryptowallet/index.ts | 32 +- .../wallet/io.safematrix/index.ts | 32 +- .../wallet/io.scramberry/index.ts | 32 +- .../__generated__/wallet/io.shido/index.ts | 32 +- .../__generated__/wallet/io.slavi/index.ts | 32 +- .../__generated__/wallet/io.streakk/index.ts | 32 +- .../wallet/io.summonersarena/index.ts | 32 +- .../__generated__/wallet/io.talken/index.ts | 32 +- .../__generated__/wallet/io.tokoin/index.ts | 32 +- .../wallet/io.tradestrike/index.ts | 32 +- .../__generated__/wallet/io.transi/index.ts | 32 +- .../wallet/io.trinity-tech/index.ts | 32 +- .../wallet/io.trustasset/index.ts | 32 +- .../wallet/io.ttmwallet/index.ts | 32 +- .../__generated__/wallet/io.ukiss/index.ts | 32 +- .../wallet/io.unagi.unawallet/index.ts | 32 +- .../wallet/io.universaleverything/index.ts | 32 +- .../wallet/io.uptn.dapp-web/index.ts | 32 +- .../__generated__/wallet/io.wallacy/index.ts | 28 +- .../__generated__/wallet/io.wallet3/index.ts | 32 +- .../wallet/io.walletverse/index.ts | 32 +- .../__generated__/wallet/io.wallypto/index.ts | 32 +- .../__generated__/wallet/io.xfun/index.ts | 32 +- .../__generated__/wallet/io.xucre/index.ts | 32 +- .../__generated__/wallet/io.yowallet/index.ts | 32 +- .../wallet/io.yusetoken/index.ts | 32 +- .../__generated__/wallet/io.zelcore/index.ts | 28 +- .../__generated__/wallet/io.zelus/index.ts | 32 +- .../wallet/io.zerion.wallet/index.ts | 32 +- .../__generated__/wallet/io.zkape/index.ts | 32 +- .../__generated__/wallet/is.callback/index.ts | 32 +- .../__generated__/wallet/it.airgap/index.ts | 32 +- .../wallet/jp.co.rakuten-wallet/index.ts | 32 +- .../__generated__/wallet/land.liker/index.ts | 32 +- .../wallet/live.superex/index.ts | 32 +- .../__generated__/wallet/llc.besc/index.ts | 32 +- .../__generated__/wallet/me.astrox/index.ts | 32 +- .../__generated__/wallet/me.easy/index.ts | 32 +- .../__generated__/wallet/me.haha/index.ts | 32 +- .../__generated__/wallet/me.iopay/index.ts | 32 +- .../wallet/me.komet.app/index.ts | 32 +- .../__generated__/wallet/me.rainbow/index.ts | 32 +- .../wallet/money.keychain/index.ts | 28 +- .../wallet/money.snowball/index.ts | 32 +- .../wallet/money.unstoppable/index.ts | 32 +- .../wallet/net.gateweb3/index.ts | 32 +- .../wallet/net.myrenegade/index.ts | 32 +- .../wallet/net.shinobi-wallet/index.ts | 32 +- .../wallet/net.spatium.wallet/index.ts | 32 +- .../__generated__/wallet/net.spatium/index.ts | 32 +- .../__generated__/wallet/net.stasis/index.ts | 32 +- .../wallet/network.blackfort/index.ts | 32 +- .../__generated__/wallet/network.cvl/index.ts | 28 +- .../__generated__/wallet/network.dgg/index.ts | 32 +- .../wallet/network.gridlock/index.ts | 32 +- .../wallet/network.haqq/index.ts | 32 +- .../wallet/network.mrhb/index.ts | 32 +- .../wallet/network.over/index.ts | 32 +- .../wallet/network.trustkeys/index.ts | 32 +- .../wallet/nl.greenhood.wallet/index.ts | 32 +- .../wallet/one.metapro.wallet/index.ts | 32 +- .../wallet/one.mixin.messenger/index.ts | 32 +- .../wallet/online.puzzle/index.ts | 32 +- .../wallet/org.alephium/index.ts | 32 +- .../__generated__/wallet/org.arianee/index.ts | 32 +- .../__generated__/wallet/org.bitizen/index.ts | 32 +- .../wallet/org.bytebank/index.ts | 32 +- .../__generated__/wallet/org.dota168/index.ts | 32 +- .../wallet/org.ecoinwallet/index.ts | 32 +- .../wallet/org.gooddollar/index.ts | 28 +- .../wallet/org.hot-labs/index.ts | 32 +- .../__generated__/wallet/org.kelp/index.ts | 32 +- .../wallet/org.mathwallet/index.ts | 34 +- .../__generated__/wallet/org.mugambo/index.ts | 32 +- .../__generated__/wallet/org.shefi/index.ts | 32 +- .../__generated__/wallet/org.talkapp/index.ts | 32 +- .../wallet/org.thepulsewallet/index.ts | 32 +- .../wallet/org.thetatoken/index.ts | 32 +- .../wallet/org.thorwallet/index.ts | 32 +- .../__generated__/wallet/org.uniswap/index.ts | 32 +- .../__generated__/wallet/pk.modular/index.ts | 32 +- .../__generated__/wallet/pro.assure/index.ts | 32 +- .../wallet/pro.fintoken/index.ts | 32 +- .../wallet/pro.tokenpocket/index.ts | 32 +- .../__generated__/wallet/pub.dg/index.ts | 32 +- .../wallet/so.onekey.app.wallet/index.ts | 28 +- .../__generated__/wallet/social.gm2/index.ts | 32 +- .../__generated__/wallet/social.halo/index.ts | 32 +- .../wallet/tech.defiantapp/index.ts | 32 +- .../__generated__/wallet/tech.levain/index.ts | 32 +- .../__generated__/wallet/tech.okto/index.ts | 34 +- .../wallet/technology.jambo/index.ts | 32 +- .../wallet/technology.obvious/index.ts | 32 +- .../wallet/trade.flooz.wallet/index.ts | 32 +- .../__generated__/wallet/us.binance/index.ts | 32 +- .../wallet/vc.uincubator.api/index.ts | 32 +- .../wallet/world.dosi.vault/index.ts | 32 +- .../__generated__/wallet/world.fncy/index.ts | 32 +- .../__generated__/wallet/world.ixo/index.ts | 32 +- .../__generated__/wallet/world.qoin/index.ts | 32 +- .../__generated__/wallet/xyz.abs/index.ts | 28 +- .../__generated__/wallet/xyz.argent/index.ts | 32 +- .../__generated__/wallet/xyz.bonuz/index.ts | 32 +- .../__generated__/wallet/xyz.coca/index.ts | 32 +- .../__generated__/wallet/xyz.ctrl/index.ts | 32 +- .../wallet/xyz.dawnwallet/index.ts | 28 +- .../__generated__/wallet/xyz.echooo/index.ts | 32 +- .../wallet/xyz.frontier.wallet/index.ts | 32 +- .../wallet/xyz.nestwallet/index.ts | 32 +- .../__generated__/wallet/xyz.orion/index.ts | 32 +- .../wallet/xyz.roam.wallet/index.ts | 28 +- .../wallet/xyz.sequence/index.ts | 28 +- .../wallet/xyz.talisman/index.ts | 28 +- .../wallet/xyz.timelesswallet/index.ts | 32 +- .../wallet/xyz.uniultra.wallet/index.ts | 32 +- .../wallet/zone.bitverse/index.ts | 32 +- .../wallets/coinbase/coinbase-mobile.test.ts | 4 +- .../src/wallets/coinbase/coinbase-mobile.ts | 6 +- .../src/wallets/coinbase/coinbase-wallet.ts | 40 +- .../src/wallets/coinbase/coinbase-web.test.ts | 12 +- .../src/wallets/coinbase/coinbase-web.ts | 43 +- .../wallets/connection/autoConnect.test.ts | 12 +- .../src/wallets/connection/autoConnect.ts | 10 +- .../connection/autoConnectCore.test.ts | 108 +- .../src/wallets/connection/autoConnectCore.ts | 22 +- .../thirdweb/src/wallets/create-wallet.ts | 87 +- .../src/wallets/custom/adapter/index.ts | 26 +- .../src/wallets/custom/embedded/index.ts | 26 +- .../src/wallets/custom/inApp/index.ts | 26 +- .../src/wallets/custom/smart/index.ts | 26 +- .../src/wallets/custom/walletConnect/index.ts | 26 +- .../get-ecosystem-wallet-info.test.ts | 30 +- .../ecosystem/get-ecosystem-wallet-info.ts | 26 +- .../wallets/eip5792/get-calls-status.test.ts | 28 +- .../src/wallets/eip5792/get-calls-status.ts | 7 +- .../wallets/eip5792/get-capabilities.test.ts | 28 +- .../src/wallets/eip5792/send-calls.test.ts | 26 +- .../src/wallets/eip5792/send-calls.ts | 16 +- .../wallets/eip5792/show-calls-status.test.ts | 6 +- .../eip5792/wait-for-calls-receipt.test.ts | 24 +- .../wallets/eip5792/wait-for-calls-receipt.ts | 5 +- .../src/wallets/engine/engine-account.test.ts | 20 +- packages/thirdweb/src/wallets/engine/index.ts | 36 +- .../core/actions/generate-wallet.enclave.ts | 4 +- .../core/actions/get-enclave-user-status.ts | 4 +- .../actions/sign-authorization.enclave.ts | 6 +- .../core/actions/sign-message.enclave.ts | 16 +- .../core/actions/sign-transaction.enclave.ts | 10 +- .../core/actions/sign-typed-data.enclave.ts | 10 +- .../core/authentication/authEndpoint.ts | 10 +- .../core/authentication/backend.test.ts | 8 +- .../in-app/core/authentication/backend.ts | 8 +- .../in-app/core/authentication/guest.ts | 10 +- .../wallets/in-app/core/authentication/jwt.ts | 10 +- .../core/authentication/linkAccount.test.ts | 54 +- .../in-app/core/authentication/linkAccount.ts | 14 +- .../in-app/core/authentication/passkeys.ts | 42 +- .../in-app/core/authentication/siwe.ts | 14 +- .../in-app/core/authentication/types.ts | 3 +- .../core/eip5972/in-app-wallet-calls.ts | 14 +- .../eip5972/in-app-wallet-capabilities.ts | 6 +- .../in-app/core/eip7702/minimal-account.ts | 56 +- .../wallets/in-app/core/users/getUser.test.ts | 58 +- .../src/wallets/in-app/core/users/getUser.ts | 10 +- .../in-app/core/wallet/enclave-wallet.ts | 84 +- .../in-app/core/wallet/in-app-core.test.ts | 106 +- .../wallets/in-app/core/wallet/in-app-core.ts | 44 +- .../src/wallets/in-app/core/wallet/index.ts | 18 +- .../wallets/in-app/native/auth/native-auth.ts | 6 +- .../wallets/in-app/native/auth/passkeys.ts | 42 +- .../src/wallets/in-app/native/ecosystem.ts | 16 +- .../in-app/native/helpers/api/fetchers.ts | 26 +- .../in-app/native/helpers/auth/middleware.ts | 6 +- .../in-app/native/helpers/storage/local.ts | 4 +- .../in-app/native/helpers/wallet/creation.ts | 16 +- .../in-app/native/helpers/wallet/migration.ts | 24 +- .../native/helpers/wallet/recoveryCode.ts | 8 +- .../in-app/native/helpers/wallet/retrieval.ts | 10 +- .../native/helpers/wallet/sharded-wallet.ts | 12 +- .../in-app/native/helpers/wallet/sss.ts | 436 +- .../src/wallets/in-app/native/in-app.ts | 2 +- .../wallets/in-app/native/native-connector.ts | 34 +- .../src/wallets/in-app/web/ecosystem.ts | 16 +- .../thirdweb/src/wallets/in-app/web/in-app.ts | 2 +- .../in-app/web/lib/auth/abstract-login.ts | 4 +- .../wallets/in-app/web/lib/auth/base-login.ts | 14 +- .../in-app/web/lib/auth/iframe-auth.ts | 10 +- .../src/wallets/in-app/web/lib/auth/oauth.ts | 4 +- .../src/wallets/in-app/web/lib/auth/otp.ts | 14 +- .../wallets/in-app/web/lib/auth/passkeys.ts | 20 +- .../in-app/web/lib/get-url-token.test.tsx | 18 +- .../wallets/in-app/web/lib/get-url-token.ts | 2 +- .../wallets/in-app/web/lib/iframe-wallet.ts | 64 +- .../in-app/web/lib/in-app-integration.test.ts | 18 +- .../in-app/web/lib/web-connector.test.ts | 22 +- .../wallets/in-app/web/lib/web-connector.ts | 58 +- .../IframeCommunicator.test.tsx | 30 +- .../iFrameCommunication/IframeCommunicator.ts | 22 +- .../InAppWalletIframeCommunicator.ts | 14 +- .../thirdweb/src/wallets/injected/index.ts | 48 +- .../src/wallets/injected/mipdStore.ts | 2 +- .../manager/connection-manager.test.ts | 50 +- .../thirdweb/src/wallets/manager/index.ts | 20 +- .../src/wallets/native/create-wallet.ts | 38 +- .../thirdweb/src/wallets/private-key.test.ts | 18 +- packages/thirdweb/src/wallets/private-key.ts | 30 +- packages/thirdweb/src/wallets/smart/index.ts | 185 +- .../src/wallets/smart/is-smart-wallet.test.ts | 36 +- .../thirdweb/src/wallets/smart/lib/bundler.ts | 46 +- .../thirdweb/src/wallets/smart/lib/calls.ts | 8 +- .../src/wallets/smart/lib/constants.ts | 6 +- .../src/wallets/smart/lib/packUserOp.ts | 12 +- .../src/wallets/smart/lib/paymaster.ts | 24 +- .../thirdweb/src/wallets/smart/lib/signing.ts | 46 +- .../smart/lib/smart-wallet-capabilities.ts | 10 +- .../thirdweb/src/wallets/smart/lib/userop.ts | 122 +- .../src/wallets/smart/presets/7579.ts | 70 +- .../src/wallets/smart/presets/index.ts | 2 +- .../wallets/smart/smart-wallet-dev.test.ts | 35 +- .../smart-wallet-integration-v07.test.ts | 85 +- .../smart/smart-wallet-integration.test.ts | 74 +- .../smart/smart-wallet-modular.test.ts | 20 +- .../smart/smart-wallet-tokenpaymaster.test.ts | 12 +- .../wallets/smart/smart-wallet-zksync.test.ts | 18 +- .../src/wallets/smart/smart-wallet.ts | 40 +- packages/thirdweb/src/wallets/smart/types.ts | 8 +- packages/thirdweb/src/wallets/utils/chains.ts | 3 + .../src/wallets/utils/defaultDappMetadata.ts | 8 +- .../src/wallets/utils/generateAccount.ts | 2 +- .../utils/getDefaultAppMetadata_node.test.ts | 4 +- .../src/wallets/utils/getTokenBalance.test.ts | 20 +- .../src/wallets/utils/getTokenBalance.ts | 8 +- .../wallets/utils/getWalletBalance.test.ts | 18 +- .../src/wallets/utils/getWalletBalance.ts | 10 +- .../src/wallets/wallet-connect/controller.ts | 74 +- .../wallets/wallet-connect/receiver/index.ts | 30 +- .../wallet-connect/receiver/receiver.test.ts | 40 +- .../request-handlers/send-raw-transaction.ts | 2 +- .../request-handlers/send-transaction.ts | 10 +- .../request-handlers/sign-transaction.ts | 4 +- .../receiver/session-proposal.test.ts | 106 +- .../receiver/session-proposal.ts | 23 +- .../receiver/session-request.test.ts | 198 +- .../receiver/session-request.ts | 18 +- .../wallet-connect/receiver/session-store.ts | 8 +- .../thirdweb/src/wallets/wallet-emitter.ts | 2 +- packages/thirdweb/tsconfig.base.json | 53 +- packages/thirdweb/tsconfig.build.json | 14 +- packages/thirdweb/tsconfig.json | 9 +- packages/thirdweb/tsconfig.typedoc.json | 14 +- packages/thirdweb/tsdoc.json | 168 +- packages/thirdweb/vite.config.ts | 8 +- packages/vault-sdk/biome.json | 4 + packages/vault-sdk/package.json | 63 +- packages/vault-sdk/src/exports/thirdweb.ts | 18 +- packages/vault-sdk/src/sdk.ts | 59 +- packages/vault-sdk/src/transaction-parser.ts | 62 +- packages/vault-sdk/src/types.ts | 2 +- packages/vault-sdk/tsconfig.base.json | 53 +- packages/vault-sdk/tsconfig.build.json | 14 +- packages/vault-sdk/tsconfig.json | 10 +- packages/wagmi-adapter/biome.json | 4 + packages/wagmi-adapter/package.json | 51 +- packages/wagmi-adapter/src/connector.ts | 42 +- .../wagmi-adapter/src/exports/thirdweb.ts | 2 +- packages/wagmi-adapter/tsconfig.base.json | 53 +- packages/wagmi-adapter/tsconfig.build.json | 14 +- packages/wagmi-adapter/tsconfig.json | 10 +- pnpm-lock.yaml | 573 +- scripts/pre-nightly.mjs | 1 + turbo.json | 140 +- 4341 files changed, 63295 insertions(+), 66553 deletions(-) delete mode 100644 apps/login/.gitignore delete mode 100644 apps/login/README.md delete mode 100644 apps/login/components.json delete mode 100644 apps/login/eslint.config.mjs delete mode 100644 apps/login/next.config.ts delete mode 100644 apps/login/package.json delete mode 100644 apps/login/postcss.config.mjs delete mode 100644 apps/login/public/placeholder.svg delete mode 100644 apps/login/src/actions/create-code.ts delete mode 100644 apps/login/src/actions/siwe.ts delete mode 100644 apps/login/src/api/login/config.ts delete mode 100644 apps/login/src/app/api/jwks/route.ts delete mode 100644 apps/login/src/app/api/token/route.ts delete mode 100644 apps/login/src/app/authorize/page.tsx delete mode 100644 apps/login/src/app/favicon.ico delete mode 100644 apps/login/src/app/globals.css delete mode 100644 apps/login/src/app/layout.tsx delete mode 100644 apps/login/src/components/login-form.tsx delete mode 100644 apps/login/src/components/permission-card.tsx delete mode 100644 apps/login/src/components/theme-toggle.tsx delete mode 100644 apps/login/src/components/ui/button.tsx delete mode 100644 apps/login/src/components/ui/card.tsx delete mode 100644 apps/login/src/components/ui/dropdown-menu.tsx delete mode 100644 apps/login/src/components/ui/input.tsx delete mode 100644 apps/login/src/components/ui/label.tsx delete mode 100644 apps/login/src/components/ui/select.tsx delete mode 100644 apps/login/src/components/ui/separator.tsx delete mode 100644 apps/login/src/components/ui/sonner.tsx delete mode 100644 apps/login/src/components/ui/switch.tsx delete mode 100644 apps/login/src/components/ui/tooltip.tsx delete mode 100644 apps/login/src/lib/dev-mode.ts delete mode 100644 apps/login/src/lib/keys.ts delete mode 100644 apps/login/src/lib/oauth.ts delete mode 100644 apps/login/src/lib/siwe-server.ts delete mode 100644 apps/login/src/lib/thirdweb-client.ts delete mode 100644 apps/login/src/lib/urls.ts delete mode 100644 apps/login/src/lib/utils.ts delete mode 100644 apps/login/src/lib/vercel.ts delete mode 100644 apps/login/src/providers/theme-provider.tsx delete mode 100644 apps/login/src/providers/thirdweb-provider.tsx delete mode 100644 apps/login/tailwind.config.ts delete mode 100644 apps/login/tsconfig.json create mode 100644 apps/playground-web/biome.json create mode 100644 packages/react-native-adapter/biome.json create mode 100644 packages/service-utils/biome.json create mode 100644 packages/vault-sdk/biome.json create mode 100644 packages/wagmi-adapter/biome.json diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index 09cff73b162..e678b68e75b 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -63,7 +63,7 @@ jobs: - name: Setup Biome uses: biomejs/setup-biome@a9763ed3d2388f5746f9dc3e1a55df7f4609bc89 # v2.5.1 with: - version: latest + version: 2.0.0 - run: pnpm lint diff --git a/.vscode/settings.json b/.vscode/settings.json index 266684b034c..367183517b3 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,25 +1,8 @@ { - "editor.formatOnSave": true, - "editor.codeActionsOnSave": { - "source.fixAll.eslint": "explicit", - "source.organizeImports.biome": "explicit", - "quickfix.biome": "explicit" - }, - "editor.defaultFormatter": "biomejs.biome", - "typescript.preferences.autoImportFileExcludePatterns": [ - "./packages/thirdweb/src/exports" - ], - "typescript.preferences.autoImportSpecifierExcludeRegexes": [ - "@radix-ui", - "next/router", - "next/dist", - "^lucide-react/dist/lucide-react.suffixed$" - ], - "typescript.tsdk": "node_modules/typescript/lib", - "[typescriptreact]": { + "[css]": { "editor.defaultFormatter": "biomejs.biome" }, - "[typescript]": { + "[javascript]": { "editor.defaultFormatter": "biomejs.biome" }, "[json]": { @@ -28,14 +11,30 @@ "[markdown]": { "editor.defaultFormatter": "esbenp.prettier-vscode" }, - "[javascript]": { + "[typescript]": { "editor.defaultFormatter": "biomejs.biome" }, - "[css]": { + "[typescriptreact]": { "editor.defaultFormatter": "biomejs.biome" }, + "editor.codeActionsOnSave": { + "quickfix.biome": "explicit", + "source.fixAll.biome": "explicit" + }, + "editor.defaultFormatter": "biomejs.biome", + "editor.formatOnSave": true, "eslint.workingDirectories": [ { "pattern": "./packages/*/" }, { "pattern": "./apps/*/" } - ] + ], + "typescript.preferences.autoImportFileExcludePatterns": [ + "./packages/thirdweb/src/exports" + ], + "typescript.preferences.autoImportSpecifierExcludeRegexes": [ + "@radix-ui", + "next/router", + "next/dist", + "^lucide-react/dist/lucide-react.suffixed$" + ], + "typescript.tsdk": "node_modules/typescript/lib" } diff --git a/apps/dashboard/.eslintrc.js b/apps/dashboard/.eslintrc.js index 3c12095ad34..3b380fde313 100644 --- a/apps/dashboard/.eslintrc.js +++ b/apps/dashboard/.eslintrc.js @@ -1,51 +1,97 @@ module.exports = { + env: { + browser: true, + node: true, + }, extends: [ "eslint:recommended", "plugin:@typescript-eslint/recommended", "plugin:@next/next/recommended", "plugin:storybook/recommended", ], - rules: { - "react-compiler/react-compiler": "error", - "no-restricted-syntax": [ - "error", - { - selector: "CallExpression[callee.name='useEffect']", - message: - 'Are you *sure* you need to use "useEffect" here? If you loading any async function prefer using "useQuery".', + overrides: [ + // disable restricted imports in tw-components + { + files: "src/tw-components/**/*", + rules: { + "no-restricted-imports": ["off"], }, - { - selector: "CallExpression[callee.name='createContext']", - message: - 'Are you *sure* you need to use a "Context"? In almost all cases you should prefer passing props directly.', + }, + // allow direct PostHog imports inside analytics helpers + { + files: "src/@/analytics/**/*", + rules: { + "no-restricted-imports": ["off"], }, - { - selector: "CallExpression[callee.name='defineChain']", - message: - "Use useV5DashboardChain instead if you are using it inside a component", + }, + // enable rule specifically for TypeScript files + { + files: ["*.ts", "*.tsx"], + rules: { + "@typescript-eslint/explicit-module-boundary-types": ["off"], }, - { - selector: "CallExpression[callee.name='defineDashboardChain']", - message: - "Use useV5DashboardChain instead if you are using it inside a component", + }, + + // in test files, allow null assertions and anys and eslint is sometimes weird about the react-scope thing + { + files: ["*test.ts?(x)"], + rules: { + "@typescript-eslint/no-explicit-any": "off", + "@typescript-eslint/no-non-null-assertion": "off", + + "react/display-name": "off", }, - { - selector: "CallExpression[callee.name='mapV4ChainToV5Chain']", - message: - "Use useV5DashboardChain instead if you are using it inside a component", + }, + // allow requires in non-transpiled JS files and logical key ordering in config files + { + files: [ + "babel-node.js", + "*babel.config.js", + "env.config.js", + "next.config.js", + "webpack.config.js", + "packages/mobile-web/package-builder/**", + ], + rules: {}, + }, + + // setupTests can have separated imports for logical grouping + { + files: ["setupTests.ts"], + rules: { + "import/newline-after-import": "off", }, - { - selector: "CallExpression[callee.name='resolveScheme']", - message: - "resolveScheme can throw error if resolution fails. Either catch the error and ignore the lint warning or Use `resolveSchemeWithErrorHandler` / `replaceIpfsUrl` utility in dashboard instead", + }, + // turn OFF unused vars via eslint + { + files: ["*.ts", "*.tsx"], + rules: { + "@next/next/no-img-element": "off", + "@typescript-eslint/no-unused-vars": "off", }, - ], + }, + // THIS NEEDS TO GO LAST! + { + extends: ["biome"], + files: ["*.ts", "*.js", "*.tsx", "*.jsx"], + }, + ], + parser: "@typescript-eslint/parser", + parserOptions: { + ecmaFeatures: { + impliedStrict: true, + jsx: true, + }, + ecmaVersion: 2019, + warnOnUnsupportedTypeScriptVersion: true, + }, + plugins: ["@typescript-eslint", "react-compiler"], + rules: { "no-restricted-imports": [ "error", { paths: [ { - name: "@chakra-ui/react", // these are provided by tw-components, so we don't want to import them from chakra directly importNames: [ "Card", @@ -82,52 +128,77 @@ module.exports = { ], message: 'Use the equivalent component from "tw-components" instead.', + name: "@chakra-ui/react", }, { - name: "@chakra-ui/layout", message: "Import from `@chakra-ui/react` instead of `@chakra-ui/layout`.", + name: "@chakra-ui/layout", }, { - name: "@chakra-ui/button", message: "Import from `@chakra-ui/react` instead of `@chakra-ui/button`.", + name: "@chakra-ui/button", }, { - name: "@chakra-ui/menu", message: "Import from `@chakra-ui/react` instead of `@chakra-ui/menu`.", + name: "@chakra-ui/menu", }, { - name: "next/navigation", importNames: ["useRouter"], message: 'Use `import { useDashboardRouter } from "@/lib/DashboardRouter";` instead', + name: "next/navigation", }, { - name: "lucide-react", importNames: ["Link", "Table", "Sidebar"], message: 'This is likely a mistake. If you really want to import this - postfix the imported name with Icon. Example - "LinkIcon"', + name: "lucide-react", }, { - name: "posthog-js", message: 'Import "posthog-js" directly only within the analytics helpers ("src/@/analytics/*"). Use the exported helpers from "@/analytics/track" elsewhere.', + name: "posthog-js", }, ], }, ], - }, - parser: "@typescript-eslint/parser", - plugins: ["@typescript-eslint", "react-compiler"], - parserOptions: { - ecmaVersion: 2019, - ecmaFeatures: { - impliedStrict: true, - jsx: true, - }, - warnOnUnsupportedTypeScriptVersion: true, + "no-restricted-syntax": [ + "error", + { + message: + 'Are you *sure* you need to use "useEffect" here? If you loading any async function prefer using "useQuery".', + selector: "CallExpression[callee.name='useEffect']", + }, + { + message: + 'Are you *sure* you need to use a "Context"? In almost all cases you should prefer passing props directly.', + selector: "CallExpression[callee.name='createContext']", + }, + { + message: + "Use useV5DashboardChain instead if you are using it inside a component", + selector: "CallExpression[callee.name='defineChain']", + }, + { + message: + "Use useV5DashboardChain instead if you are using it inside a component", + selector: "CallExpression[callee.name='defineDashboardChain']", + }, + { + message: + "Use useV5DashboardChain instead if you are using it inside a component", + selector: "CallExpression[callee.name='mapV4ChainToV5Chain']", + }, + { + message: + "resolveScheme can throw error if resolution fails. Either catch the error and ignore the lint warning or Use `resolveSchemeWithErrorHandler` / `replaceIpfsUrl` utility in dashboard instead", + selector: "CallExpression[callee.name='resolveScheme']", + }, + ], + "react-compiler/react-compiler": "error", }, settings: { react: { @@ -136,67 +207,4 @@ module.exports = { version: "detect", }, }, - overrides: [ - // disable restricted imports in tw-components - { - files: "src/tw-components/**/*", - rules: { - "no-restricted-imports": ["off"], - }, - }, - // allow direct PostHog imports inside analytics helpers - { - files: "src/@/analytics/**/*", - rules: { - "no-restricted-imports": ["off"], - }, - }, - // enable rule specifically for TypeScript files - { - files: ["*.ts", "*.tsx"], - rules: { - "@typescript-eslint/explicit-module-boundary-types": ["off"], - }, - }, - - // in test files, allow null assertions and anys and eslint is sometimes weird about the react-scope thing - { - files: ["*test.ts?(x)"], - rules: { - "@typescript-eslint/no-non-null-assertion": "off", - "@typescript-eslint/no-explicit-any": "off", - - "react/display-name": "off", - }, - }, - // allow requires in non-transpiled JS files and logical key ordering in config files - { - files: [ - "babel-node.js", - "*babel.config.js", - "env.config.js", - "next.config.js", - "webpack.config.js", - "packages/mobile-web/package-builder/**", - ], - rules: {}, - }, - - // setupTests can have separated imports for logical grouping - { - files: ["setupTests.ts"], - rules: { - "import/newline-after-import": "off", - }, - }, - // THIS NEEDS TO GO LAST! - { - files: ["*.ts", "*.js", "*.tsx", "*.jsx"], - extends: ["biome"], - }, - ], - env: { - browser: true, - node: true, - }, }; diff --git a/apps/dashboard/biome.json b/apps/dashboard/biome.json index b287b3aca79..780bbdcd1af 100644 --- a/apps/dashboard/biome.json +++ b/apps/dashboard/biome.json @@ -1,16 +1,4 @@ { - "$schema": "https://biomejs.dev/schemas/1.9.2/schema.json", - "extends": ["../../biome.json"], - "overrides": [ - { - "include": ["src/css/swagger-ui.css"], - "linter": { - "rules": { - "suspicious": { - "noImportantInKeyframe": "off" - } - } - } - } - ] + "$schema": "https://biomejs.dev/schemas/2.0.0/schema.json", + "extends": "//" } diff --git a/apps/dashboard/checkly.config.ts b/apps/dashboard/checkly.config.ts index 837a6db2a21..756b299fb90 100644 --- a/apps/dashboard/checkly.config.ts +++ b/apps/dashboard/checkly.config.ts @@ -2,29 +2,29 @@ import { defineConfig } from "checkly"; import { Frequency } from "checkly/constructs"; export default defineConfig({ - projectName: "thirdweb.com", - logicalId: "thirdweb-www", - repoUrl: "https://github.com/thirdweb-dev/dashboard", checks: { activated: true, - muted: false, - runtimeId: "2023.09", - frequency: Frequency.EVERY_24H, - locations: ["us-east-1", "eu-west-1"], - tags: ["website"], + browserChecks: { + frequency: Frequency.EVERY_24H, + testMatch: "./tests/**/*.spec.ts", + }, checkMatch: "./**/*.check.ts", + frequency: Frequency.EVERY_24H, ignoreDirectoriesMatch: [], + locations: ["us-east-1", "eu-west-1"], + muted: false, playwrightConfig: { use: { baseURL: process.env.ENVIRONMENT_URL || "https://thirdweb.com", }, }, - browserChecks: { - frequency: Frequency.EVERY_24H, - testMatch: "./tests/**/*.spec.ts", - }, + runtimeId: "2023.09", + tags: ["website"], }, cli: { runLocation: "eu-west-1", }, + logicalId: "thirdweb-www", + projectName: "thirdweb.com", + repoUrl: "https://github.com/thirdweb-dev/dashboard", }); diff --git a/apps/dashboard/components.json b/apps/dashboard/components.json index b1dc07eb643..d6f9c61bbe9 100644 --- a/apps/dashboard/components.json +++ b/apps/dashboard/components.json @@ -1,17 +1,17 @@ { "$schema": "https://ui.shadcn.com/schema.json", - "style": "default", + "aliases": { + "components": "@/components", + "utils": "@/lib/utils" + }, "rsc": true, - "tsx": true, + "style": "default", "tailwind": { + "baseColor": "neutral", "config": "tailwind.config.js", "css": "src/global.css", - "baseColor": "neutral", "cssVariables": true, "prefix": "" }, - "aliases": { - "components": "@/components", - "utils": "@/lib/utils" - } -} \ No newline at end of file + "tsx": true +} diff --git a/apps/dashboard/knip.json b/apps/dashboard/knip.json index 4e487ef46d3..a063b5a4a8f 100644 --- a/apps/dashboard/knip.json +++ b/apps/dashboard/knip.json @@ -1,18 +1,18 @@ { "$schema": "https://unpkg.com/knip@5/schema.json", - "next": true, "ignore": [ "src/@/components/ui/**", "src/components/notices/AnnouncementBanner.tsx", "src/components/cmd-k-search/index.tsx", "src/lib/search.ts" ], - "project": ["src/**"], - "ignoreBinaries": ["only-allow", "biome"], + "ignoreBinaries": ["only-allow"], "ignoreDependencies": [ "@thirdweb-dev/service-utils", "@thirdweb-dev/vault-sdk", "@types/color", "fast-xml-parser" - ] + ], + "next": true, + "project": ["src/**"] } diff --git a/apps/dashboard/next-sitemap.config.js b/apps/dashboard/next-sitemap.config.js index 13c4a59ed2e..1f69b0162dc 100644 --- a/apps/dashboard/next-sitemap.config.js +++ b/apps/dashboard/next-sitemap.config.js @@ -44,12 +44,37 @@ async function getSingleChain(chainIdOrSlug) { /** @type {import('next-sitemap').IConfig} */ module.exports = { - siteUrl: process.env.SITE_URL || "https://thirdweb.com", + additionalPaths: async (config) => { + const [framerUrls, allChains] = await Promise.all([ + getFramerXML(), + fetchChainsFromApi(), + ]); + + return [ + ...framerUrls.map((url) => { + return { + changefreq: config.changefreq, + lastmod: config.autoLastmod ? new Date().toISOString() : undefined, + loc: url.loc, + priority: config.priority, + }; + }), + ...allChains.map((chain) => { + return { + changefreq: config.changefreq, + lastmod: config.autoLastmod ? new Date().toISOString() : undefined, + loc: `/${chain.slug}`, + priority: config.priority, + }; + }), + ...(await createSearchRecordSitemaps(config)), + ]; + }, + exclude: ["/chain/validate"], generateRobotsTxt: true, robotsTxtOptions: { policies: [ { - userAgent: "*", // allow all if production allow: process.env.VERCEL_ENV === "production" ? ["/"] : [], // disallow all if not production @@ -58,10 +83,11 @@ module.exports = { ? ["/"] : // disallow `/team` and `/team/*` if production ["/team", "/team/*"], + userAgent: "*", }, ], }, - exclude: ["/chain/validate"], + siteUrl: process.env.SITE_URL || "https://thirdweb.com", transform: async (config, _path) => { let path = _path; @@ -75,40 +101,14 @@ module.exports = { path = path.replace("deployer.thirdweb.eth", "thirdweb.eth"); } return { + alternateRefs: config.alternateRefs ?? [], + changefreq: config.changefreq, + lastmod: config.autoLastmod ? new Date().toISOString() : undefined, // => this will be exported as http(s):/// loc: path, - changefreq: config.changefreq, priority: config.priority, - lastmod: config.autoLastmod ? new Date().toISOString() : undefined, - alternateRefs: config.alternateRefs ?? [], }; }, - additionalPaths: async (config) => { - const [framerUrls, allChains] = await Promise.all([ - getFramerXML(), - fetchChainsFromApi(), - ]); - - return [ - ...framerUrls.map((url) => { - return { - loc: url.loc, - changefreq: config.changefreq, - priority: config.priority, - lastmod: config.autoLastmod ? new Date().toISOString() : undefined, - }; - }), - ...allChains.map((chain) => { - return { - loc: `/${chain.slug}`, - changefreq: config.changefreq, - priority: config.priority, - lastmod: config.autoLastmod ? new Date().toISOString() : undefined, - }; - }), - ...(await createSearchRecordSitemaps(config)), - ]; - }, }; /** * @param {{ changefreq?: any; priority?: any; autoLastmod?: any; }} config @@ -131,10 +131,10 @@ async function createSearchRecordSitemaps(config) { parsedLines.map((parsedLine) => { return getSingleChain(parsedLine.chain_id) .then((parsedLineChain) => ({ - loc: `/${parsedLineChain.slug}/${parsedLine.contract_address}`, changefreq: config.changefreq, - priority: config.priority, lastmod: config.autoLastmod ? new Date().toISOString() : undefined, + loc: `/${parsedLineChain.slug}/${parsedLine.contract_address}`, + priority: config.priority, })) .catch(() => null); }), diff --git a/apps/dashboard/next.config.ts b/apps/dashboard/next.config.ts index cdf880e3d9f..4baa4b86582 100644 --- a/apps/dashboard/next.config.ts +++ b/apps/dashboard/next.config.ts @@ -46,91 +46,90 @@ function determineIpfsGateways() { const remotePatterns: RemotePattern[] = []; if (process.env.API_ROUTES_CLIENT_ID) { remotePatterns.push({ - protocol: "https", hostname: `${process.env.API_ROUTES_CLIENT_ID}.ipfscdn.io`, + protocol: "https", }); remotePatterns.push({ - protocol: "https", hostname: `${process.env.API_ROUTES_CLIENT_ID}.thirdwebstorage-staging.com`, + protocol: "https", }); remotePatterns.push({ - protocol: "https", hostname: `${process.env.API_ROUTES_CLIENT_ID}.thirdwebstorage-dev.com`, + protocol: "https", }); } else { // this should only happen in development remotePatterns.push({ - protocol: "https", hostname: "ipfs.io", + protocol: "https", }); } // also add the dashboard clientId ipfs gateway if it is set if (process.env.NEXT_PUBLIC_DASHBOARD_CLIENT_ID) { remotePatterns.push({ - protocol: "https", hostname: `${process.env.NEXT_PUBLIC_DASHBOARD_CLIENT_ID}.ipfscdn.io`, + protocol: "https", }); remotePatterns.push({ - protocol: "https", hostname: `${process.env.NEXT_PUBLIC_DASHBOARD_CLIENT_ID}.thirdwebstorage-staging.com`, + protocol: "https", }); remotePatterns.push({ - protocol: "https", hostname: `${process.env.NEXT_PUBLIC_DASHBOARD_CLIENT_ID}.thirdwebstorage-dev.com`, + protocol: "https", }); } return remotePatterns; } const SENTRY_OPTIONS: SentryBuildOptions = { + // An auth token is required for uploading source maps. + authToken: process.env.SENTRY_AUTH_TOKEN, + + // Enables automatic instrumentation of Vercel Cron Monitors. + // See the following for more information: + // https://docs.sentry.io/product/crons/ + // https://vercel.com/docs/cron-jobs + automaticVercelMonitors: false, + + // Automatically tree-shake Sentry logger statements to reduce bundle size + disableLogger: true, // For all available options, see: // https://github.com/getsentry/sentry-webpack-plugin#options org: "thirdweb-dev", project: "dashboard", - // An auth token is required for uploading source maps. - authToken: process.env.SENTRY_AUTH_TOKEN, // Suppresses source map uploading logs during build silent: true, + + // Routes browser requests to Sentry through a Next.js rewrite to circumvent ad-blockers (increases server load) + tunnelRoute: "/err", // For all available options, see: // https://docs.sentry.io/platforms/javascript/guides/nextjs/manual-setup/ // Upload a larger set of source maps for prettier stack traces (increases build time) widenClientFileUpload: true, - - // Routes browser requests to Sentry through a Next.js rewrite to circumvent ad-blockers (increases server load) - tunnelRoute: "/err", - - // Automatically tree-shake Sentry logger statements to reduce bundle size - disableLogger: true, - - // Enables automatic instrumentation of Vercel Cron Monitors. - // See the following for more information: - // https://docs.sentry.io/product/crons/ - // https://vercel.com/docs/cron-jobs - automaticVercelMonitors: false, }; // add additional languages to the framer rewrite paths here (english is already included by default) const FRAMER_ADDITIONAL_LANGUAGES = ["es"]; const baseNextConfig: NextConfig = { + compiler: { + emotion: true, + }, eslint: { ignoreDuringBuilds: true, }, - productionBrowserSourceMaps: false, experimental: { - webpackBuildWorker: true, - webpackMemoryOptimizations: true, serverSourceMaps: false, taint: true, + webpackBuildWorker: true, + webpackMemoryOptimizations: true, }, - serverExternalPackages: ["pino-pretty"], async headers() { return [ { - // Apply these headers to all routes in your application. - source: "/(.*)", headers: [ ...securityHeaders, { @@ -138,68 +137,69 @@ const baseNextConfig: NextConfig = { value: "sec-ch-viewport-width", }, ], + // Apply these headers to all routes in your application. + source: "/(.*)", }, ]; }, + images: { + contentSecurityPolicy: "default-src 'self'; script-src 'none'; sandbox;", + dangerouslyAllowSVG: true, + remotePatterns: [ + { + hostname: "**.thirdweb.com", + protocol: "https", + }, + ...determineIpfsGateways(), + ], + }, + productionBrowserSourceMaps: false, + reactStrictMode: true, async redirects() { return getRedirects(); }, async rewrites() { return [ { - source: "/_ph/static/:path*", destination: "https://us-assets.i.posthog.com/static/:path*", + source: "/_ph/static/:path*", }, { - source: "/_ph/:path*", destination: "https://us.i.posthog.com/:path*", + source: "/_ph/:path*", }, { - source: "/_ph/decide", destination: "https://us.i.posthog.com/decide", + source: "/_ph/decide", }, { - source: "/thirdweb.eth", destination: "/deployer.thirdweb.eth", + source: "/thirdweb.eth", }, { - source: "/thirdweb.eth/:path*", destination: "/deployer.thirdweb.eth/:path*", + source: "/thirdweb.eth/:path*", }, // re-write /home to / (this is so that logged in users will be able to go to /home and NOT be redirected to the logged in app) { - source: "/home", destination: "https://landing.thirdweb.com", + source: "/home", }, // flatmap the framer paths for the default language and the additional languages ...FRAMER_PATHS.flatMap((path) => [ { - source: path, destination: `https://landing.thirdweb.com${path}`, + source: path, }, // this is for additional languages ...FRAMER_ADDITIONAL_LANGUAGES.map((lang) => ({ - source: `/${lang}${path}`, destination: `https://landing.thirdweb.com/${lang}${path}`, + source: `/${lang}${path}`, })), ]), ]; }, - images: { - dangerouslyAllowSVG: true, - contentSecurityPolicy: "default-src 'self'; script-src 'none'; sandbox;", - remotePatterns: [ - { - protocol: "https", - hostname: "**.thirdweb.com", - }, - ...determineIpfsGateways(), - ], - }, - compiler: { - emotion: true, - }, - reactStrictMode: true, + serverExternalPackages: ["pino-pretty"], }; function getConfig(): NextConfig { diff --git a/apps/dashboard/package.json b/apps/dashboard/package.json index d653afc294c..783f5d4b54a 100644 --- a/apps/dashboard/package.json +++ b/apps/dashboard/package.json @@ -1,26 +1,4 @@ { - "name": "thirdweb-dashboard", - "version": "3.0.0", - "private": true, - "scripts": { - "preinstall": "npx only-allow pnpm", - "dev": "next dev --turbopack", - "build": "NODE_OPTIONS=--max-old-space-size=6144 next build", - "start": "next start", - "format": "biome format ./src --write", - "lint": "biome check ./src && knip && eslint ./src", - "fix": "biome check ./src --fix && eslint ./src --fix", - "typecheck": "tsc --noEmit", - "gen:theme-typings": "chakra-cli tokens src/theme/index.ts", - "postinstall": "pnpm run gen:theme-typings", - "postbuild": "next-sitemap", - "build:analyze": "ANALYZE=true pnpm run build", - "knip": "knip", - "playwright": "playwright test", - "update-checkly": "npx checkly deploy", - "storybook": "storybook dev -p 6006", - "build-storybook": "storybook build" - }, "dependencies": { "@chakra-ui/react": "^2.8.2", "@chakra-ui/styled-system": "^2.9.2", @@ -106,6 +84,7 @@ "zod": "3.25.62" }, "devDependencies": { + "@biomejs/biome": "2.0.0", "@chakra-ui/cli": "^2.4.1", "@chromatic-com/storybook": "4.0.0", "@next/bundle-analyzer": "15.3.3", @@ -139,5 +118,27 @@ "storybook": "9.0.8", "tailwindcss": "3.4.17", "typescript": "5.8.3" - } + }, + "name": "thirdweb-dashboard", + "private": true, + "scripts": { + "build": "NODE_OPTIONS=--max-old-space-size=6144 next build", + "build-storybook": "storybook build", + "build:analyze": "ANALYZE=true pnpm run build", + "dev": "next dev --turbopack", + "fix": "biome check ./src --fix && eslint ./src --fix", + "format": "biome format ./src --write", + "gen:theme-typings": "chakra-cli tokens src/theme/index.ts", + "knip": "knip", + "lint": "biome check ./src && knip && eslint ./src", + "playwright": "playwright test", + "postbuild": "next-sitemap", + "postinstall": "pnpm run gen:theme-typings", + "preinstall": "npx only-allow pnpm", + "start": "next start", + "storybook": "storybook dev -p 6006", + "typecheck": "tsc --noEmit", + "update-checkly": "npx checkly deploy" + }, + "version": "3.0.0" } diff --git a/apps/dashboard/playwright.config.ts b/apps/dashboard/playwright.config.ts index ca9c4b4b6ee..216151645d1 100644 --- a/apps/dashboard/playwright.config.ts +++ b/apps/dashboard/playwright.config.ts @@ -10,25 +10,10 @@ import { defineConfig, devices } from "@playwright/test"; * See https://playwright.dev/docs/test-configuration. */ export default defineConfig({ - testDir: "./tests", - /* Run tests in files in parallel */ - fullyParallel: true, /* Fail the build on CI if you accidentally left test.only in the source code. */ forbidOnly: !!process.env.CI, - /* Retry on CI only */ - retries: process.env.CI ? 2 : 0, - /* Opt out of parallel tests on CI. */ - workers: process.env.CI ? 1 : undefined, - /* Reporter to use. See https://playwright.dev/docs/test-reporters */ - reporter: "html", - /* Shared settings for all the projects below. See https://playwright.dev/docs/api/class-testoptions. */ - use: { - /* Base URL to use in actions like `await page.goto('/')`. */ - baseURL: process.env.ENVIRONMENT_URL || "http://127.0.0.1:3000", - - /* Collect trace when retrying the failed test. See https://playwright.dev/docs/trace-viewer */ - trace: "on-first-retry", - }, + /* Run tests in files in parallel */ + fullyParallel: true, /* Configure projects for major browsers */ projects: [ @@ -67,13 +52,28 @@ export default defineConfig({ // use: { ...devices['Desktop Chrome'], channel: 'chrome' }, // }, ], + /* Reporter to use. See https://playwright.dev/docs/test-reporters */ + reporter: "html", + /* Retry on CI only */ + retries: process.env.CI ? 2 : 0, + testDir: "./tests", + /* Shared settings for all the projects below. See https://playwright.dev/docs/api/class-testoptions. */ + use: { + /* Base URL to use in actions like `await page.goto('/')`. */ + baseURL: process.env.ENVIRONMENT_URL || "http://127.0.0.1:3000", + + /* Collect trace when retrying the failed test. See https://playwright.dev/docs/trace-viewer */ + trace: "on-first-retry", + }, /* Run your local dev server before starting the tests */ webServer: process.env.CI ? undefined : { command: "pnpm run start", - url: "http://127.0.0.1:3000", reuseExistingServer: !process.env.CI, + url: "http://127.0.0.1:3000", }, + /* Opt out of parallel tests on CI. */ + workers: process.env.CI ? 1 : undefined, }); diff --git a/apps/dashboard/postcss.config.js b/apps/dashboard/postcss.config.js index 12a703d900d..4df9d3ba36d 100644 --- a/apps/dashboard/postcss.config.js +++ b/apps/dashboard/postcss.config.js @@ -1,6 +1,6 @@ module.exports = { plugins: { - tailwindcss: {}, autoprefixer: {}, + tailwindcss: {}, }, }; diff --git a/apps/dashboard/redirects.js b/apps/dashboard/redirects.js index 837fa6a5c5c..39517d59761 100644 --- a/apps/dashboard/redirects.js +++ b/apps/dashboard/redirects.js @@ -1,64 +1,64 @@ const legacyDashboardToTeamRedirects = [ { - source: "/dashboard", destination: "/team", permanent: false, + source: "/dashboard", }, { - source: "/dashboard/contracts/:path*", destination: "/team/~/~/contracts", permanent: false, + source: "/dashboard/contracts/:path*", }, { - source: "/dashboard/connect/ecosystem/:path*", destination: "/team/~/~/ecosystem/:path*", permanent: false, + source: "/dashboard/connect/ecosystem/:path*", }, { - source: "/dashboard/engine/:path*", destination: "/team/~/~/engine/:path*", permanent: false, + source: "/dashboard/engine/:path*", }, { - source: "/dashboard/settings/api-keys", destination: "/team", permanent: false, + source: "/dashboard/settings/api-keys", }, { - source: "/dashboard/settings/devices", destination: "/account/devices", permanent: false, + source: "/dashboard/settings/devices", }, { - source: "/dashboard/settings/billing", destination: "/team/~/~/settings/billing", permanent: false, + source: "/dashboard/settings/billing", }, { - source: "/dashboard/settings/gas-credits", destination: "/team/~/~/settings/credits", permanent: false, + source: "/dashboard/settings/gas-credits", }, { - source: "/dashboard/settings/usage", destination: "/team/~/~/usage", permanent: false, + source: "/dashboard/settings/usage", }, { - source: "/dashboard/settings/storage", destination: "/team/~/~/usage/storage", permanent: false, + source: "/dashboard/settings/storage", }, { - source: "/dashboard/settings/notifications", destination: "/team/~/~/settings/notifications", permanent: false, + source: "/dashboard/settings/notifications", }, // rest of the /dashboard/* routes { - source: "/dashboard/:path*", destination: "/team", permanent: false, + source: "/dashboard/:path*", }, ]; @@ -66,321 +66,321 @@ const legacyDashboardToTeamRedirects = [ async function redirects() { return [ { - source: "/portal/:match*", destination: "https://portal.thirdweb.com/:match*", permanent: true, + source: "/portal/:match*", }, { - source: "/solutions/appchain-api", destination: "/solutions/chains", permanent: true, + source: "/solutions/appchain-api", }, { - source: "/contracts/release", destination: "/contracts/publish", permanent: false, + source: "/contracts/release", }, { - source: "/contracts/release/:path*", destination: "/contracts/publish/:path*", permanent: false, + source: "/contracts/release/:path*", }, { - source: "/release", destination: "/publish", permanent: false, + source: "/release", }, { - source: "/release/:path*", destination: "/publish/:path*", permanent: false, + source: "/release/:path*", }, { - source: "/authentication", destination: "/auth", permanent: false, + source: "/authentication", }, { - source: "/extensions", destination: "/build", permanent: false, + source: "/extensions", }, { - source: "/contractkit", destination: "/build", permanent: true, + source: "/contractkit", }, // old (deprecated) routes { - source: - "/:network/(edition|nft-collection|token|nft-drop|signature-drop|edition-drop|token-drop|vote)/:address", destination: "/:network/:address", permanent: false, + source: + "/:network/(edition|nft-collection|token|nft-drop|signature-drop|edition-drop|token-drop|vote)/:address", }, // prebuilt contract deploys { - source: "/contracts/new/:slug*", destination: "/explore", permanent: false, + source: "/contracts/new/:slug*", }, // deployer to non-deployer url // handled directly in SSR as well { - source: "/deployer.thirdweb.eth", destination: "/thirdweb.eth", permanent: true, + source: "/deployer.thirdweb.eth", }, { - source: "/deployer.thirdweb.eth/:path*", destination: "/thirdweb.eth/:path*", permanent: true, + source: "/deployer.thirdweb.eth/:path*", }, { - source: "/chains", destination: "/chainlist", permanent: true, + source: "/chains", }, // polygon zkevm beta to non-beta { - source: "/polygon-zkevm-beta", destination: "/polygon-zkevm", permanent: false, + source: "/polygon-zkevm-beta", }, // backwards compat: page moved to pages/settings/devices { - source: "/template/nft-drop", destination: "/template/erc721", permanent: false, + source: "/template/nft-drop", }, { - source: "/create-api-key", destination: "/team", permanent: false, + source: "/create-api-key", }, { - source: "/dashboard/settings", destination: "/team", permanent: false, + source: "/dashboard/settings", }, { - source: "/dashboard/connect/playground", destination: "https://playground.thirdweb.com/connect/sign-in/button", permanent: false, + source: "/dashboard/connect/playground", }, { - source: "/dashboard/infrastructure/storage", destination: "/dashboard/settings/storage", permanent: false, + source: "/dashboard/infrastructure/storage", }, { - source: "/dashboard/infrastructure/rpc-edge", destination: "/chainlist", permanent: false, + source: "/dashboard/infrastructure/rpc-edge", }, { - source: "/solutions/commerce", destination: "/solutions/loyalty", permanent: false, + source: "/solutions/commerce", }, { - source: "/hackathon/base-consumer-crypto", destination: "/hackathon/consumer-crypto", permanent: false, + source: "/hackathon/base-consumer-crypto", }, { - source: "/bear-market-airdrop", destination: "/", permanent: false, + source: "/bear-market-airdrop", }, { - source: "/drops/optimism", destination: "/optimism", permanent: false, + source: "/drops/optimism", }, // Redirecting as ambassadors lives in community now { - source: "/ambassadors", destination: "/community/ambassadors", permanent: false, + source: "/ambassadors", }, { - source: "/embedded-wallets", destination: "/in-app-wallets", permanent: false, + source: "/embedded-wallets", }, // temporarily redirect cli login to support page { - source: "/cli/login", destination: "https://portal.thirdweb.com/knowledge-base/onchain-common-errors/thirdweb-cli/device-link-error", permanent: false, + source: "/cli/login", }, // temporary redirect gas -> explore page { - source: "/gas", destination: "/explore", permanent: false, + source: "/gas", }, { - source: "/deploy", destination: "/contracts/deployment-tool", permanent: false, + source: "/deploy", }, { - source: "/publish", destination: "/contracts/deployment-tool", permanent: false, + source: "/publish", }, { - source: "/smart-contracts", destination: "/contracts/explore", permanent: false, + source: "/smart-contracts", }, { - source: "/ui-components", destination: "/sdk", permanent: false, + source: "/ui-components", }, { - source: "/interact", destination: "/sdk", permanent: false, + source: "/interact", }, { - source: "/sponsored-transactions", destination: "/account-abstraction", permanent: false, + source: "/sponsored-transactions", }, // redirect /solutions/chains to /solutions/ecosystem { - source: "/solutions/chains", destination: "/solutions/ecosystem", permanent: false, + source: "/solutions/chains", }, // redirect /rpc to portal { - source: "/rpc-edge", destination: "https://portal.thirdweb.com/infrastructure/rpc-edge/overview", permanent: false, + source: "/rpc-edge", }, // redirect /sdk to portal { - source: "/sdk", destination: "https://portal.thirdweb.com/connect/blockchain-api", permanent: false, + source: "/sdk", }, // redirect `/events` to homepage { - source: "/events", destination: "/", permanent: false, + source: "/events", }, // redirect /community to /community/ambassadors { - source: "/community", destination: "/community/ambassadors", permanent: false, + source: "/community", }, // redirect `/tos` to `/terms` { - source: "/tos", destination: "/terms", permanent: false, + source: "/tos", }, // redirect `/privacy` to `/privacy-policy` { - source: "/privacy", destination: "/privacy-policy", permanent: false, + source: "/privacy", }, // redirect `/mission` to `/home` { - source: "/mission", destination: "/home", permanent: false, + source: "/mission", }, // redirect "/open-source" to "/bounties" { - source: "/open-source", destination: "/bounties", permanent: false, + source: "/open-source", }, // redirect /template/ to /templates/ { - source: "/template/:slug", destination: "/templates/:slug", permanent: false, + source: "/template/:slug", }, // redirect /connect/pay to /universal-bridge { - source: "/connect/pay", destination: "/universal-bridge", permanent: false, + source: "/connect/pay", }, // PREVIOUS CAMPAIGNS { - source: "/unlimited-wallets", destination: "/", permanent: false, + source: "/unlimited-wallets", }, // pay > universal-bridge redirect { - source: "/team/:team_slug/:project_slug/connect/pay/:path*", destination: "/team/:team_slug/:project_slug/connect/universal-bridge/:path*", permanent: false, + source: "/team/:team_slug/:project_slug/connect/pay/:path*", }, // all /learn/tutorials (and sub-routes) -> /learn/guides { - source: "/learn/tutorials/:path*", destination: "/learn/guides/:path*", permanent: false, + source: "/learn/tutorials/:path*", }, { - source: "/learn/tutorials", destination: "/learn/guides", permanent: false, + source: "/learn/tutorials", }, // redirect to /grant/superchain to /superchain { - source: "/grant/superchain", destination: "/superchain", permanent: false, + source: "/grant/superchain", }, // connect -> build redirects { - source: "/connect", destination: "/wallets", permanent: false, + source: "/connect", }, { - source: "/connect/account-abstraction", destination: "/account-abstraction", permanent: false, + source: "/connect/account-abstraction", }, { - source: "/connect/universal-bridge", destination: "/universal-bridge", permanent: false, + source: "/connect/universal-bridge", }, { - source: "/connect/auth", destination: "/auth", permanent: false, + source: "/connect/auth", }, { - source: "/connect/in-app-wallets", destination: "/in-app-wallets", permanent: false, + source: "/connect/in-app-wallets", }, { - source: "/engine", destination: "/transactions", permanent: false, + source: "/engine", }, ...legacyDashboardToTeamRedirects, diff --git a/apps/dashboard/sentry.client.config.ts b/apps/dashboard/sentry.client.config.ts index aa8b26ff8fa..b7ad8de6860 100644 --- a/apps/dashboard/sentry.client.config.ts +++ b/apps/dashboard/sentry.client.config.ts @@ -5,28 +5,32 @@ import * as Sentry from "@sentry/nextjs"; Sentry.init({ - dsn: "https://8813f5d93c8c4aa89eda86816f0b1bbf@o1378374.ingest.sentry.io/6690186", - - // Adjust this value in production, or use tracesSampler for greater control - tracesSampleRate: 0.1, + allowUrls: [/thirdweb-dev\.com/i, /thirdweb\.com/, /thirdweb-preview\.com/], // Setting this option to true will print useful information to the console while you're setting up Sentry. debug: false, - - replaysOnErrorSampleRate: 1.0, - - // This sets the sample rate to be 10%. You may want this to be 100% while - // in development and sample at a lower rate in production - replaysSessionSampleRate: 0.1, - - // You can remove this option if you're not planning to use the Sentry Session Replay feature: - integrations: [ - Sentry.replayIntegration({ - // Additional Replay configuration goes in here, for example: - maskAllText: true, - blockAllMedia: true, - }), + denyUrls: [ + // Google Adsense + /pagead\/js/i, + // Facebook flakiness + /graph\.facebook\.com/i, + // Facebook blocked + /connect\.facebook\.net\/en_US\/all\.js/i, + // Woopra flakiness + /eatdifferent\.com\.woopra-ns\.com/i, + /static\.woopra\.com\/js\/woopra\.js/i, + // Chrome extensions + /extensions\//i, + /^chrome:\/\//i, + // Other plugins + // Cacaoweb + /127\.0\.0\.1:4001\/isrunning/i, + /webappstoolbarba\.texthelp\.com\//i, + /metrics\.itunes\.apple\.com\.edgesuite\.net\//i, + // injected (extensions) + /inject/i, ], + dsn: "https://8813f5d93c8c4aa89eda86816f0b1bbf@o1378374.ingest.sentry.io/6690186", ignoreErrors: [ // Random plugins/extensions "top.GLOBALS", @@ -72,26 +76,22 @@ Sentry.init({ // cannot do anything with these errors "Non-Error promise rejection captured", ], - denyUrls: [ - // Google Adsense - /pagead\/js/i, - // Facebook flakiness - /graph\.facebook\.com/i, - // Facebook blocked - /connect\.facebook\.net\/en_US\/all\.js/i, - // Woopra flakiness - /eatdifferent\.com\.woopra-ns\.com/i, - /static\.woopra\.com\/js\/woopra\.js/i, - // Chrome extensions - /extensions\//i, - /^chrome:\/\//i, - // Other plugins - // Cacaoweb - /127\.0\.0\.1:4001\/isrunning/i, - /webappstoolbarba\.texthelp\.com\//i, - /metrics\.itunes\.apple\.com\.edgesuite\.net\//i, - // injected (extensions) - /inject/i, + + // You can remove this option if you're not planning to use the Sentry Session Replay feature: + integrations: [ + Sentry.replayIntegration({ + blockAllMedia: true, + // Additional Replay configuration goes in here, for example: + maskAllText: true, + }), ], - allowUrls: [/thirdweb-dev\.com/i, /thirdweb\.com/, /thirdweb-preview\.com/], + + replaysOnErrorSampleRate: 1.0, + + // This sets the sample rate to be 10%. You may want this to be 100% while + // in development and sample at a lower rate in production + replaysSessionSampleRate: 0.1, + + // Adjust this value in production, or use tracesSampler for greater control + tracesSampleRate: 0.1, }); diff --git a/apps/dashboard/src/@/actions/acceptInvite.ts b/apps/dashboard/src/@/actions/acceptInvite.ts index 8a579732083..ee71e244632 100644 --- a/apps/dashboard/src/@/actions/acceptInvite.ts +++ b/apps/dashboard/src/@/actions/acceptInvite.ts @@ -11,20 +11,20 @@ export async function acceptInvite(options: { if (!token) { return { - ok: false, errorMessage: "You are not authorized to perform this action", + ok: false, }; } const res = await fetch( `${NEXT_PUBLIC_THIRDWEB_API_HOST}/v1/teams/${options.teamId}/invites/${options.inviteId}/accept`, { - method: "POST", + body: JSON.stringify({}), headers: { - "Content-Type": "application/json", Authorization: `Bearer ${token}`, + "Content-Type": "application/json", }, - body: JSON.stringify({}), + method: "POST", }, ); @@ -42,8 +42,8 @@ export async function acceptInvite(options: { } catch {} return { - ok: false, errorMessage, + ok: false, }; } diff --git a/apps/dashboard/src/@/actions/billing.ts b/apps/dashboard/src/@/actions/billing.ts index 5af78101fc4..51b9ab3d897 100644 --- a/apps/dashboard/src/@/actions/billing.ts +++ b/apps/dashboard/src/@/actions/billing.ts @@ -16,12 +16,12 @@ export async function reSubscribePlan(options: { const res = await fetch( `${NEXT_PUBLIC_THIRDWEB_API_HOST}/v1/teams/${options.teamId}/checkout/resubscribe-plan`, { - method: "PUT", + body: JSON.stringify({}), headers: { - "Content-Type": "application/json", Authorization: `Bearer ${token}`, + "Content-Type": "application/json", }, - body: JSON.stringify({}), + method: "PUT", }, ); diff --git a/apps/dashboard/src/@/actions/confirmEmail.ts b/apps/dashboard/src/@/actions/confirmEmail.ts index e9a47325158..db55c639d3e 100644 --- a/apps/dashboard/src/@/actions/confirmEmail.ts +++ b/apps/dashboard/src/@/actions/confirmEmail.ts @@ -15,14 +15,14 @@ export async function confirmEmailWithOTP(otp: string) { const res = await fetch( `${NEXT_PUBLIC_THIRDWEB_API_HOST}/v1/account/confirmEmail`, { - method: "PUT", - headers: { - "Content-Type": "application/json", - Authorization: `Bearer ${token}`, - }, body: JSON.stringify({ confirmationToken: otp, }), + headers: { + Authorization: `Bearer ${token}`, + "Content-Type": "application/json", + }, + method: "PUT", }, ); diff --git a/apps/dashboard/src/@/actions/createTeam.ts b/apps/dashboard/src/@/actions/createTeam.ts index 53f726be8a6..417e702a141 100644 --- a/apps/dashboard/src/@/actions/createTeam.ts +++ b/apps/dashboard/src/@/actions/createTeam.ts @@ -3,62 +3,59 @@ import "server-only"; // biome-ignore lint/style/useNodejsImportProtocol: breaks storybook if it's `node:` prefixed import { randomBytes } from "crypto"; -import type { Team } from "@/api/team"; import { format } from "date-fns"; +import type { Team } from "@/api/team"; import { getAuthToken } from "../../app/(app)/api/lib/getAuthToken"; import { NEXT_PUBLIC_THIRDWEB_API_HOST } from "../constants/public-envs"; -export async function createTeam(options?: { - name?: string; - slug?: string; -}) { +export async function createTeam(options?: { name?: string; slug?: string }) { const token = await getAuthToken(); if (!token) { return { - status: "error", errorMessage: "You are not authorized to perform this action", + status: "error", } as const; } const res = await fetch(`${NEXT_PUBLIC_THIRDWEB_API_HOST}/v1/teams`, { - method: "POST", - headers: { - Authorization: `Bearer ${token}`, - "Content-Type": "application/json", - }, body: JSON.stringify({ + billingEmail: null, + image: null, name: options?.name ?? `Your Projects ${format(new Date(), "MMM d yyyy")}`, slug: options?.slug ?? randomBytes(20).toString("hex"), - billingEmail: null, - image: null, }), + headers: { + Authorization: `Bearer ${token}`, + "Content-Type": "application/json", + }, + method: "POST", }); if (!res.ok) { const reason = await res.text(); console.error("failed to create team", { - status: res.status, reason, + status: res.status, }); switch (res.status) { case 400: { return { - status: "error", errorMessage: "Invalid team name or slug.", + status: "error", } as const; } case 401: { return { - status: "error", errorMessage: "You are not authorized to perform this action.", + status: "error", } as const; } default: { return { - status: "error", errorMessage: "An unknown error occurred.", + status: "error", } as const; } } @@ -69,7 +66,7 @@ export async function createTeam(options?: { }; return { - status: "success", data: json.result, + status: "success", } as const; } diff --git a/apps/dashboard/src/@/actions/deleteTeam.ts b/apps/dashboard/src/@/actions/deleteTeam.ts index bdfa2fe3f43..faf286883fa 100644 --- a/apps/dashboard/src/@/actions/deleteTeam.ts +++ b/apps/dashboard/src/@/actions/deleteTeam.ts @@ -3,63 +3,61 @@ import "server-only"; import { getAuthToken } from "../../app/(app)/api/lib/getAuthToken"; import { NEXT_PUBLIC_THIRDWEB_API_HOST } from "../constants/public-envs"; -export async function deleteTeam(options: { - teamId: string; -}) { +export async function deleteTeam(options: { teamId: string }) { const token = await getAuthToken(); if (!token) { return { - status: "error", errorMessage: "You are not authorized to perform this action.", + status: "error", } as const; } const res = await fetch( `${NEXT_PUBLIC_THIRDWEB_API_HOST}/v1/teams/${options.teamId}`, { - method: "DELETE", headers: { Authorization: `Bearer ${token}`, }, + method: "DELETE", }, ); // handle errors if (!res.ok) { const reason = await res.text(); console.error("failed to delete team", { - status: res.status, reason, + status: res.status, }); switch (res.status) { case 400: { return { - status: "error", errorMessage: "Invalid team ID.", + status: "error", } as const; } case 401: { return { - status: "error", errorMessage: "You are not authorized to perform this action.", + status: "error", } as const; } case 403: { return { - status: "error", errorMessage: "You do not have permission to delete this team.", + status: "error", } as const; } case 404: { return { - status: "error", errorMessage: "Team not found.", + status: "error", } as const; } default: { return { - status: "error", errorMessage: "An unknown error occurred.", + status: "error", } as const; } } diff --git a/apps/dashboard/src/@/actions/getBalancesFromMoralis.ts b/apps/dashboard/src/@/actions/getBalancesFromMoralis.ts index 20559052c6b..ed34bbdd4d6 100644 --- a/apps/dashboard/src/@/actions/getBalancesFromMoralis.ts +++ b/apps/dashboard/src/@/actions/getBalancesFromMoralis.ts @@ -1,6 +1,6 @@ "use server"; import { defineDashboardChain } from "lib/defineDashboardChain"; -import { ZERO_ADDRESS, isAddress, toTokens } from "thirdweb"; +import { isAddress, toTokens, ZERO_ADDRESS } from "thirdweb"; import { getWalletBalance } from "thirdweb/wallets"; import { MORALIS_API_KEY } from "../constants/server-envs"; import { serverThirdwebClient } from "../constants/thirdweb-client.server"; @@ -43,12 +43,12 @@ export async function getTokenBalancesFromMoralis(params: { }); return [ { - token_address: ZERO_ADDRESS, - symbol: balance.symbol, - name: "Native Token", - decimals: balance.decimals, balance: balance.value.toString(), + decimals: balance.decimals, display_balance: toTokens(balance.value, balance.decimals), + name: "Native Token", + symbol: balance.symbol, + token_address: ZERO_ADDRESS, }, ]; }; @@ -59,10 +59,10 @@ export async function getTokenBalancesFromMoralis(params: { const tokenBalanceEndpoint = `https://deep-index.moralis.io/api/v2/${_address}/erc20?chain=${_chain}`; const resp = await fetch(tokenBalanceEndpoint, { - method: "GET", headers: { "x-api-key": MORALIS_API_KEY, }, + method: "GET", }); if (!resp.ok) { @@ -83,7 +83,7 @@ export async function getTokenBalancesFromMoralis(params: { ]); return { - error: undefined, data: [...nativeBalance, ...tokenBalances], + error: undefined, }; } diff --git a/apps/dashboard/src/@/actions/getWalletNFTs.ts b/apps/dashboard/src/@/actions/getWalletNFTs.ts index 291e4a820bf..c30ae6b7432 100644 --- a/apps/dashboard/src/@/actions/getWalletNFTs.ts +++ b/apps/dashboard/src/@/actions/getWalletNFTs.ts @@ -53,7 +53,7 @@ export async function getWalletNFTs(params: { const parsedResponse = await response.json(); const result = await transformAlchemyResponseToNFT(parsedResponse, owner); - return { result, error: undefined }; + return { error: undefined, result }; } catch (err) { console.error("Error fetching NFTs", err); return { error: "error parsing response" }; @@ -64,10 +64,10 @@ export async function getWalletNFTs(params: { const url = generateMoralisUrl({ chainId, owner }); const response = await fetch(url, { - method: "GET", headers: { "X-API-Key": MORALIS_API_KEY, }, + method: "GET", next: { revalidate: 10, // cache for 10 seconds }, @@ -156,8 +156,8 @@ async function getWalletNFTsFromInsight(params: { if (!response.ok) { const errorMessage = await response.text(); return { - ok: false, error: errorMessage, + ok: false, }; } @@ -172,32 +172,32 @@ async function getWalletNFTsFromInsight(params: { const walletNFTs = nftsResponse.data.map((nft) => { const walletNFT: WalletNFT = { - id: nft.token_id, + chainId: nft.contract.chain_id, contractAddress: nft.contract.address, + id: nft.token_id, metadata: { - uri: isDev - ? nft.metadata_url.replace("ipfscdn.io/", "thirdwebstorage-dev.com/") - : nft.metadata_url, - name: nft.name, - description: nft.description, - image: isDev - ? nft.image_url.replace("ipfscdn.io/", "thirdwebstorage-dev.com/") - : nft.image_url, animation_url: isDev ? nft.extra_metadata.animation_original_url?.replace( "ipfscdn.io/", "thirdwebstorage-dev.com/", ) : nft.extra_metadata.animation_original_url, - external_url: nft.external_url, background_color: nft.background_color, + description: nft.description, + external_url: nft.external_url, + image: isDev + ? nft.image_url.replace("ipfscdn.io/", "thirdwebstorage-dev.com/") + : nft.image_url, + name: nft.name, + uri: isDev + ? nft.metadata_url.replace("ipfscdn.io/", "thirdwebstorage-dev.com/") + : nft.metadata_url, }, owner: params.owner, - tokenURI: nft.metadata_url, - type: nft.token_type === "erc721" ? "ERC721" : "ERC1155", supply: nft.balance, tokenAddress: nft.contract.address, - chainId: nft.contract.chain_id, + tokenURI: nft.metadata_url, + type: nft.token_type === "erc721" ? "ERC721" : "ERC1155", }; return walletNFT; diff --git a/apps/dashboard/src/@/actions/proxies.ts b/apps/dashboard/src/@/actions/proxies.ts index 32df80874ca..83facc34d96 100644 --- a/apps/dashboard/src/@/actions/proxies.ts +++ b/apps/dashboard/src/@/actions/proxies.ts @@ -47,35 +47,35 @@ async function proxy( } const res = await fetch(url, { - method: params.method, + body: params.body, headers: { ...params.headers, ...(authToken ? { Authorization: `Bearer ${authToken}` } : {}), }, - body: params.body, + method: params.method, }); if (!res.ok) { try { const errorMessage = await res.text(); return { - status: res.status, - ok: false, error: errorMessage || res.statusText, + ok: false, + status: res.status, }; } catch { return { - status: res.status, - ok: false, error: res.statusText, + ok: false, + status: res.status, }; } } return { - status: res.status, - ok: true, data: params.parseAsText ? await res.text() : await res.json(), + ok: true, + status: res.status, }; } diff --git a/apps/dashboard/src/@/actions/sendTeamInvite.ts b/apps/dashboard/src/@/actions/sendTeamInvite.ts index 36553726f79..a4e22d69fac 100644 --- a/apps/dashboard/src/@/actions/sendTeamInvite.ts +++ b/apps/dashboard/src/@/actions/sendTeamInvite.ts @@ -20,8 +20,8 @@ export async function sendTeamInvites(options: { if (!token) { return { - ok: false, errorMessage: "You are not authorized to perform this action", + ok: false, }; } @@ -43,15 +43,15 @@ async function sendInvite( const res = await fetch( `${NEXT_PUBLIC_THIRDWEB_API_HOST}/v1/teams/${teamId}/invites`, { - method: "POST", - headers: { - Authorization: `Bearer ${token}`, - "Content-Type": "application/json", - }, body: JSON.stringify({ inviteEmail: invite.email, inviteRole: invite.role, }), + headers: { + Authorization: `Bearer ${token}`, + "Content-Type": "application/json", + }, + method: "POST", }, ); @@ -59,8 +59,8 @@ async function sendInvite( const errorMessage = await res.text(); return { email: invite.email, - ok: false, errorMessage, + ok: false, }; } diff --git a/apps/dashboard/src/@/actions/updateAccount.ts b/apps/dashboard/src/@/actions/updateAccount.ts index ab9f967520e..d37c7034f07 100644 --- a/apps/dashboard/src/@/actions/updateAccount.ts +++ b/apps/dashboard/src/@/actions/updateAccount.ts @@ -14,12 +14,12 @@ export async function updateAccount(values: { } const res = await fetch(`${NEXT_PUBLIC_THIRDWEB_API_HOST}/v1/account`, { - method: "PUT", + body: JSON.stringify(values), headers: { - "Content-Type": "application/json", Authorization: `Bearer ${token}`, + "Content-Type": "application/json", }, - body: JSON.stringify(values), + method: "PUT", }); if (!res.ok) { diff --git a/apps/dashboard/src/@/analytics/hooks/identify-team.ts b/apps/dashboard/src/@/analytics/hooks/identify-team.ts index 80ae6da0b28..489ca357bd6 100644 --- a/apps/dashboard/src/@/analytics/hooks/identify-team.ts +++ b/apps/dashboard/src/@/analytics/hooks/identify-team.ts @@ -3,9 +3,7 @@ import posthog from "posthog-js"; import { useEffect } from "react"; -export function useIdentifyTeam(opts?: { - teamId: string; -}) { +export function useIdentifyTeam(opts?: { teamId: string }) { // eslint-disable-next-line no-restricted-syntax useEffect(() => { // if no teamId, don't identify diff --git a/apps/dashboard/src/@/analytics/report.ts b/apps/dashboard/src/@/analytics/report.ts index c579ccb2469..faf869a1e7f 100644 --- a/apps/dashboard/src/@/analytics/report.ts +++ b/apps/dashboard/src/@/analytics/report.ts @@ -115,9 +115,7 @@ export function reportOnboardingPlanSelectionSkipped() { * @jnsdls * */ -export function reportOnboardingMembersInvited(properties: { - count: number; -}) { +export function reportOnboardingMembersInvited(properties: { count: number }) { posthog.capture("onboarding members invited", { count: properties.count, }); @@ -185,9 +183,7 @@ export function reportOnboardingCompleted() { * @jnsdls * */ -export function reportFaucetUsed(properties: { - chainId: number; -}) { +export function reportFaucetUsed(properties: { chainId: number }) { posthog.capture("faucet used", { chainId: properties.chainId, }); @@ -217,8 +213,8 @@ export function reportChainConfigurationAdded(properties: { posthog.capture("chain configuration added", { chainId: properties.chainId, chainName: properties.chainName, - rpcURLs: properties.rpcURLs, nativeCurrency: properties.nativeCurrency, + rpcURLs: properties.rpcURLs, }); } @@ -242,9 +238,9 @@ export function reportAssetBuySuccessful(properties: { assetType: "nft" | "coin"; }) { posthog.capture("asset buy successful", { + assetType: properties.assetType, chainId: properties.chainId, contractType: properties.contractType, - assetType: properties.assetType, }); } @@ -263,9 +259,9 @@ export function reportAssetBuyFailed(properties: { error: string; }) { posthog.capture("asset buy failed", { + assetType: properties.assetType, chainId: properties.chainId, contractType: properties.contractType, - assetType: properties.assetType, error: properties.error, }); } diff --git a/apps/dashboard/src/@/api/analytics.ts b/apps/dashboard/src/@/api/analytics.ts index 751fc0ec9a5..230fe35a659 100644 --- a/apps/dashboard/src/@/api/analytics.ts +++ b/apps/dashboard/src/@/api/analytics.ts @@ -175,9 +175,9 @@ export async function getAggregateUserOpUsage( }, { date: (params.from || new Date()).toISOString(), - successful: 0, failed: 0, sponsoredUsd: 0, + successful: 0, }, ); } @@ -279,14 +279,14 @@ export async function isProjectActive(params: { ); return { bundler: false, - storage: false, - rpc: false, - nebula: false, - sdk: false, + ecosystemWallet: false, + inAppWallet: false, insight: false, + nebula: false, pay: false, - inAppWallet: false, - ecosystemWallet: false, + rpc: false, + sdk: false, + storage: false, } as ActiveStatus; } diff --git a/apps/dashboard/src/@/api/audit-log.ts b/apps/dashboard/src/@/api/audit-log.ts index 4ba20c14fc8..5e48374303c 100644 --- a/apps/dashboard/src/@/api/audit-log.ts +++ b/apps/dashboard/src/@/api/audit-log.ts @@ -58,34 +58,34 @@ export async function getAuditLogs(teamSlug: string, cursor?: string) { url.searchParams.set("take", "15"); const response = await fetch(url, { + headers: { + Authorization: `Bearer ${authToken}`, + }, next: { // revalidate this query once per 10 seconds (does not need to be more granular than that) revalidate: 10, }, - headers: { - Authorization: `Bearer ${authToken}`, - }, }); if (!response.ok) { // if the status is 402, the most likely reason is that the team is on a free plan if (response.status === 402) { return { - status: "error", reason: "higher_plan_required", + status: "error", } as const; } const body = await response.text(); return { - status: "error", - reason: "unknown", body, + reason: "unknown", + status: "error", } as const; } const data = (await response.json()) as AuditLogApiResponse; return { - status: "success", data, + status: "success", } as const; } diff --git a/apps/dashboard/src/@/api/insight/webhooks.ts b/apps/dashboard/src/@/api/insight/webhooks.ts index 1b14d0a790e..d992dc1a9b8 100644 --- a/apps/dashboard/src/@/api/insight/webhooks.ts +++ b/apps/dashboard/src/@/api/insight/webhooks.ts @@ -80,13 +80,13 @@ export async function createWebhook( const response = await fetch( `https://${THIRDWEB_INSIGHT_API_DOMAIN}/v1/webhooks`, { - method: "POST", + body: JSON.stringify(payload), headers: { + Authorization: `Bearer ${authToken}`, "Content-Type": "application/json", "x-client-id": clientId, - Authorization: `Bearer ${authToken}`, }, - body: JSON.stringify(payload), + method: "POST", }, ); @@ -115,11 +115,11 @@ export async function getWebhooks( const response = await fetch( `https://${THIRDWEB_INSIGHT_API_DOMAIN}/v1/webhooks`, { - method: "GET", headers: { - "x-client-id": clientId, Authorization: `Bearer ${authToken}`, + "x-client-id": clientId, }, + method: "GET", }, ); @@ -149,11 +149,11 @@ export async function deleteWebhook( const response = await fetch( `https://${THIRDWEB_INSIGHT_API_DOMAIN}/v1/webhooks/${encodeURIComponent(webhookId)}`, { - method: "DELETE", headers: { - "x-client-id": clientId, Authorization: `Bearer ${authToken}`, + "x-client-id": clientId, }, + method: "DELETE", }, ); @@ -183,29 +183,29 @@ export async function testWebhook( const response = await fetch( `https://${THIRDWEB_INSIGHT_API_DOMAIN}/v1/webhooks/test`, { - method: "POST", + body: JSON.stringify(payload), headers: { + Authorization: `Bearer ${authToken}`, "Content-Type": "application/json", "x-client-id": clientId, - Authorization: `Bearer ${authToken}`, }, - body: JSON.stringify(payload), + method: "POST", }, ); if (!response.ok) { const errorText = await response.text(); return { - success: false, error: `Failed to test webhook: ${errorText}`, + success: false, }; } return (await response.json()) as TestWebhookResponse; } catch (error) { return { - success: false, error: `Network or parsing error: ${error instanceof Error ? error.message : "Unknown error"}`, + success: false, }; } } @@ -215,10 +215,10 @@ export async function getSupportedWebhookChains(): Promise | undefined; }; -export async function getPaymentLink(props: { - paymentId: string; -}) { +export async function getPaymentLink(props: { paymentId: string }) { const res = await fetch(`${UB_BASE_URL}/v1/links/${props.paymentId}`, { - method: "GET", headers: { "Content-Type": "application/json", "x-secret-key": DASHBOARD_THIRDWEB_SECRET_KEY, }, + method: "GET", }); if (!res.ok) { @@ -36,12 +34,12 @@ export async function getPaymentLink(props: { const { data } = await res.json(); return { + amount: data.amount ? BigInt(data.amount) : undefined, clientId: data.clientId, - title: data.title, - imageUrl: data.imageUrl, - receiver: data.receiver, destinationToken: data.destinationToken, - amount: data.amount ? BigInt(data.amount) : undefined, + imageUrl: data.imageUrl, purchaseData: data.purchaseData, + receiver: data.receiver, + title: data.title, } as PaymentLink; } diff --git a/apps/dashboard/src/@/api/universal-bridge/tokens.ts b/apps/dashboard/src/@/api/universal-bridge/tokens.ts index a7e60b5d884..2dc46823d64 100644 --- a/apps/dashboard/src/@/api/universal-bridge/tokens.ts +++ b/apps/dashboard/src/@/api/universal-bridge/tokens.ts @@ -1,7 +1,7 @@ "use server"; -import { DASHBOARD_THIRDWEB_SECRET_KEY } from "@/constants/server-envs"; import type { ProjectResponse } from "@thirdweb-dev/service-utils"; import { getAuthToken } from "app/(app)/api/lib/getAuthToken"; +import { DASHBOARD_THIRDWEB_SECRET_KEY } from "@/constants/server-envs"; import { UB_BASE_URL } from "./constants"; export type TokenMetadata = { @@ -13,9 +13,7 @@ export type TokenMetadata = { iconUri?: string; }; -export async function getUniversalBridgeTokens(props: { - chainId?: number; -}) { +export async function getUniversalBridgeTokens(props: { chainId?: number }) { const url = new URL(`${UB_BASE_URL}/v1/tokens`); if (props.chainId) { @@ -24,11 +22,11 @@ export async function getUniversalBridgeTokens(props: { url.searchParams.append("limit", "1000"); const res = await fetch(url.toString(), { - method: "GET", headers: { "Content-Type": "application/json", "x-secret-key": DASHBOARD_THIRDWEB_SECRET_KEY, } as Record, + method: "GET", }); if (!res.ok) { @@ -49,16 +47,16 @@ export async function addUniversalBridgeTokenRoute(props: { const url = new URL(`${UB_BASE_URL}/v1/tokens`); const res = await fetch(url.toString(), { - method: "POST", - headers: { - "Content-Type": "application/json", - Authorization: `Bearer ${authToken}`, - "x-client-id": props.project.publishableKey, - } as Record, body: JSON.stringify({ chainId: props.chainId, tokenAddress: props.tokenAddress, }), + headers: { + Authorization: `Bearer ${authToken}`, + "Content-Type": "application/json", + "x-client-id": props.project.publishableKey, + } as Record, + method: "POST", }); if (!res.ok) { diff --git a/apps/dashboard/src/@/api/usage/billing-preview.ts b/apps/dashboard/src/@/api/usage/billing-preview.ts index 70e5e1a0eea..bc4cf815c61 100644 --- a/apps/dashboard/src/@/api/usage/billing-preview.ts +++ b/apps/dashboard/src/@/api/usage/billing-preview.ts @@ -34,33 +34,33 @@ export async function getBilledUsage(teamSlug: string) { NEXT_PUBLIC_THIRDWEB_API_HOST, ), { + headers: { + Authorization: `Bearer ${authToken}`, + }, next: { // revalidate this query once per minute (does not need to be more granular than that) revalidate: 60, }, - headers: { - Authorization: `Bearer ${authToken}`, - }, }, ); if (!response.ok) { // if the status is 404, the most likely reason is that the team is on a free plan if (response.status === 404) { return { - status: "error", reason: "free_plan", + status: "error", } as const; } const body = await response.text(); return { - status: "error", - reason: "unknown", body, + reason: "unknown", + status: "error", } as const; } const data = (await response.json()) as UsageApiResponse; return { - status: "success", data, + status: "success", } as const; } diff --git a/apps/dashboard/src/@/api/usage/rpc.ts b/apps/dashboard/src/@/api/usage/rpc.ts index 4d9439170ff..37a39d24504 100644 --- a/apps/dashboard/src/@/api/usage/rpc.ts +++ b/apps/dashboard/src/@/api/usage/rpc.ts @@ -23,11 +23,7 @@ type Last24HoursRPCUsageApiResponse = { }; export const getLast24HoursRPCUsage = unstable_cache( - async (params: { - teamId: string; - projectId?: string; - authToken: string; - }) => { + async (params: { teamId: string; projectId?: string; authToken: string }) => { const analyticsEndpoint = ANALYTICS_SERVICE_URL; const url = new URL(`${analyticsEndpoint}/v2/rpc/24-hours`); url.searchParams.set("teamId", params.teamId); @@ -44,16 +40,16 @@ export const getLast24HoursRPCUsage = unstable_cache( if (!res.ok) { const error = await res.text(); return { - ok: false as const, error: error, + ok: false as const, }; } const resData = await res.json(); return { - ok: true as const, data: resData.data as Last24HoursRPCUsageApiResponse, + ok: true as const, }; }, ["rpc-usage-last-24-hours:v2"], diff --git a/apps/dashboard/src/@/api/verified-domain.ts b/apps/dashboard/src/@/api/verified-domain.ts index 26d2c61f3f4..5fc17fa39bd 100644 --- a/apps/dashboard/src/@/api/verified-domain.ts +++ b/apps/dashboard/src/@/api/verified-domain.ts @@ -56,12 +56,12 @@ export async function createDomainVerification( const res = await fetch( `${NEXT_PUBLIC_THIRDWEB_API_HOST}/v1/teams/${teamIdOrSlug}/verified-domain`, { - method: "POST", body: JSON.stringify({ domain }), headers: { - "Content-Type": "application/json", Authorization: `Bearer ${token}`, + "Content-Type": "application/json", }, + method: "POST", }, ); diff --git a/apps/dashboard/src/@/components/ChakraProviderSetup.tsx b/apps/dashboard/src/@/components/ChakraProviderSetup.tsx index 43556ee2686..d934c8c4f59 100644 --- a/apps/dashboard/src/@/components/ChakraProviderSetup.tsx +++ b/apps/dashboard/src/@/components/ChakraProviderSetup.tsx @@ -5,9 +5,7 @@ import { useTheme } from "next-themes"; import { useEffect } from "react"; import chakraTheme from "../../theme"; -export function ChakraProviderSetup(props: { - children: React.ReactNode; -}) { +export function ChakraProviderSetup(props: { children: React.ReactNode }) { return ( {props.children} diff --git a/apps/dashboard/src/@/components/Responsive.tsx b/apps/dashboard/src/@/components/Responsive.tsx index 6b78fc76779..382258f927d 100644 --- a/apps/dashboard/src/@/components/Responsive.tsx +++ b/apps/dashboard/src/@/components/Responsive.tsx @@ -1,6 +1,6 @@ "use client"; -import { ClientOnly } from "@/components/blocks/client-only"; import { Suspense } from "react"; +import { ClientOnly } from "@/components/blocks/client-only"; import { useIsMobile } from "../hooks/use-mobile"; export function ResponsiveLayout(props: { diff --git a/apps/dashboard/src/@/components/billing.tsx b/apps/dashboard/src/@/components/billing.tsx index 52384a3fcc4..fbb30634b53 100644 --- a/apps/dashboard/src/@/components/billing.tsx +++ b/apps/dashboard/src/@/components/billing.tsx @@ -38,12 +38,12 @@ export function CheckoutButton(props: { }} > {props.children} @@ -59,8 +59,8 @@ function BillingWarning({ teamSlug }: { teamSlug: string }) {

You have outstanding invoices. Please{" "} pay them {" "} @@ -78,17 +78,17 @@ export function BillingPortalButton(props: { return ( @@ -120,19 +120,19 @@ function ToggleTest() { diff --git a/apps/dashboard/src/@/components/blocks/Avatars/GradientAvatar.tsx b/apps/dashboard/src/@/components/blocks/Avatars/GradientAvatar.tsx index e0c411d6070..195a2e1243b 100644 --- a/apps/dashboard/src/@/components/blocks/Avatars/GradientAvatar.tsx +++ b/apps/dashboard/src/@/components/blocks/Avatars/GradientAvatar.tsx @@ -1,5 +1,5 @@ -import { Img } from "@/components/blocks/Img"; import type { ThirdwebClient } from "thirdweb"; +import { Img } from "@/components/blocks/Img"; import { resolveSchemeWithErrorHandler } from "../../../lib/resolveSchemeWithErrorHandler"; import { cn } from "../../../lib/utils"; import { GradientBlobbie } from "./GradientBlobbie"; @@ -19,9 +19,9 @@ export function GradientAvatar(props: { return ( : undefined} + src={resolvedSrc} /> ); } diff --git a/apps/dashboard/src/@/components/blocks/Avatars/ProjectAvatar.stories.tsx b/apps/dashboard/src/@/components/blocks/Avatars/ProjectAvatar.stories.tsx index 11ee5218c0c..5bb27b423dd 100644 --- a/apps/dashboard/src/@/components/blocks/Avatars/ProjectAvatar.stories.tsx +++ b/apps/dashboard/src/@/components/blocks/Avatars/ProjectAvatar.stories.tsx @@ -8,9 +8,9 @@ import { Button } from "../../ui/button"; import { ProjectAvatar } from "./ProjectAvatar"; const meta = { - title: "blocks/Avatars/ProjectAvatar", component: Story, parameters: {}, + title: "blocks/Avatars/ProjectAvatar", } satisfies Meta; export default meta; @@ -27,17 +27,17 @@ function Story() { @@ -54,7 +54,7 @@ function ToggleTest() { return (

@@ -74,17 +74,17 @@ function ToggleTest() {
diff --git a/apps/dashboard/src/@/components/blocks/Avatars/ProjectAvatar.tsx b/apps/dashboard/src/@/components/blocks/Avatars/ProjectAvatar.tsx index 73d917c4107..cfd250feb54 100644 --- a/apps/dashboard/src/@/components/blocks/Avatars/ProjectAvatar.tsx +++ b/apps/dashboard/src/@/components/blocks/Avatars/ProjectAvatar.tsx @@ -1,6 +1,6 @@ -import { Img } from "@/components/blocks/Img"; import { BoxIcon } from "lucide-react"; import type { ThirdwebClient } from "thirdweb"; +import { Img } from "@/components/blocks/Img"; import { resolveSchemeWithErrorHandler } from "../../../lib/resolveSchemeWithErrorHandler"; import { cn } from "../../../lib/utils"; @@ -11,19 +11,19 @@ export function ProjectAvatar(props: { }) { return ( {""} } + src={ + resolveSchemeWithErrorHandler({ + client: props.client, + uri: props.src, + }) || "" + } /> ); } diff --git a/apps/dashboard/src/@/components/blocks/DangerSettingCard.stories.tsx b/apps/dashboard/src/@/components/blocks/DangerSettingCard.stories.tsx index dfe4652eb72..8ab5bcb0dc1 100644 --- a/apps/dashboard/src/@/components/blocks/DangerSettingCard.stories.tsx +++ b/apps/dashboard/src/@/components/blocks/DangerSettingCard.stories.tsx @@ -3,13 +3,13 @@ import { BadgeContainer } from "../../../stories/utils"; import { DangerSettingCard } from "./DangerSettingCard"; const meta = { - title: "blocks/Cards/DangerSettingCard", component: Story, parameters: { nextjs: { appDirectory: true, }, }, + title: "blocks/Cards/DangerSettingCard", } satisfies Meta; export default meta; @@ -24,29 +24,29 @@ function Story() {
{}} - isPending={false} confirmationDialog={{ - title: "This is confirmation title", description: "This is confirmation description", + title: "This is confirmation title", }} + description="This is a description" + isPending={false} + title="This is a title" /> {}} - isPending={true} confirmationDialog={{ - title: "This is confirmation title", description: "This is confirmation description", + title: "This is confirmation title", }} + description="This is a description" + isPending={true} + title="This is a title" />
diff --git a/apps/dashboard/src/@/components/blocks/DangerSettingCard.tsx b/apps/dashboard/src/@/components/blocks/DangerSettingCard.tsx index 74e5b43bd7c..fbd8018d939 100644 --- a/apps/dashboard/src/@/components/blocks/DangerSettingCard.tsx +++ b/apps/dashboard/src/@/components/blocks/DangerSettingCard.tsx @@ -1,4 +1,4 @@ -import { Spinner } from "@/components/ui/Spinner/Spinner"; +import { useState } from "react"; import { Button } from "@/components/ui/button"; import { @@ -10,7 +10,7 @@ import { DialogTitle, DialogTrigger, } from "@/components/ui/dialog"; -import { useState } from "react"; +import { Spinner } from "@/components/ui/Spinner/Spinner"; import { cn } from "../../lib/utils"; import { DynamicHeight } from "../ui/DynamicHeight"; @@ -58,19 +58,19 @@ export function DangerSettingCard(props: { )} > { setIsConfirmationDialogOpen(v); if (!v) { props.confirmationDialog.onClose?.(); } }} + open={isConfirmationDialogOpen} > diff --git a/apps/dashboard/src/@/components/blocks/Img.tsx b/apps/dashboard/src/@/components/blocks/Img.tsx index e1fcc37142a..2884cf09e58 100644 --- a/apps/dashboard/src/@/components/blocks/Img.tsx +++ b/apps/dashboard/src/@/components/blocks/Img.tsx @@ -53,30 +53,30 @@ export function Img(props: imgElementProps) { {restProps.alt { setStatus("fallback"); }} + ref={imgRef} + src={restProps.src || undefined} style={{ opacity: status === "loaded" ? 1 : 0, ...restProps.style, }} - alt={restProps.alt || ""} - className={cn( - "fade-in-0 object-cover transition-opacity duration-300", - className, - )} - decoding="async" /> {status !== "loaded" && (
*]:h-full [&>*]:w-full", className, )} + style={restProps.style} > {status === "pending" && (skeleton || defaultSkeleton)} {status === "fallback" && (fallback || defaultFallback)} diff --git a/apps/dashboard/src/@/components/blocks/MobileSidebar.tsx b/apps/dashboard/src/@/components/blocks/MobileSidebar.tsx index 0e469c295ce..6d38e34524a 100644 --- a/apps/dashboard/src/@/components/blocks/MobileSidebar.tsx +++ b/apps/dashboard/src/@/components/blocks/MobileSidebar.tsx @@ -1,10 +1,10 @@ "use client"; -import { Button } from "@/components/ui/button"; -import { Dialog, DialogContent, DialogTrigger } from "@/components/ui/dialog"; import { ChevronDownIcon } from "lucide-react"; import { usePathname } from "next/navigation"; import { useMemo, useState } from "react"; +import { Button } from "@/components/ui/button"; +import { Dialog, DialogContent, DialogTrigger } from "@/components/ui/dialog"; import { cn } from "../../lib/utils"; import { RenderSidebarLinks, @@ -35,7 +35,7 @@ export function MobileSidebar(props: { ); return ( - + {props.trigger || defaultTrigger} ; export default meta; @@ -35,17 +35,14 @@ function Story() { ); } -function Variant(props: { - label: string; - selectedChainIds: number[]; -}) { +function Variant(props: { label: string; selectedChainIds: number[] }) { const [chainIds, setChainIds] = useState(props.selectedChainIds); return ( ); diff --git a/apps/dashboard/src/@/components/blocks/NetworkSelectors.tsx b/apps/dashboard/src/@/components/blocks/NetworkSelectors.tsx index 5c46846fc54..0c0fdce92d6 100644 --- a/apps/dashboard/src/@/components/blocks/NetworkSelectors.tsx +++ b/apps/dashboard/src/@/components/blocks/NetworkSelectors.tsx @@ -1,12 +1,12 @@ "use client"; -import { MultiSelect } from "@/components/blocks/multi-select"; -import { SelectWithSearch } from "@/components/blocks/select-with-search"; -import { Badge } from "@/components/ui/badge"; import { ChainIconClient } from "components/icons/ChainIcon"; import { useAllChainsData } from "hooks/chains/allChains"; import { useCallback, useMemo } from "react"; import type { ThirdwebClient } from "thirdweb"; +import { MultiSelect } from "@/components/blocks/multi-select"; +import { SelectWithSearch } from "@/components/blocks/select-with-search"; +import { Badge } from "@/components/ui/badge"; function cleanChainName(chainName: string) { return chainName.replace("Mainnet", ""); @@ -98,15 +98,15 @@ export function MultiNetworkSelector(props: { {cleanChainName(chain.name)} {!props.disableChainId && ( - + Chain ID {chain.chainId} @@ -119,24 +119,24 @@ export function MultiNetworkSelector(props: { return ( { props.onChange(chainIds.map(Number)); }} + options={options} + overrideSearchFn={searchFn} placeholder={ allChains.length === 0 ? "Loading Chains..." : "Select Chains" } - disabled={allChains.length === 0} - overrideSearchFn={searchFn} + popoverContentClassName={props.popoverContentClassName} renderOption={renderOption} - className={props.className} + searchPlaceholder="Search by Name or Chain Id" + selectedValues={props.selectedChainIds.map(String)} + showSelectedValuesInModal={props.showSelectedValuesInModal} + side={props.side} /> ); } @@ -208,15 +208,15 @@ export function SingleNetworkSelector(props: { {cleanChainName(chain.name)} {!props.disableChainId && ( - + Chain ID {chain.chainId} @@ -231,26 +231,26 @@ export function SingleNetworkSelector(props: { return ( { props.onChange(Number(chainId)); }} - closeOnSelect={true} + options={options} + overrideSearchFn={searchFn} placeholder={ isLoadingChains ? "Loading Chains..." : props.placeholder || "Select Chain" } - overrideSearchFn={searchFn} - renderOption={renderOption} - className={props.className} popoverContentClassName={props.popoverContentClassName} - disabled={isLoadingChains} + renderOption={renderOption} + searchPlaceholder="Search by Name or Chain ID" + showCheck={false} side={props.side} - align={props.align} + value={String(props.chainId)} /> ); } diff --git a/apps/dashboard/src/@/components/blocks/RouteDiscoveryCard.tsx b/apps/dashboard/src/@/components/blocks/RouteDiscoveryCard.tsx index 2afdd28fa3c..e2d12445fca 100644 --- a/apps/dashboard/src/@/components/blocks/RouteDiscoveryCard.tsx +++ b/apps/dashboard/src/@/components/blocks/RouteDiscoveryCard.tsx @@ -1,7 +1,7 @@ -import { Spinner } from "@/components/ui/Spinner/Spinner"; +import type React from "react"; import { Button } from "@/components/ui/button"; +import { Spinner } from "@/components/ui/Spinner/Spinner"; import { cn } from "@/lib/utils"; -import type React from "react"; export function RouteDiscoveryCard( props: React.PropsWithChildren<{ @@ -66,12 +66,12 @@ export function RouteDiscoveryCard( {props.saveButton && !props.noPermissionText && (
- - - - - - -
); diff --git a/apps/dashboard/src/@/components/blocks/code-segment.stories.tsx b/apps/dashboard/src/@/components/blocks/code-segment.stories.tsx index 09fb395e000..2bf0c3d94c1 100644 --- a/apps/dashboard/src/@/components/blocks/code-segment.stories.tsx +++ b/apps/dashboard/src/@/components/blocks/code-segment.stories.tsx @@ -1,3 +1,6 @@ +import type { Meta, StoryObj } from "@storybook/nextjs"; +import { useState } from "react"; +import { BadgeContainer } from "stories/utils"; import { Select, SelectContent, @@ -6,19 +9,16 @@ import { SelectTrigger, SelectValue, } from "@/components/ui/select"; -import type { Meta, StoryObj } from "@storybook/nextjs"; -import { useState } from "react"; -import { BadgeContainer } from "stories/utils"; import { type CodeEnvironment, CodeSegment } from "./code-segment.client"; const meta = { - title: "blocks/CodeSegment", component: Story, parameters: { nextjs: { appDirectory: true, }, }, + title: "blocks/CodeSegment", } satisfies Meta; export default meta; @@ -37,10 +37,10 @@ function Story() { return (
- +
); @@ -92,23 +92,23 @@ function Variant(props: { return ( ); diff --git a/apps/dashboard/src/@/components/blocks/dismissible-alert.tsx b/apps/dashboard/src/@/components/blocks/dismissible-alert.tsx index daa89d1025a..3bc132f3b93 100644 --- a/apps/dashboard/src/@/components/blocks/dismissible-alert.tsx +++ b/apps/dashboard/src/@/components/blocks/dismissible-alert.tsx @@ -20,9 +20,9 @@ export function DismissibleAlert(props: { return (
diff --git a/apps/dashboard/src/@/components/blocks/error-fallbacks/unexpect-value-error-message.tsx b/apps/dashboard/src/@/components/blocks/error-fallbacks/unexpect-value-error-message.tsx index 2642f46882f..a14d18e0afb 100644 --- a/apps/dashboard/src/@/components/blocks/error-fallbacks/unexpect-value-error-message.tsx +++ b/apps/dashboard/src/@/components/blocks/error-fallbacks/unexpect-value-error-message.tsx @@ -1,6 +1,6 @@ +import { useMemo } from "react"; import { CopyTextButton } from "@/components/ui/CopyTextButton"; import { ScrollShadow } from "@/components/ui/ScrollShadow/ScrollShadow"; -import { useMemo } from "react"; export function UnexpectedValueErrorMessage(props: { value: unknown; @@ -30,11 +30,11 @@ export function UnexpectedValueErrorMessage(props: {
diff --git a/apps/dashboard/src/@/components/blocks/multi-select.stories.tsx b/apps/dashboard/src/@/components/blocks/multi-select.stories.tsx index 816ae7ca763..0c3af5cc055 100644 --- a/apps/dashboard/src/@/components/blocks/multi-select.stories.tsx +++ b/apps/dashboard/src/@/components/blocks/multi-select.stories.tsx @@ -4,13 +4,13 @@ import { BadgeContainer } from "../../../stories/utils"; import { MultiSelect } from "./multi-select"; const meta = { - title: "blocks/MultiSelect", component: Story, parameters: { nextjs: { appDirectory: true, }, }, + title: "blocks/MultiSelect", } satisfies Meta; export default meta; @@ -22,26 +22,26 @@ export const Variants: Story = { function createList(len: number) { return Array.from({ length: len }, (_, i) => ({ - value: `${i}`, label: `Item ${i}`, + value: `${i}`, })); } function Story() { return (
- - + +
); @@ -59,13 +59,13 @@ function VariantTest(props: { return ( { setValues(values); }} + options={list} placeholder="Select items" - maxCount={props.maxCount} + selectedValues={values} /> ); diff --git a/apps/dashboard/src/@/components/blocks/multi-select.tsx b/apps/dashboard/src/@/components/blocks/multi-select.tsx index b50ec0befc9..9a2c118c877 100644 --- a/apps/dashboard/src/@/components/blocks/multi-select.tsx +++ b/apps/dashboard/src/@/components/blocks/multi-select.tsx @@ -1,6 +1,8 @@ -/* eslint-disable no-restricted-syntax */ +/** biome-ignore-all lint/a11y/useSemanticElements: FIXME */ "use client"; +import { CheckIcon, ChevronDownIcon, SearchIcon, XIcon } from "lucide-react"; +import { forwardRef, useCallback, useMemo, useRef, useState } from "react"; import { Button } from "@/components/ui/button"; import { Popover, @@ -9,18 +11,9 @@ import { } from "@/components/ui/popover"; import { Separator } from "@/components/ui/separator"; import { cn } from "@/lib/utils"; -import { CheckIcon, ChevronDownIcon, SearchIcon, XIcon } from "lucide-react"; -import { - forwardRef, - useCallback, - useEffect, - useMemo, - useRef, - useState, -} from "react"; import { useShowMore } from "../../lib/useShowMore"; -import { ScrollShadow } from "../ui/ScrollShadow/ScrollShadow"; import { Input } from "../ui/input"; +import { ScrollShadow } from "../ui/ScrollShadow/ScrollShadow"; interface MultiSelectProps extends React.ButtonHTMLAttributes { @@ -150,58 +143,48 @@ export const MultiSelect = forwardRef( // scroll to top when options change const popoverElRef = useRef(null); - // biome-ignore lint/correctness/useExhaustiveDependencies: - useEffect(() => { - const scrollContainer = - popoverElRef.current?.querySelector("[data-scrollable]"); - if (scrollContainer) { - scrollContainer.scrollTo({ - top: 0, - }); - } - }, [searchValue]); return ( - + {props.customTrigger || ( diff --git a/apps/dashboard/src/@/components/blocks/notifications/notification-list.tsx b/apps/dashboard/src/@/components/blocks/notifications/notification-list.tsx index 476c985f172..b13d46130e3 100644 --- a/apps/dashboard/src/@/components/blocks/notifications/notification-list.tsx +++ b/apps/dashboard/src/@/components/blocks/notifications/notification-list.tsx @@ -1,7 +1,7 @@ "use client"; -import { TabButtons } from "@/components/ui/tabs"; import { ArchiveIcon, BellIcon, Loader2Icon } from "lucide-react"; import { useEffect, useRef, useState } from "react"; +import { TabButtons } from "@/components/ui/tabs"; import { Badge } from "../../ui/badge"; import { NotificationEntry } from "./notification-entry"; import type { useNotifications } from "./state/manager"; @@ -23,10 +23,11 @@ export function NotificationList(props: ReturnType) { return (
Inbox @@ -38,12 +39,11 @@ export function NotificationList(props: ReturnType) {
), onClick: () => setActiveTab("inbox"), - isActive: activeTab === "inbox", }, { + isActive: activeTab === "archive", name: "Archive", onClick: () => setActiveTab("archive"), - isActive: activeTab === "archive", }, ]} /> @@ -54,21 +54,21 @@ export function NotificationList(props: ReturnType) { > {activeTab === "inbox" ? ( ) : ( @@ -110,8 +110,8 @@ function InboxTab( ))} @@ -144,8 +144,8 @@ function ArchiveTab( ))} @@ -198,5 +198,5 @@ function AutoLoadMore(props: { ); } - return
; + return
; } diff --git a/apps/dashboard/src/@/components/blocks/notifications/state/manager.ts b/apps/dashboard/src/@/components/blocks/notifications/state/manager.ts index 0def2459717..390770b8636 100644 --- a/apps/dashboard/src/@/components/blocks/notifications/state/manager.ts +++ b/apps/dashboard/src/@/components/blocks/notifications/state/manager.ts @@ -1,13 +1,5 @@ "use client"; -import { - type Notification, - type NotificationsApiResponse, - getArchivedNotifications, - getUnreadNotifications, - getUnreadNotificationsCount, - markNotificationAsRead, -} from "@/api/notifications"; import { type InfiniteData, useInfiniteQuery, @@ -15,9 +7,16 @@ import { useQuery, useQueryClient, } from "@tanstack/react-query"; - import { useMemo } from "react"; import { toast } from "sonner"; +import { + getArchivedNotifications, + getUnreadNotifications, + getUnreadNotificationsCount, + markNotificationAsRead, + type Notification, + type NotificationsApiResponse, +} from "@/api/notifications"; /** * Internal helper to safely flatten pages coming from useInfiniteQuery. @@ -68,7 +67,9 @@ export function useNotifications(accountId: string) { ); const unreadQuery = useInfiniteQuery({ - queryKey: unreadQueryKey, + enabled: !!accountId, + getNextPageParam: (lastPage) => lastPage?.nextCursor ?? undefined, + initialPageParam: undefined as string | undefined, queryFn: async ({ pageParam }) => { const cursor = (pageParam ?? undefined) as string | undefined; const res = await getUnreadNotifications(cursor); @@ -77,14 +78,14 @@ export function useNotifications(accountId: string) { } return res.data; }, - initialPageParam: undefined as string | undefined, - getNextPageParam: (lastPage) => lastPage?.nextCursor ?? undefined, - enabled: !!accountId, + queryKey: unreadQueryKey, refetchInterval: 60_000, // 1min }); const archivedQuery = useInfiniteQuery({ - queryKey: archivedQueryKey, + enabled: !!accountId, + getNextPageParam: (lastPage) => lastPage?.nextCursor ?? undefined, + initialPageParam: undefined as string | undefined, queryFn: async ({ pageParam }) => { const cursor = (pageParam ?? undefined) as string | undefined; const res = await getArchivedNotifications(cursor); @@ -93,14 +94,12 @@ export function useNotifications(accountId: string) { } return res.data; }, - initialPageParam: undefined as string | undefined, - getNextPageParam: (lastPage) => lastPage?.nextCursor ?? undefined, - enabled: !!accountId, + queryKey: archivedQueryKey, refetchInterval: 60_000, // 1min }); const unreadCountQuery = useQuery({ - queryKey: unreadCountKey, + enabled: !!accountId, queryFn: async () => { const res = await getUnreadNotificationsCount(); if (res.status === "error") { @@ -108,8 +107,8 @@ export function useNotifications(accountId: string) { } return res.data.result.unreadCount; }, - refetchInterval: 60_000, // 1min - enabled: !!accountId, + queryKey: unreadCountKey, // 1min + refetchInterval: 60_000, }); // -------------------- @@ -172,16 +171,7 @@ export function useNotifications(accountId: string) { queryClient.setQueryData(unreadCountKey, optimisticCount); } - return { previousUnread, previousCount } as const; - }, - // Rollback on error - onError: (_err, _vars, context) => { - if (context?.previousUnread) { - queryClient.setQueryData(unreadQueryKey, context.previousUnread); - } - if (typeof context?.previousCount === "number") { - queryClient.setQueryData(unreadCountKey, context.previousCount); - } + return { previousCount, previousUnread } as const; }, // Always refetch to ensure consistency onSettled: () => { @@ -199,25 +189,25 @@ export function useNotifications(accountId: string) { const unreadNotificationsCount = unreadCountQuery.data ?? 0; // this is the total unread count return { - // data - unreadNotifications, archivedNotifications, - unreadNotificationsCount, + hasMoreArchived: archivedQuery.hasNextPage ?? false, + hasMoreUnread: unreadQuery.hasNextPage ?? false, + isFetchingMoreArchived: archivedQuery.isFetchingNextPage, + isFetchingMoreUnread: unreadQuery.isFetchingNextPage, + isLoadingArchived: archivedQuery.isLoading, // booleans isLoadingUnread: unreadQuery.isLoading, - isLoadingArchived: archivedQuery.isLoading, - hasMoreUnread: unreadQuery.hasNextPage ?? false, - hasMoreArchived: archivedQuery.hasNextPage ?? false, - isFetchingMoreUnread: unreadQuery.isFetchingNextPage, - isFetchingMoreArchived: archivedQuery.isFetchingNextPage, + loadMoreArchived: () => archivedQuery.fetchNextPage(), // pagination helpers loadMoreUnread: () => unreadQuery.fetchNextPage(), - loadMoreArchived: () => archivedQuery.fetchNextPage(), + markAllAsRead: () => archiveMutation.mutate(undefined), // mutations markAsRead: (id: string) => archiveMutation.mutate(id), - markAllAsRead: () => archiveMutation.mutate(undefined), + // data + unreadNotifications, + unreadNotificationsCount, } as const; } diff --git a/apps/dashboard/src/@/components/blocks/pricing-card.tsx b/apps/dashboard/src/@/components/blocks/pricing-card.tsx index d947fe59602..f8e51be3537 100644 --- a/apps/dashboard/src/@/components/blocks/pricing-card.tsx +++ b/apps/dashboard/src/@/components/blocks/pricing-card.tsx @@ -1,15 +1,15 @@ "use client"; -import type { Team } from "@/api/team"; -import { Badge } from "@/components/ui/badge"; -import { Button } from "@/components/ui/button"; -import { ToolTipLabel } from "@/components/ui/tooltip"; -import { cn } from "@/lib/utils"; import { RenewSubscriptionButton } from "components/settings/Account/Billing/renew-subscription/renew-subscription-button"; import { CheckIcon, DollarSignIcon } from "lucide-react"; import Link from "next/link"; import type React from "react"; import { remainingDays } from "utils/date-utils"; import { TEAM_PLANS } from "utils/pricing"; +import type { Team } from "@/api/team"; +import { Badge } from "@/components/ui/badge"; +import { Button } from "@/components/ui/button"; +import { ToolTipLabel } from "@/components/ui/tooltip"; +import { cn } from "@/lib/utils"; import type { ProductSKU } from "../../lib/billing"; import { CheckoutButton } from "../billing"; @@ -141,18 +141,18 @@ export const PricingCard: React.FC = ({ {cta && (
{cta.type === "renew" && ( - + )} {billingPlanToSkuMap[billingPlan] && cta.type === "checkout" && ( {has7DayTrial ? "Start 7 Day Free Trial" : cta.label} @@ -160,15 +160,15 @@ export const PricingCard: React.FC = ({ {cta.type === "link" && ( -
diff --git a/apps/dashboard/src/@/components/color-mode-toggle.tsx b/apps/dashboard/src/@/components/color-mode-toggle.tsx index 41dc2be94ba..69fa420315d 100644 --- a/apps/dashboard/src/@/components/color-mode-toggle.tsx +++ b/apps/dashboard/src/@/components/color-mode-toggle.tsx @@ -1,9 +1,9 @@ "use client"; -import { ClientOnly } from "@/components/blocks/client-only"; -import { Button } from "@/components/ui/button"; import { MoonIcon, SunIcon } from "lucide-react"; import { useTheme } from "next-themes"; +import { ClientOnly } from "@/components/blocks/client-only"; +import { Button } from "@/components/ui/button"; import { Skeleton } from "./ui/skeleton"; export function ToggleThemeButton() { @@ -14,12 +14,12 @@ export function ToggleThemeButton() { ssr={} > diff --git a/apps/dashboard/src/@/components/ui/ConfirmationDialog.tsx b/apps/dashboard/src/@/components/ui/ConfirmationDialog.tsx index 71fc93fa063..1df6a543225 100644 --- a/apps/dashboard/src/@/components/ui/ConfirmationDialog.tsx +++ b/apps/dashboard/src/@/components/ui/ConfirmationDialog.tsx @@ -1,3 +1,5 @@ +import type { VariantProps } from "class-variance-authority"; +import type React from "react"; import { AlertDialog, AlertDialogAction, @@ -11,8 +13,6 @@ import { } from "@/components/ui/alert-dialog"; import type { buttonVariants } from "@/components/ui/button"; import { cn } from "@/lib/utils"; -import type { VariantProps } from "class-variance-authority"; -import type React from "react"; export interface ConfirmationDialogProps extends VariantProps { @@ -36,7 +36,7 @@ export function ConfirmationDialog({ className, }: ConfirmationDialogProps) { return ( - + {children} @@ -48,12 +48,12 @@ export function ConfirmationDialog({ Cancel { onSubmit?.(); onOpenChange?.(false); }} + type="submit" + variant={variant} > Continue diff --git a/apps/dashboard/src/@/components/ui/CopyAddressButton.tsx b/apps/dashboard/src/@/components/ui/CopyAddressButton.tsx index 22115ff1f03..03941891434 100644 --- a/apps/dashboard/src/@/components/ui/CopyAddressButton.tsx +++ b/apps/dashboard/src/@/components/ui/CopyAddressButton.tsx @@ -20,12 +20,12 @@ export function CopyAddressButton(props: { return ( ); } diff --git a/apps/dashboard/src/@/components/ui/CopyButton.tsx b/apps/dashboard/src/@/components/ui/CopyButton.tsx index ffa411fa5c8..4e46643cbd7 100644 --- a/apps/dashboard/src/@/components/ui/CopyButton.tsx +++ b/apps/dashboard/src/@/components/ui/CopyButton.tsx @@ -1,8 +1,8 @@ "use client"; -import { cn } from "@/lib/utils"; import { useClipboard } from "hooks/useClipboard"; import { CheckIcon, CopyIcon } from "lucide-react"; +import { cn } from "@/lib/utils"; import { Button } from "./button"; import { ToolTipLabel } from "./tooltip"; @@ -16,10 +16,10 @@ export function CopyButton(props: { return ( - - - - -