From 7548b617dc7bdd7d775c29a29dfb07931d6e9ca7 Mon Sep 17 00:00:00 2001 From: Manan Tank Date: Thu, 19 Jun 2025 18:22:27 +0530 Subject: [PATCH 1/2] Dashboard: Move account-abstraction page to /account-abstraction route --- .../{connect => }/account-abstraction/AAFooterSection.tsx | 2 +- .../account-abstraction/AccountAbstractionPage.tsx | 2 +- .../{connect => }/account-abstraction/factories/page.tsx | 8 ++++---- .../{connect => }/account-abstraction/layout.tsx | 0 .../(sidebar)/{connect => }/account-abstraction/page.tsx | 2 +- .../{connect => }/account-abstraction/search-params.ts | 0 .../{connect => }/account-abstraction/settings/page.tsx | 4 ++-- .../(sidebar)/components/ProjectSidebarLayout.tsx | 2 +- .../(sidebar)/settings/ProjectGeneralSettingsPage.tsx | 2 +- .../smart-wallets/AccountAbstractionAnalytics/index.tsx | 4 ++-- 10 files changed, 13 insertions(+), 13 deletions(-) rename apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/{connect => }/account-abstraction/AAFooterSection.tsx (96%) rename apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/{connect => }/account-abstraction/AccountAbstractionPage.tsx (98%) rename apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/{connect => }/account-abstraction/factories/page.tsx (92%) rename apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/{connect => }/account-abstraction/layout.tsx (100%) rename apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/{connect => }/account-abstraction/page.tsx (97%) rename apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/{connect => }/account-abstraction/search-params.ts (100%) rename apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/{connect => }/account-abstraction/settings/page.tsx (92%) diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/connect/account-abstraction/AAFooterSection.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/account-abstraction/AAFooterSection.tsx similarity index 96% rename from apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/connect/account-abstraction/AAFooterSection.tsx rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/account-abstraction/AAFooterSection.tsx index f9271329092..520da51ccce 100644 --- a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/connect/account-abstraction/AAFooterSection.tsx +++ b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/account-abstraction/AAFooterSection.tsx @@ -1,4 +1,4 @@ -import { FooterLinksSection } from "../../components/footer/FooterLinksSection"; +import { FooterLinksSection } from "../components/footer/FooterLinksSection"; export function AAFooter() { return ( diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/connect/account-abstraction/AccountAbstractionPage.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/account-abstraction/AccountAbstractionPage.tsx similarity index 98% rename from apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/connect/account-abstraction/AccountAbstractionPage.tsx rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/account-abstraction/AccountAbstractionPage.tsx index 268379c9cf5..c301facc547 100644 --- a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/connect/account-abstraction/AccountAbstractionPage.tsx +++ b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/account-abstraction/AccountAbstractionPage.tsx @@ -17,7 +17,7 @@ export function AccountAbstractionLayout(props: { children: React.ReactNode; hasSmartWalletsWithoutBilling: boolean; }) { - const smartWalletsLayoutSlug = `/team/${props.teamSlug}/${props.projectSlug}/connect/account-abstraction`; + const smartWalletsLayoutSlug = `/team/${props.teamSlug}/${props.projectSlug}/account-abstraction`; return (
diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/connect/account-abstraction/factories/page.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/account-abstraction/factories/page.tsx similarity index 92% rename from apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/connect/account-abstraction/factories/page.tsx rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/account-abstraction/factories/page.tsx index 2cf196c0017..e8eccaabee6 100644 --- a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/connect/account-abstraction/factories/page.tsx +++ b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/account-abstraction/factories/page.tsx @@ -6,6 +6,9 @@ import { UnderlineLink } from "@/components/ui/UnderlineLink"; import { Button } from "@/components/ui/button"; import { getClientThirdwebClient } from "@/constants/thirdweb-client.client"; import { serverThirdwebClient } from "@/constants/thirdweb-client.server"; +import { getSortedDeployedContracts } from "@app/account/contracts/_components/getSortedDeployedContracts"; +import { getAuthToken } from "@app/api/lib/getAuthToken"; +import { loginRedirect } from "@app/login/loginRedirect"; import { DefaultFactoriesSection } from "components/smart-wallets/AccountFactories"; import { FactoryContracts } from "components/smart-wallets/AccountFactories/factory-contracts"; import { PlusIcon } from "lucide-react"; @@ -14,9 +17,6 @@ import { redirect } from "next/navigation"; import { Suspense } from "react"; import { type ThirdwebClient, defineChain, getContract } from "thirdweb"; import { getCompilerMetadata } from "thirdweb/contract"; -import { getSortedDeployedContracts } from "../../../../../../../account/contracts/_components/getSortedDeployedContracts"; -import { getAuthToken } from "../../../../../../../api/lib/getAuthToken"; -import { loginRedirect } from "../../../../../../../login/loginRedirect"; export default async function Page(props: { params: Promise<{ team_slug: string; project_slug: string }>; @@ -31,7 +31,7 @@ export default async function Page(props: { if (!authToken) { loginRedirect( - `/team/${params.team_slug}/${params.project_slug}/connect/account-abstraction/factories`, + `/team/${params.team_slug}/${params.project_slug}/account-abstraction/factories`, ); } diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/connect/account-abstraction/layout.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/account-abstraction/layout.tsx similarity index 100% rename from apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/connect/account-abstraction/layout.tsx rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/account-abstraction/layout.tsx diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/connect/account-abstraction/page.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/account-abstraction/page.tsx similarity index 97% rename from apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/connect/account-abstraction/page.tsx rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/account-abstraction/page.tsx index b254c611986..0a6bddf1250 100644 --- a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/connect/account-abstraction/page.tsx +++ b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/account-abstraction/page.tsx @@ -2,6 +2,7 @@ import { getUserOpUsage } from "@/api/analytics"; import { getProject } from "@/api/projects"; import { getTeamBySlug } from "@/api/team"; import { getClientThirdwebClient } from "@/constants/thirdweb-client.client"; +import { getAuthToken } from "@app/api/lib/getAuthToken"; import { type Range, getLastNDaysRange, @@ -10,7 +11,6 @@ import { AccountAbstractionAnalytics } from "components/smart-wallets/AccountAbs import { AccountAbstractionSummary } from "components/smart-wallets/AccountAbstractionAnalytics/AccountAbstractionSummary"; import { notFound, redirect } from "next/navigation"; import type { SearchParams } from "nuqs/server"; -import { getAuthToken } from "../../../../../../api/lib/getAuthToken"; import { searchParamLoader } from "./search-params"; interface PageParams { diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/connect/account-abstraction/search-params.ts b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/account-abstraction/search-params.ts similarity index 100% rename from apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/connect/account-abstraction/search-params.ts rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/account-abstraction/search-params.ts diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/connect/account-abstraction/settings/page.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/account-abstraction/settings/page.tsx similarity index 92% rename from apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/connect/account-abstraction/settings/page.tsx rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/account-abstraction/settings/page.tsx index 7e9fc393c70..f0252bde0e9 100644 --- a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/connect/account-abstraction/settings/page.tsx +++ b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/account-abstraction/settings/page.tsx @@ -4,11 +4,11 @@ import { ChakraProviderSetup } from "@/components/ChakraProviderSetup"; import { UnderlineLink } from "@/components/ui/UnderlineLink"; import { Alert, AlertDescription, AlertTitle } from "@/components/ui/alert"; import { getClientThirdwebClient } from "@/constants/thirdweb-client.client"; +import { getAuthToken } from "@app/api/lib/getAuthToken"; +import { getValidTeamPlan } from "@app/team/components/TeamHeader/getValidTeamPlan"; import { AccountAbstractionSettingsPage } from "components/smart-wallets/SponsorshipPolicies"; import { CircleAlertIcon } from "lucide-react"; import { redirect } from "next/navigation"; -import { getAuthToken } from "../../../../../../../api/lib/getAuthToken"; -import { getValidTeamPlan } from "../../../../../../components/TeamHeader/getValidTeamPlan"; export default async function Page(props: { params: Promise<{ team_slug: string; project_slug: string }>; diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/components/ProjectSidebarLayout.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/components/ProjectSidebarLayout.tsx index 90bb73113e0..0d47a37d92e 100644 --- a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/components/ProjectSidebarLayout.tsx +++ b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/components/ProjectSidebarLayout.tsx @@ -39,7 +39,7 @@ export function ProjectSidebarLayout(props: { }, { label: "Account Abstraction", - href: `${layoutPath}/connect/account-abstraction`, + href: `${layoutPath}/account-abstraction`, icon: SmartAccountIcon, }, { diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/settings/ProjectGeneralSettingsPage.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/settings/ProjectGeneralSettingsPage.tsx index 8c2451a08ba..6bf56bef7b7 100644 --- a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/settings/ProjectGeneralSettingsPage.tsx +++ b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/settings/ProjectGeneralSettingsPage.tsx @@ -217,7 +217,7 @@ export function ProjectGeneralSettingsPageUI(props: { const projectLayout = `/team/${props.teamSlug}/${props.project.slug}`; const paths = { - aaConfig: `${projectLayout}/connect/account-abstraction/settings`, + aaConfig: `${projectLayout}/account-abstraction/settings`, inAppConfig: `${projectLayout}/wallets/settings`, payConfig: `${projectLayout}/connect/universal-bridge/settings`, afterDeleteRedirectTo: `/team/${props.teamSlug}`, diff --git a/apps/dashboard/src/components/smart-wallets/AccountAbstractionAnalytics/index.tsx b/apps/dashboard/src/components/smart-wallets/AccountAbstractionAnalytics/index.tsx index 2131567bf89..6bb267fb0a7 100644 --- a/apps/dashboard/src/components/smart-wallets/AccountAbstractionAnalytics/index.tsx +++ b/apps/dashboard/src/components/smart-wallets/AccountAbstractionAnalytics/index.tsx @@ -1,4 +1,6 @@ "use client"; +import { SponsoredTransactionsTable } from "@app/team/[team_slug]/(team)/~/usage/overview/components/SponsoredTransactionsTable"; +import { searchParams } from "@app/team/[team_slug]/[project_slug]/(sidebar)/account-abstraction/search-params"; import { DateRangeSelector, type Range, @@ -10,8 +12,6 @@ import { useQueryState } from "nuqs"; import { useTransition } from "react"; import type { ThirdwebClient } from "thirdweb"; import type { UserOpStats } from "types/analytics"; -import { SponsoredTransactionsTable } from "../../../app/(app)/team/[team_slug]/(team)/~/usage/overview/components/SponsoredTransactionsTable"; -import { searchParams } from "../../../app/(app)/team/[team_slug]/[project_slug]/(sidebar)/connect/account-abstraction/search-params"; import { SponsoredTransactionsChartCard } from "./SponsoredTransactionsChartCard"; import { TotalSponsoredChartCard } from "./TotalSponsoredChartCard"; From 3d911c32234bd0233ebc70f463eaae238f9b041f Mon Sep 17 00:00:00 2001 From: Manan Tank Date: Fri, 20 Jun 2025 23:19:09 +0530 Subject: [PATCH 2/2] Dashboard: Move Universal Bridge page (#7380) --- apps/dashboard/redirects.js | 55 +++++++-- apps/dashboard/src/@/analytics/report.ts | 6 +- .../src/@/components/blocks/Sidebar.tsx | 1 + .../src/@/components/blocks/SidebarLayout.tsx | 1 + .../dashboard/src/@/components/ui/NavLink.tsx | 13 +- .../_layout/primary-dashboard-button.tsx | 2 +- .../overview/ContractOverviewPage.tsx | 6 +- .../contracts/DeployedContractsPageHeader.tsx | 14 ++- .../_components/DeployedContractsPage.tsx | 23 ++-- .../components/ProjectSidebarLayout.tsx | 16 ++- .../(sidebar)/contracts/layout.tsx | 66 ++++++++++ .../(sidebar)/contracts/page.tsx | 6 +- .../(sidebar)/contracts/webhooks/page.tsx | 38 ++++++ .../engine/dedicated/(general)/layout.tsx | 37 +++--- .../overview/components/engine-overview.tsx | 3 +- .../[project_slug]/(sidebar)/engine/page.tsx | 49 -------- .../[project_slug]/(sidebar)/layout.tsx | 42 ++++++- .../[project_slug]/(sidebar)/page.tsx | 2 +- .../settings/ProjectGeneralSettingsPage.tsx | 2 +- .../(sidebar)/{assets => tokens}/cards.tsx | 4 +- .../create/_common/PageHeader.tsx | 4 +- .../create/_common/SocialUrls.tsx | 0 .../create/_common/chain-overview.tsx | 0 .../create/_common/download-file-button.tsx | 0 .../create/_common/file-preview.tsx | 0 .../create/_common/schema.ts | 0 .../create/_common/step-card.tsx | 0 .../create/nft/_common/form.ts | 0 .../create/nft/_common/pages.ts | 0 .../nft-collection-info-fieldset.tsx | 0 .../create/nft/create-nft-page-ui.tsx | 0 .../create/nft/create-nft-page.tsx | 2 +- .../create/nft/launch/launch-nft.tsx | 0 .../{assets => tokens}/create/nft/page.tsx | 2 +- .../create/nft/sales/sales-settings.tsx | 6 +- .../batch-upload-instructions.tsx | 0 .../batch-upload/batch-upload-nfts.tsx | 0 .../upload-nfts/batch-upload/process-files.ts | 0 .../create/nft/upload-nfts/schema.ts | 0 .../upload-nfts/single-upload/attributes.tsx | 0 .../single-upload/single-upload-nft.tsx | 0 .../nft/upload-nfts/upload-nfts.stories.tsx | 0 .../create/nft/upload-nfts/upload-nfts.tsx | 0 .../create/token/_common/form.ts | 0 .../create/token/create-token-page-impl.tsx | 2 +- .../create/token/create-token-page.client.tsx | 0 .../token/create-token-page.stories.tsx | 0 .../token/distribution/token-airdrop.tsx | 0 .../token/distribution/token-distribution.tsx | 0 .../create/token/distribution/token-sale.tsx | 0 .../create/token/launch/launch-token.tsx | 0 .../{assets => tokens}/create/token/page.tsx | 8 +- .../token/token-info/token-info-fieldset.tsx | 0 .../(sidebar)/{assets => tokens}/page.tsx | 2 +- .../analytics/analytics-page.tsx | 0 .../analytics/filter.tsx | 0 .../analytics/ftux.client.tsx | 8 +- .../analytics/send-test-tx.client.tsx | 2 +- .../analytics/summary.tsx | 0 .../analytics/tx-chart/tx-chart-ui.tsx | 0 .../analytics/tx-chart/tx-chart.tsx | 0 .../analytics/tx-table/tx-table-ui.tsx | 2 +- .../analytics/tx-table/tx-table.tsx | 0 .../analytics/tx-table/types.ts | 0 .../cloud => transactions}/analytics/utils.ts | 3 + .../explorer/components/scalar.tsx | 0 .../cloud => transactions}/explorer/page.tsx | 0 .../{engine/cloud => transactions}/layout.tsx | 19 +-- .../cloud => transactions}/lib/analytics.ts | 4 +- .../cloud => transactions}/lib/utils.ts | 0 .../lib/vault.client.ts | 0 .../{engine/cloud => transactions}/page.tsx | 2 +- .../create-server-wallet.client.tsx | 0 .../server-wallets/components/try-it-out.tsx | 46 +++---- .../server-wallets/page.tsx | 2 +- .../server-wallets/wallet-table/types.ts | 0 .../wallet-table/wallet-table-ui.client.tsx | 113 +++++++++--------- .../wallet-table/wallet-table.tsx | 0 .../cloud => transactions}/tx/[id]/layout.tsx | 2 +- .../cloud => transactions}/tx/[id]/page.tsx | 6 +- .../tx/[id]/transaction-details-ui.tsx | 0 .../{connect => }/universal-bridge/layout.tsx | 4 +- .../universal-bridge/loading.tsx | 0 .../{connect => }/universal-bridge/page.tsx | 6 +- .../universal-bridge/settings/page.tsx | 8 +- .../webhooks/components/webhooks.client.tsx | 0 .../universal-bridge/webhooks/loading.tsx | 0 .../universal-bridge/webhooks/page.tsx | 0 .../create-vault-account.client.tsx | 4 +- .../components/list-access-tokens.client.tsx | 2 +- .../components/rotate-admin-key.client.tsx | 2 +- .../components/CreateWebhookModal.tsx | 9 +- .../webhooks/components/WebhooksTable.tsx | 22 ++-- .../contract-webhooks-page.tsx | 93 ++++++++++++++ .../(sidebar)/webhooks/page.tsx | 73 +---------- .../import-contract/modal.tsx | 2 +- .../tables/contract-table.tsx | 4 +- .../src/components/dashboard/StepsCard.tsx | 2 +- .../src/components/shared/FileInput.tsx | 2 +- .../src/core-ui/batch-upload/batch-table.tsx | 2 +- 100 files changed, 515 insertions(+), 341 deletions(-) create mode 100644 apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/contracts/layout.tsx create mode 100644 apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/contracts/webhooks/page.tsx delete mode 100644 apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/engine/page.tsx rename apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/{assets => tokens}/cards.tsx (95%) rename apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/{assets => tokens}/create/_common/PageHeader.tsx (97%) rename apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/{assets => tokens}/create/_common/SocialUrls.tsx (100%) rename apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/{assets => tokens}/create/_common/chain-overview.tsx (100%) rename apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/{assets => tokens}/create/_common/download-file-button.tsx (100%) rename apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/{assets => tokens}/create/_common/file-preview.tsx (100%) rename apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/{assets => tokens}/create/_common/schema.ts (100%) rename apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/{assets => tokens}/create/_common/step-card.tsx (100%) rename apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/{assets => tokens}/create/nft/_common/form.ts (100%) rename apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/{assets => tokens}/create/nft/_common/pages.ts (100%) rename apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/{assets => tokens}/create/nft/collection-info/nft-collection-info-fieldset.tsx (100%) rename apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/{assets => tokens}/create/nft/create-nft-page-ui.tsx (100%) rename apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/{assets => tokens}/create/nft/create-nft-page.tsx (99%) rename apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/{assets => tokens}/create/nft/launch/launch-nft.tsx (100%) rename apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/{assets => tokens}/create/nft/page.tsx (96%) rename apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/{assets => tokens}/create/nft/sales/sales-settings.tsx (97%) rename apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/{assets => tokens}/create/nft/upload-nfts/batch-upload/batch-upload-instructions.tsx (100%) rename apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/{assets => tokens}/create/nft/upload-nfts/batch-upload/batch-upload-nfts.tsx (100%) rename apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/{assets => tokens}/create/nft/upload-nfts/batch-upload/process-files.ts (100%) rename apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/{assets => tokens}/create/nft/upload-nfts/schema.ts (100%) rename apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/{assets => tokens}/create/nft/upload-nfts/single-upload/attributes.tsx (100%) rename apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/{assets => tokens}/create/nft/upload-nfts/single-upload/single-upload-nft.tsx (100%) rename apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/{assets => tokens}/create/nft/upload-nfts/upload-nfts.stories.tsx (100%) rename apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/{assets => tokens}/create/nft/upload-nfts/upload-nfts.tsx (100%) rename apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/{assets => tokens}/create/token/_common/form.ts (100%) rename apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/{assets => tokens}/create/token/create-token-page-impl.tsx (99%) rename apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/{assets => tokens}/create/token/create-token-page.client.tsx (100%) rename apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/{assets => tokens}/create/token/create-token-page.stories.tsx (100%) rename apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/{assets => tokens}/create/token/distribution/token-airdrop.tsx (100%) rename apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/{assets => tokens}/create/token/distribution/token-distribution.tsx (100%) rename apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/{assets => tokens}/create/token/distribution/token-sale.tsx (100%) rename apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/{assets => tokens}/create/token/launch/launch-token.tsx (100%) rename apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/{assets => tokens}/create/token/page.tsx (89%) rename apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/{assets => tokens}/create/token/token-info/token-info-fieldset.tsx (100%) rename apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/{assets => tokens}/page.tsx (99%) rename apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/{engine/cloud => transactions}/analytics/analytics-page.tsx (100%) rename apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/{engine/cloud => transactions}/analytics/filter.tsx (100%) rename apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/{engine/cloud => transactions}/analytics/ftux.client.tsx (95%) rename apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/{engine/cloud => transactions}/analytics/send-test-tx.client.tsx (99%) rename apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/{engine/cloud => transactions}/analytics/summary.tsx (100%) rename apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/{engine/cloud => transactions}/analytics/tx-chart/tx-chart-ui.tsx (100%) rename apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/{engine/cloud => transactions}/analytics/tx-chart/tx-chart.tsx (100%) rename apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/{engine/cloud => transactions}/analytics/tx-table/tx-table-ui.tsx (99%) rename apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/{engine/cloud => transactions}/analytics/tx-table/tx-table.tsx (100%) rename apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/{engine/cloud => transactions}/analytics/tx-table/types.ts (100%) rename apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/{engine/cloud => transactions}/analytics/utils.ts (88%) rename apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/{engine/cloud => transactions}/explorer/components/scalar.tsx (100%) rename apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/{engine/cloud => transactions}/explorer/page.tsx (100%) rename apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/{engine/cloud => transactions}/layout.tsx (78%) rename apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/{engine/cloud => transactions}/lib/analytics.ts (96%) rename apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/{engine/cloud => transactions}/lib/utils.ts (100%) rename apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/{engine/cloud => transactions}/lib/vault.client.ts (100%) rename apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/{engine/cloud => transactions}/page.tsx (98%) rename apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/{engine/cloud => transactions}/server-wallets/components/create-server-wallet.client.tsx (100%) rename apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/{engine/cloud => transactions}/server-wallets/components/try-it-out.tsx (92%) rename apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/{engine/cloud => transactions}/server-wallets/page.tsx (97%) rename apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/{engine/cloud => transactions}/server-wallets/wallet-table/types.ts (100%) rename apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/{engine/cloud => transactions}/server-wallets/wallet-table/wallet-table-ui.client.tsx (73%) rename apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/{engine/cloud => transactions}/server-wallets/wallet-table/wallet-table.tsx (100%) rename apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/{engine/cloud => transactions}/tx/[id]/layout.tsx (97%) rename apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/{engine/cloud => transactions}/tx/[id]/page.tsx (83%) rename apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/{engine/cloud => transactions}/tx/[id]/transaction-details-ui.tsx (100%) rename apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/{connect => }/universal-bridge/layout.tsx (96%) rename apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/{connect => }/universal-bridge/loading.tsx (100%) rename apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/{connect => }/universal-bridge/page.tsx (93%) rename apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/{connect => }/universal-bridge/settings/page.tsx (85%) rename apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/{connect => }/universal-bridge/webhooks/components/webhooks.client.tsx (100%) rename apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/{connect => }/universal-bridge/webhooks/loading.tsx (100%) rename apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/{connect => }/universal-bridge/webhooks/page.tsx (100%) create mode 100644 apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/webhooks/contract-webhooks/contract-webhooks-page.tsx diff --git a/apps/dashboard/redirects.js b/apps/dashboard/redirects.js index 837fa6a5c5c..bfe7f58ddce 100644 --- a/apps/dashboard/redirects.js +++ b/apps/dashboard/redirects.js @@ -62,6 +62,51 @@ const legacyDashboardToTeamRedirects = [ }, ]; +const projectRoute = "/team/:team_slug/:project_slug"; + +const projectPageRedirects = [ + { + source: `${projectRoute}/connect/pay/:path*`, + destination: `${projectRoute}/universal-bridge/:path*`, + permanent: false, + }, + { + source: `${projectRoute}/connect/universal-bridge/:path*`, + destination: `${projectRoute}/universal-bridge/:path*`, + permanent: false, + }, + { + source: `${projectRoute}/connect/account-abstraction/:path*`, + destination: `${projectRoute}/account-abstraction/:path*`, + permanent: false, + }, + { + source: `${projectRoute}/connect/in-app-wallets/:path*`, + destination: `${projectRoute}/wallets/:path*`, + permanent: false, + }, + { + source: `${projectRoute}/engine/cloud/vault/:path*`, + destination: `${projectRoute}/vault/:path*`, + permanent: false, + }, + { + source: `${projectRoute}/engine/cloud/:path*`, + destination: `${projectRoute}/transactions/:path*`, + permanent: false, + }, + { + source: `${projectRoute}/assets/:path*`, + destination: `${projectRoute}/tokens/:path*`, + permanent: false, + }, + { + source: `${projectRoute}/nebula/:path*`, + destination: projectRoute, + permanent: false, + }, +]; + /** @type {import('next').NextConfig['redirects']} */ async function redirects() { return [ @@ -326,14 +371,6 @@ async function redirects() { destination: "/", permanent: false, }, - // 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, - }, - // all /learn/tutorials (and sub-routes) -> /learn/guides { source: "/learn/tutorials/:path*", @@ -382,8 +419,8 @@ async function redirects() { destination: "/transactions", permanent: false, }, - ...legacyDashboardToTeamRedirects, + ...projectPageRedirects, ]; } diff --git a/apps/dashboard/src/@/analytics/report.ts b/apps/dashboard/src/@/analytics/report.ts index c579ccb2469..1718eb169eb 100644 --- a/apps/dashboard/src/@/analytics/report.ts +++ b/apps/dashboard/src/@/analytics/report.ts @@ -10,7 +10,7 @@ import type { Team } from "../api/team"; * ### Why do we need to report this event? * - To track the number of contracts deployed * - To track the number of contracts deployed on each chain - * - To track if the contract was deployed on the asset page vs on the deploy page + * - To track if the contract was deployed on the token page vs on the deploy page * * ### Who is responsible for this event? * @jnsdls @@ -230,7 +230,7 @@ type AssetContractType = "DropERC20" | "DropERC1155" | "DropERC721"; /** * ### Why do we need to report this event? - * - To track number of successful asset purchases from the asset page + * - To track number of successful asset purchases from the token page * - To track which asset and contract types are being purchased the most * * ### Who is responsible for this event? @@ -250,7 +250,7 @@ export function reportAssetBuySuccessful(properties: { /** * ### Why do we need to report this event? - * - To track number of failed asset purchases from the asset page + * - To track number of failed asset purchases from the token page * - To track the errors that users encounter when trying to purchase an asset * * ### Who is responsible for this event? diff --git a/apps/dashboard/src/@/components/blocks/Sidebar.tsx b/apps/dashboard/src/@/components/blocks/Sidebar.tsx index 181abba4fc8..4b8ef9e5c83 100644 --- a/apps/dashboard/src/@/components/blocks/Sidebar.tsx +++ b/apps/dashboard/src/@/components/blocks/Sidebar.tsx @@ -9,6 +9,7 @@ export type SidebarBaseLink = { label: React.ReactNode; exactMatch?: boolean; icon?: React.FC<{ className?: string }>; + isActive?: (pathname: string) => boolean; }; export type SidebarLink = diff --git a/apps/dashboard/src/@/components/blocks/SidebarLayout.tsx b/apps/dashboard/src/@/components/blocks/SidebarLayout.tsx index 87403d09605..a2ab0beca42 100644 --- a/apps/dashboard/src/@/components/blocks/SidebarLayout.tsx +++ b/apps/dashboard/src/@/components/blocks/SidebarLayout.tsx @@ -123,6 +123,7 @@ function RenderSidebarGroup(props: { className="flex items-center gap-2 text-muted-foreground text-sm hover:bg-accent" activeClassName="text-foreground bg-accent" exactMatch={link.exactMatch} + isActive={link.isActive} onClick={() => { sidebar.setOpenMobile(false); }} diff --git a/apps/dashboard/src/@/components/ui/NavLink.tsx b/apps/dashboard/src/@/components/ui/NavLink.tsx index 11bfb2948f4..195d979f977 100644 --- a/apps/dashboard/src/@/components/ui/NavLink.tsx +++ b/apps/dashboard/src/@/components/ui/NavLink.tsx @@ -11,15 +11,18 @@ export type NavButtonProps = { href: string; exactMatch?: boolean; onClick?: () => void; + isActive?: (pathname: string) => boolean; }; export function NavLink(props: React.PropsWithChildren) { const pathname = usePathname(); - const isActive = pathname - ? props.exactMatch - ? pathname === props.href - : pathname.startsWith(props.href) - : false; + const isActive = props.isActive + ? props.isActive(pathname) + : pathname + ? props.exactMatch + ? pathname === props.href + : pathname.startsWith(props.href) + : false; return ( = ({ rel="noopener noreferrer" className="gap-2" > - View Asset Page + View Token Page ); diff --git a/apps/dashboard/src/app/(app)/(dashboard)/(chain)/[chain_id]/[contractAddress]/overview/ContractOverviewPage.tsx b/apps/dashboard/src/app/(app)/(dashboard)/(chain)/[chain_id]/[contractAddress]/overview/ContractOverviewPage.tsx index 3725d6941ae..1a4e682bca1 100644 --- a/apps/dashboard/src/app/(app)/(dashboard)/(chain)/[chain_id]/[contractAddress]/overview/ContractOverviewPage.tsx +++ b/apps/dashboard/src/app/(app)/(dashboard)/(chain)/[chain_id]/[contractAddress]/overview/ContractOverviewPage.tsx @@ -45,10 +45,10 @@ export const ContractOverviewPage: React.FC = ({
{isErc20 && ( , target: "_blank", link: `/${chainSlug}/${contract.address}`, diff --git a/apps/dashboard/src/app/(app)/account/contracts/DeployedContractsPageHeader.tsx b/apps/dashboard/src/app/(app)/account/contracts/DeployedContractsPageHeader.tsx index 426efa6e74b..be92f89d645 100644 --- a/apps/dashboard/src/app/(app)/account/contracts/DeployedContractsPageHeader.tsx +++ b/apps/dashboard/src/app/(app)/account/contracts/DeployedContractsPageHeader.tsx @@ -16,7 +16,7 @@ export function DeployedContractsPageHeader(props: { const [importModalOpen, setImportModalOpen] = useState(false); return ( -
+
-
+

Contracts

+

+ Deploy and manage contracts for your project +

-
@@ -109,3 +118,32 @@ export default async function ProjectLayout(props: { ); } + +async function getEngineLinkType(params: { + authToken: string; + project: Project; +}) { + const projectEngineCloudService = params.project.services.find( + (service) => service.name === "engineCloud", + ); + + const engineCloudToken = projectEngineCloudService?.managementAccessToken; + + // if we have a management access token, link to engine cloud page + let engineLinkType: "cloud" | "dedicated" = "cloud"; + + // if we don't have a engine cloud management access token, check if there are any legacy engine instances + if (!engineCloudToken) { + const engineInstances = await getEngineInstances({ + authToken: params.authToken, + teamIdOrSlug: params.project.teamId, + }); + + // if we have any legacy engine instances, link to the legacy engine page + if (engineInstances.data && engineInstances.data.length > 0) { + engineLinkType = "dedicated"; + } + } + + return engineLinkType; +} diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/page.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/page.tsx index 75854523105..90904066f20 100644 --- a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/page.tsx +++ b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/page.tsx @@ -439,7 +439,7 @@ function AppHighlightsCard({ ), }, diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/settings/ProjectGeneralSettingsPage.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/settings/ProjectGeneralSettingsPage.tsx index 6bf56bef7b7..ad379b73141 100644 --- a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/settings/ProjectGeneralSettingsPage.tsx +++ b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/settings/ProjectGeneralSettingsPage.tsx @@ -219,7 +219,7 @@ export function ProjectGeneralSettingsPageUI(props: { const paths = { aaConfig: `${projectLayout}/account-abstraction/settings`, inAppConfig: `${projectLayout}/wallets/settings`, - payConfig: `${projectLayout}/connect/universal-bridge/settings`, + payConfig: `${projectLayout}/universal-bridge/settings`, afterDeleteRedirectTo: `/team/${props.teamSlug}`, }; diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/assets/cards.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/tokens/cards.tsx similarity index 95% rename from apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/assets/cards.tsx rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/tokens/cards.tsx index 78910d3b90d..8604a097e01 100644 --- a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/assets/cards.tsx +++ b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/tokens/cards.tsx @@ -40,7 +40,7 @@ export function Cards(props: { { reportAssetCreationStarted({ @@ -52,7 +52,7 @@ export function Cards(props: { { reportAssetCreationStarted({ diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/assets/create/_common/PageHeader.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/tokens/create/_common/PageHeader.tsx similarity index 97% rename from apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/assets/create/_common/PageHeader.tsx rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/tokens/create/_common/PageHeader.tsx index 4bd5121591f..8069a1f61f9 100644 --- a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/assets/create/_common/PageHeader.tsx +++ b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/tokens/create/_common/PageHeader.tsx @@ -24,9 +24,9 @@ export function CreateAssetPageHeader(props: { - Assets + Tokens diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/assets/create/_common/SocialUrls.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/tokens/create/_common/SocialUrls.tsx similarity index 100% rename from apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/assets/create/_common/SocialUrls.tsx rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/tokens/create/_common/SocialUrls.tsx diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/assets/create/_common/chain-overview.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/tokens/create/_common/chain-overview.tsx similarity index 100% rename from apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/assets/create/_common/chain-overview.tsx rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/tokens/create/_common/chain-overview.tsx diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/assets/create/_common/download-file-button.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/tokens/create/_common/download-file-button.tsx similarity index 100% rename from apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/assets/create/_common/download-file-button.tsx rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/tokens/create/_common/download-file-button.tsx diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/assets/create/_common/file-preview.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/tokens/create/_common/file-preview.tsx similarity index 100% rename from apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/assets/create/_common/file-preview.tsx rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/tokens/create/_common/file-preview.tsx diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/assets/create/_common/schema.ts b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/tokens/create/_common/schema.ts similarity index 100% rename from apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/assets/create/_common/schema.ts rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/tokens/create/_common/schema.ts diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/assets/create/_common/step-card.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/tokens/create/_common/step-card.tsx similarity index 100% rename from apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/assets/create/_common/step-card.tsx rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/tokens/create/_common/step-card.tsx diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/assets/create/nft/_common/form.ts b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/tokens/create/nft/_common/form.ts similarity index 100% rename from apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/assets/create/nft/_common/form.ts rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/tokens/create/nft/_common/form.ts diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/assets/create/nft/_common/pages.ts b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/tokens/create/nft/_common/pages.ts similarity index 100% rename from apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/assets/create/nft/_common/pages.ts rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/tokens/create/nft/_common/pages.ts diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/assets/create/nft/collection-info/nft-collection-info-fieldset.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/tokens/create/nft/collection-info/nft-collection-info-fieldset.tsx similarity index 100% rename from apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/assets/create/nft/collection-info/nft-collection-info-fieldset.tsx rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/tokens/create/nft/collection-info/nft-collection-info-fieldset.tsx diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/assets/create/nft/create-nft-page-ui.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/tokens/create/nft/create-nft-page-ui.tsx similarity index 100% rename from apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/assets/create/nft/create-nft-page-ui.tsx rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/tokens/create/nft/create-nft-page-ui.tsx diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/assets/create/nft/create-nft-page.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/tokens/create/nft/create-nft-page.tsx similarity index 99% rename from apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/assets/create/nft/create-nft-page.tsx rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/tokens/create/nft/create-nft-page.tsx index c292e88416f..61513f21821 100644 --- a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/assets/create/nft/create-nft-page.tsx +++ b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/tokens/create/nft/create-nft-page.tsx @@ -337,7 +337,7 @@ export function CreateNFTPage(props: { {...props} onLaunchSuccess={() => { revalidatePathAction( - `/team/${props.teamSlug}/project/${props.projectSlug}/assets`, + `/team/${props.teamSlug}/project/${props.projectSlug}/tokens`, "page", ); }} diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/assets/create/nft/launch/launch-nft.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/tokens/create/nft/launch/launch-nft.tsx similarity index 100% rename from apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/assets/create/nft/launch/launch-nft.tsx rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/tokens/create/nft/launch/launch-nft.tsx diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/assets/create/nft/page.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/tokens/create/nft/page.tsx similarity index 96% rename from apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/assets/create/nft/page.tsx rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/tokens/create/nft/page.tsx index 62f830b7f6c..1cdaf719a0b 100644 --- a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/assets/create/nft/page.tsx +++ b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/tokens/create/nft/page.tsx @@ -25,7 +25,7 @@ export default async function Page(props: { if (!authToken || !accountAddress) { loginRedirect( - `/team/${params.team_slug}/${params.project_slug}/assets/create/nft`, + `/team/${params.team_slug}/${params.project_slug}/tokens/create/nft`, ); } diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/assets/create/nft/sales/sales-settings.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/tokens/create/nft/sales/sales-settings.tsx similarity index 97% rename from apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/assets/create/nft/sales/sales-settings.tsx rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/tokens/create/nft/sales/sales-settings.tsx index c5505bdf544..84e63158e7b 100644 --- a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/assets/create/nft/sales/sales-settings.tsx +++ b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/tokens/create/nft/sales/sales-settings.tsx @@ -37,7 +37,7 @@ export function SalesSettings(props: {

Primary Sales

Set the wallet address that should receive the revenue from - initial sales of the assets + initial sales of the tokens

Royalties

Set the wallet address should receive the revenue from royalties - earned from secondary sales of the assets + earned from secondary sales of the tokens

@@ -72,7 +72,7 @@ export function SalesSettings(props: { helperText={ <> The wallet address that should receive the revenue from - royalties earned from secondary sales of the assets. + royalties earned from secondary sales of the tokens. } > diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/assets/create/nft/upload-nfts/batch-upload/batch-upload-instructions.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/tokens/create/nft/upload-nfts/batch-upload/batch-upload-instructions.tsx similarity index 100% rename from apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/assets/create/nft/upload-nfts/batch-upload/batch-upload-instructions.tsx rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/tokens/create/nft/upload-nfts/batch-upload/batch-upload-instructions.tsx diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/assets/create/nft/upload-nfts/batch-upload/batch-upload-nfts.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/tokens/create/nft/upload-nfts/batch-upload/batch-upload-nfts.tsx similarity index 100% rename from apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/assets/create/nft/upload-nfts/batch-upload/batch-upload-nfts.tsx rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/tokens/create/nft/upload-nfts/batch-upload/batch-upload-nfts.tsx diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/assets/create/nft/upload-nfts/batch-upload/process-files.ts b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/tokens/create/nft/upload-nfts/batch-upload/process-files.ts similarity index 100% rename from apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/assets/create/nft/upload-nfts/batch-upload/process-files.ts rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/tokens/create/nft/upload-nfts/batch-upload/process-files.ts diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/assets/create/nft/upload-nfts/schema.ts b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/tokens/create/nft/upload-nfts/schema.ts similarity index 100% rename from apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/assets/create/nft/upload-nfts/schema.ts rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/tokens/create/nft/upload-nfts/schema.ts diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/assets/create/nft/upload-nfts/single-upload/attributes.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/tokens/create/nft/upload-nfts/single-upload/attributes.tsx similarity index 100% rename from apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/assets/create/nft/upload-nfts/single-upload/attributes.tsx rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/tokens/create/nft/upload-nfts/single-upload/attributes.tsx diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/assets/create/nft/upload-nfts/single-upload/single-upload-nft.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/tokens/create/nft/upload-nfts/single-upload/single-upload-nft.tsx similarity index 100% rename from apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/assets/create/nft/upload-nfts/single-upload/single-upload-nft.tsx rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/tokens/create/nft/upload-nfts/single-upload/single-upload-nft.tsx diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/assets/create/nft/upload-nfts/upload-nfts.stories.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/tokens/create/nft/upload-nfts/upload-nfts.stories.tsx similarity index 100% rename from apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/assets/create/nft/upload-nfts/upload-nfts.stories.tsx rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/tokens/create/nft/upload-nfts/upload-nfts.stories.tsx diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/assets/create/nft/upload-nfts/upload-nfts.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/tokens/create/nft/upload-nfts/upload-nfts.tsx similarity index 100% rename from apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/assets/create/nft/upload-nfts/upload-nfts.tsx rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/tokens/create/nft/upload-nfts/upload-nfts.tsx diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/assets/create/token/_common/form.ts b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/tokens/create/token/_common/form.ts similarity index 100% rename from apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/assets/create/token/_common/form.ts rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/tokens/create/token/_common/form.ts diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/assets/create/token/create-token-page-impl.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/tokens/create/token/create-token-page-impl.tsx similarity index 99% rename from apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/assets/create/token/create-token-page-impl.tsx rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/tokens/create/token/create-token-page-impl.tsx index 6bd10a355f4..2de2246248b 100644 --- a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/assets/create/token/create-token-page-impl.tsx +++ b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/tokens/create/token/create-token-page-impl.tsx @@ -338,7 +338,7 @@ export function CreateTokenAssetPage(props: { projectSlug={props.projectSlug} onLaunchSuccess={() => { revalidatePathAction( - `/team/${props.teamSlug}/project/${props.projectId}/assets`, + `/team/${props.teamSlug}/project/${props.projectId}/tokens`, "page", ); }} diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/assets/create/token/create-token-page.client.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/tokens/create/token/create-token-page.client.tsx similarity index 100% rename from apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/assets/create/token/create-token-page.client.tsx rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/tokens/create/token/create-token-page.client.tsx diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/assets/create/token/create-token-page.stories.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/tokens/create/token/create-token-page.stories.tsx similarity index 100% rename from apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/assets/create/token/create-token-page.stories.tsx rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/tokens/create/token/create-token-page.stories.tsx diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/assets/create/token/distribution/token-airdrop.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/tokens/create/token/distribution/token-airdrop.tsx similarity index 100% rename from apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/assets/create/token/distribution/token-airdrop.tsx rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/tokens/create/token/distribution/token-airdrop.tsx diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/assets/create/token/distribution/token-distribution.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/tokens/create/token/distribution/token-distribution.tsx similarity index 100% rename from apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/assets/create/token/distribution/token-distribution.tsx rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/tokens/create/token/distribution/token-distribution.tsx diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/assets/create/token/distribution/token-sale.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/tokens/create/token/distribution/token-sale.tsx similarity index 100% rename from apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/assets/create/token/distribution/token-sale.tsx rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/tokens/create/token/distribution/token-sale.tsx diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/assets/create/token/launch/launch-token.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/tokens/create/token/launch/launch-token.tsx similarity index 100% rename from apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/assets/create/token/launch/launch-token.tsx rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/tokens/create/token/launch/launch-token.tsx diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/assets/create/token/page.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/tokens/create/token/page.tsx similarity index 89% rename from apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/assets/create/token/page.tsx rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/tokens/create/token/page.tsx index 60244217977..4075ee22410 100644 --- a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/assets/create/token/page.tsx +++ b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/tokens/create/token/page.tsx @@ -1,12 +1,12 @@ import { getProject } from "@/api/projects"; import { getTeamBySlug } from "@/api/team"; import { getClientThirdwebClient } from "@/constants/thirdweb-client.client"; -import { redirect } from "next/navigation"; import { getAuthToken, getAuthTokenWalletAddress, -} from "../../../../../../../api/lib/getAuthToken"; -import { loginRedirect } from "../../../../../../../login/loginRedirect"; +} from "@app/api/lib/getAuthToken"; +import { loginRedirect } from "@app/login/loginRedirect"; +import { redirect } from "next/navigation"; import { CreateAssetPageHeader } from "../_common/PageHeader"; import { CreateTokenAssetPage } from "./create-token-page-impl"; @@ -24,7 +24,7 @@ export default async function Page(props: { if (!authToken || !accountAddress) { loginRedirect( - `/team/${params.team_slug}/${params.project_slug}/assets/create/token`, + `/team/${params.team_slug}/${params.project_slug}/tokens/create/token`, ); } diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/assets/create/token/token-info/token-info-fieldset.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/tokens/create/token/token-info/token-info-fieldset.tsx similarity index 100% rename from apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/assets/create/token/token-info/token-info-fieldset.tsx rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/tokens/create/token/token-info/token-info-fieldset.tsx diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/assets/page.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/tokens/page.tsx similarity index 99% rename from apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/assets/page.tsx rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/tokens/page.tsx index 92299731b88..062ba5547cc 100644 --- a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/assets/page.tsx +++ b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/tokens/page.tsx @@ -24,7 +24,7 @@ export default async function Page(props: { ]); if (!authToken) { - loginRedirect(`/team/${params.team_slug}/${params.project_slug}/assets`); + loginRedirect(`/team/${params.team_slug}/${params.project_slug}/tokens`); } if (!team) { diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/engine/cloud/analytics/analytics-page.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/analytics/analytics-page.tsx similarity index 100% rename from apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/engine/cloud/analytics/analytics-page.tsx rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/analytics/analytics-page.tsx diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/engine/cloud/analytics/filter.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/analytics/filter.tsx similarity index 100% rename from apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/engine/cloud/analytics/filter.tsx rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/analytics/filter.tsx diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/engine/cloud/analytics/ftux.client.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/analytics/ftux.client.tsx similarity index 95% rename from apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/engine/cloud/analytics/ftux.client.tsx rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/analytics/ftux.client.tsx index 79cd708767e..e9d83ed943d 100644 --- a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/engine/cloud/analytics/ftux.client.tsx +++ b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/analytics/ftux.client.tsx @@ -5,7 +5,7 @@ import { type Step, StepsCard } from "components/dashboard/StepsCard"; import Link from "next/link"; import { useMemo, useState } from "react"; import type { ThirdwebClient } from "thirdweb"; -import { CreateVaultAccountButton } from "../../../vault/components/create-vault-account.client"; +import { CreateVaultAccountButton } from "../../vault/components/create-vault-account.client"; import CreateServerWallet from "../server-wallets/components/create-server-wallet.client"; import type { Wallet } from "../server-wallets/wallet-table/types"; import { SendTestTransaction } from "./send-test-tx.client"; @@ -107,7 +107,11 @@ export const EngineChecklist: React.FC = (props) => { return null; } return ( - + ); }; diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/engine/cloud/analytics/send-test-tx.client.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/analytics/send-test-tx.client.tsx similarity index 99% rename from apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/engine/cloud/analytics/send-test-tx.client.tsx rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/analytics/send-test-tx.client.tsx index b45ae04d337..5b0f62b753b 100644 --- a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/engine/cloud/analytics/send-test-tx.client.tsx +++ b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/analytics/send-test-tx.client.tsx @@ -263,7 +263,7 @@ export function SendTestTransaction(props: { onClick={() => { if (props.walletId) { router.replace( - `/team/${props.teamSlug}/${props.project.slug}/engine/cloud`, + `/team/${props.teamSlug}/${props.project.slug}/transactions`, ); } else { router.refresh(); diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/engine/cloud/analytics/summary.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/analytics/summary.tsx similarity index 100% rename from apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/engine/cloud/analytics/summary.tsx rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/analytics/summary.tsx diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/engine/cloud/analytics/tx-chart/tx-chart-ui.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/analytics/tx-chart/tx-chart-ui.tsx similarity index 100% rename from apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/engine/cloud/analytics/tx-chart/tx-chart-ui.tsx rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/analytics/tx-chart/tx-chart-ui.tsx diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/engine/cloud/analytics/tx-chart/tx-chart.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/analytics/tx-chart/tx-chart.tsx similarity index 100% rename from apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/engine/cloud/analytics/tx-chart/tx-chart.tsx rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/analytics/tx-chart/tx-chart.tsx diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/engine/cloud/analytics/tx-table/tx-table-ui.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/analytics/tx-table/tx-table-ui.tsx similarity index 99% rename from apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/engine/cloud/analytics/tx-table/tx-table-ui.tsx rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/analytics/tx-table/tx-table-ui.tsx index ad5333d358c..877fbcf50a0 100644 --- a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/engine/cloud/analytics/tx-table/tx-table-ui.tsx +++ b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/analytics/tx-table/tx-table-ui.tsx @@ -138,7 +138,7 @@ export function TransactionsTableUI(props: { className="cursor-pointer hover:bg-accent/50" onClick={() => { router.push( - `/team/${props.teamSlug}/${props.project.slug}/engine/cloud/tx/${tx.id}`, + `/team/${props.teamSlug}/${props.project.slug}/transactions/tx/${tx.id}`, ); }} > diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/engine/cloud/analytics/tx-table/tx-table.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/analytics/tx-table/tx-table.tsx similarity index 100% rename from apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/engine/cloud/analytics/tx-table/tx-table.tsx rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/analytics/tx-table/tx-table.tsx diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/engine/cloud/analytics/tx-table/types.ts b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/analytics/tx-table/types.ts similarity index 100% rename from apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/engine/cloud/analytics/tx-table/types.ts rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/analytics/tx-table/types.ts diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/engine/cloud/analytics/utils.ts b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/analytics/utils.ts similarity index 88% rename from apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/engine/cloud/analytics/utils.ts rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/analytics/utils.ts index 69ca753fd9d..a66a7e79469 100644 --- a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/engine/cloud/analytics/utils.ts +++ b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/analytics/utils.ts @@ -6,6 +6,9 @@ export function storeUserAccessToken(projectId: string, accessToken: string) { } export function getUserAccessToken(projectId: string) { + if (typeof localStorage === "undefined") { + return null; + } return localStorage.getItem( `thirdweb:engine-cloud-user-access-token-${projectId}`, ); diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/engine/cloud/explorer/components/scalar.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/explorer/components/scalar.tsx similarity index 100% rename from apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/engine/cloud/explorer/components/scalar.tsx rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/explorer/components/scalar.tsx diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/engine/cloud/explorer/page.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/explorer/page.tsx similarity index 100% rename from apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/engine/cloud/explorer/page.tsx rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/explorer/page.tsx diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/engine/cloud/layout.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/layout.tsx similarity index 78% rename from apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/engine/cloud/layout.tsx rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/layout.tsx index 13be81a2cd5..d1158fbe6fb 100644 --- a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/engine/cloud/layout.tsx +++ b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/layout.tsx @@ -3,7 +3,6 @@ import { Button } from "@/components/ui/button"; import { TabPathLinks } from "@/components/ui/tabs"; import { NEXT_PUBLIC_ENGINE_CLOUD_URL } from "@/constants/public-envs"; import Link from "next/link"; -import { EngineIcon } from "../../../../../../(dashboard)/(chain)/components/server/icons/EngineIcon"; export default async function Page(props: { params: Promise<{ team_slug: string; project_slug: string }>; @@ -23,8 +22,8 @@ function TransactionsLayout(props: { teamSlug: string; children: React.ReactNode; }) { - const engineBaseSlug = `/team/${props.teamSlug}/${props.projectSlug}/engine`; - const engineLayoutSlug = `${engineBaseSlug}/cloud`; + const projectLayoutPath = `/team/${props.teamSlug}/${props.projectSlug}`; + const layoutPath = `${projectLayoutPath}/transactions`; return (
@@ -36,12 +35,6 @@ function TransactionsLayout(props: {

Transactions{" "} - - Engine Cloud -

- +
@@ -74,16 +67,16 @@ function TransactionsLayout(props: { links={[ { name: "Transactions", - path: `${engineLayoutSlug}`, + path: `${layoutPath}`, exactMatch: true, }, { name: "API Explorer", - path: `${engineLayoutSlug}/explorer`, + path: `${layoutPath}/explorer`, }, { name: "Server Wallets", - path: `${engineLayoutSlug}/server-wallets`, + path: `${layoutPath}/server-wallets`, }, ]} /> diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/engine/cloud/lib/analytics.ts b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/lib/analytics.ts similarity index 96% rename from apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/engine/cloud/lib/analytics.ts rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/lib/analytics.ts index 4bd8057bf2e..05cc58dfc37 100644 --- a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/engine/cloud/lib/analytics.ts +++ b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/lib/analytics.ts @@ -1,6 +1,6 @@ import { NEXT_PUBLIC_ENGINE_CLOUD_URL } from "@/constants/public-envs"; -import type { TransactionStats } from "../../../../../../../../../types/analytics"; -import { getAuthToken } from "../../../../../../../api/lib/getAuthToken"; +import { getAuthToken } from "@app/api/lib/getAuthToken"; +import type { TransactionStats } from "types/analytics"; import type { Transaction, TransactionsResponse, diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/engine/cloud/lib/utils.ts b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/lib/utils.ts similarity index 100% rename from apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/engine/cloud/lib/utils.ts rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/lib/utils.ts diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/engine/cloud/lib/vault.client.ts b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/lib/vault.client.ts similarity index 100% rename from apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/engine/cloud/lib/vault.client.ts rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/lib/vault.client.ts diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/engine/cloud/page.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/page.tsx similarity index 98% rename from apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/engine/cloud/page.tsx rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/page.tsx index 8e6575b3807..cf8625bbf69 100644 --- a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/engine/cloud/page.tsx +++ b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/page.tsx @@ -1,9 +1,9 @@ import { getProject } from "@/api/projects"; import { NEXT_PUBLIC_THIRDWEB_VAULT_URL } from "@/constants/public-envs"; import { getClientThirdwebClient } from "@/constants/thirdweb-client.client"; +import { getAuthToken } from "@app/api/lib/getAuthToken"; import { createVaultClient, listEoas } from "@thirdweb-dev/vault-sdk"; import { notFound, redirect } from "next/navigation"; -import { getAuthToken } from "../../../../../../api/lib/getAuthToken"; import { TransactionsAnalyticsPageContent } from "./analytics/analytics-page"; import { EngineChecklist } from "./analytics/ftux.client"; import { TransactionAnalyticsSummary } from "./analytics/summary"; diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/engine/cloud/server-wallets/components/create-server-wallet.client.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/server-wallets/components/create-server-wallet.client.tsx similarity index 100% rename from apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/engine/cloud/server-wallets/components/create-server-wallet.client.tsx rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/server-wallets/components/create-server-wallet.client.tsx diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/engine/cloud/server-wallets/components/try-it-out.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/server-wallets/components/try-it-out.tsx similarity index 92% rename from apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/engine/cloud/server-wallets/components/try-it-out.tsx rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/server-wallets/components/try-it-out.tsx index 7c45fca4cbd..50b7885938d 100644 --- a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/engine/cloud/server-wallets/components/try-it-out.tsx +++ b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/server-wallets/components/try-it-out.tsx @@ -11,7 +11,7 @@ export function TryItOut() { const [activeTab, setActiveTab] = useState("sdk"); return ( -
+
@@ -25,8 +25,10 @@ export function TryItOut() {
+
-
+
{activeTab === "sdk" && ( -
+
Using the thirdweb SDK on the backend @@ -114,22 +116,26 @@ export function TryItOut() {

-

- Installation -

- -

- Usage example: Minting a ERC1155 NFT to a user -

- +
+

+ Installation +

+ +
+
+

+ Usage example: Minting a ERC1155 NFT to a user +

+ +
)} {activeTab === "curl" && ( @@ -140,7 +146,7 @@ export function TryItOut() { /> )} {activeTab === "js" && ( -
+

A lightweight, type safe wrapper package of the Engine HTTP API is available on{" "} diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/engine/cloud/server-wallets/page.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/server-wallets/page.tsx similarity index 97% rename from apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/engine/cloud/server-wallets/page.tsx rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/server-wallets/page.tsx index 592794fc9f5..dd78d3b70ac 100644 --- a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/engine/cloud/server-wallets/page.tsx +++ b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/server-wallets/page.tsx @@ -1,9 +1,9 @@ import { getProject } from "@/api/projects"; import { NEXT_PUBLIC_THIRDWEB_VAULT_URL } from "@/constants/public-envs"; import { getClientThirdwebClient } from "@/constants/thirdweb-client.client"; +import { getAuthToken } from "@app/api/lib/getAuthToken"; import { createVaultClient, listEoas } from "@thirdweb-dev/vault-sdk"; import { notFound } from "next/navigation"; -import { getAuthToken } from "../../../../../../../api/lib/getAuthToken"; import type { Wallet } from "./wallet-table/types"; import { ServerWalletsTable } from "./wallet-table/wallet-table"; diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/engine/cloud/server-wallets/wallet-table/types.ts b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/server-wallets/wallet-table/types.ts similarity index 100% rename from apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/engine/cloud/server-wallets/wallet-table/types.ts rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/server-wallets/wallet-table/types.ts diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/engine/cloud/server-wallets/wallet-table/wallet-table-ui.client.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/server-wallets/wallet-table/wallet-table-ui.client.tsx similarity index 73% rename from apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/engine/cloud/server-wallets/wallet-table/wallet-table-ui.client.tsx rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/server-wallets/wallet-table/wallet-table-ui.client.tsx index ad2b0320436..8dc84d8b319 100644 --- a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/engine/cloud/server-wallets/wallet-table/wallet-table-ui.client.tsx +++ b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/server-wallets/wallet-table/wallet-table-ui.client.tsx @@ -89,7 +89,7 @@ export function ServerWalletsTableUI({ />

- + @@ -137,60 +137,63 @@ export function ServerWalletsTableUI({
-
-
- Found {totalRecords} server wallets + + {totalPages > 1 && ( +
+
+ Found {totalRecords} server wallets +
+ + + + 1 ? currentPage - 1 : 1 + }`} + passHref + legacyBehavior + > + + + + {Array.from({ length: totalPages }, (_, i) => i + 1).map( + (pageNumber) => ( + + + + {pageNumber} + + + + ), + )} + + + = totalPages + ? "pointer-events-none opacity-50" + : "" + } + /> + + + +
- - - - 1 ? currentPage - 1 : 1 - }`} - passHref - legacyBehavior - > - - - - {Array.from({ length: totalPages }, (_, i) => i + 1).map( - (pageNumber) => ( - - - - {pageNumber} - - - - ), - )} - - - = totalPages - ? "pointer-events-none opacity-50" - : "" - } - /> - - - - -
+ )}
); } @@ -260,7 +263,7 @@ function SendTestTransaction(props: { size="sm" onClick={() => { router.push( - `/team/${props.teamSlug}/${props.project.slug}/engine/cloud?testTxWithWallet=${props.wallet.id}`, + `/team/${props.teamSlug}/${props.project.slug}/transactions?testTxWithWallet=${props.wallet.id}`, ); }} > diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/engine/cloud/server-wallets/wallet-table/wallet-table.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/server-wallets/wallet-table/wallet-table.tsx similarity index 100% rename from apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/engine/cloud/server-wallets/wallet-table/wallet-table.tsx rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/server-wallets/wallet-table/wallet-table.tsx diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/engine/cloud/tx/[id]/layout.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/tx/[id]/layout.tsx similarity index 97% rename from apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/engine/cloud/tx/[id]/layout.tsx rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/tx/[id]/layout.tsx index 849b1af7bb7..b9be32f43ed 100644 --- a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/engine/cloud/tx/[id]/layout.tsx +++ b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/tx/[id]/layout.tsx @@ -12,7 +12,7 @@ export default function TransactionLayout({
diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/engine/cloud/tx/[id]/page.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/tx/[id]/page.tsx similarity index 83% rename from apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/engine/cloud/tx/[id]/page.tsx rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/tx/[id]/page.tsx index 85d5001fd0c..bf16789ca24 100644 --- a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/engine/cloud/tx/[id]/page.tsx +++ b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/tx/[id]/page.tsx @@ -1,8 +1,8 @@ import { getProject } from "@/api/projects"; import { getClientThirdwebClient } from "@/constants/thirdweb-client.client"; +import { getAuthToken } from "@app/api/lib/getAuthToken"; +import { loginRedirect } from "@app/login/loginRedirect"; import { notFound, redirect } from "next/navigation"; -import { getAuthToken } from "../../../../../../../../api/lib/getAuthToken"; -import { loginRedirect } from "../../../../../../../../login/loginRedirect"; import { getSingleTransaction } from "../../lib/analytics"; import { TransactionDetailsUI } from "./transaction-details-ui"; @@ -19,7 +19,7 @@ export default async function TransactionPage({ ]); if (!authToken) { - loginRedirect(`/team/${team_slug}/${project_slug}/engine/cloud/tx/${id}`); + loginRedirect(`/team/${team_slug}/${project_slug}/transactions/tx/${id}`); } if (!project) { diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/engine/cloud/tx/[id]/transaction-details-ui.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/tx/[id]/transaction-details-ui.tsx similarity index 100% rename from apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/engine/cloud/tx/[id]/transaction-details-ui.tsx rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/tx/[id]/transaction-details-ui.tsx diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/connect/universal-bridge/layout.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/universal-bridge/layout.tsx similarity index 96% rename from apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/connect/universal-bridge/layout.tsx rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/universal-bridge/layout.tsx index b8a5c2f577e..76f02bfa26e 100644 --- a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/connect/universal-bridge/layout.tsx +++ b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/universal-bridge/layout.tsx @@ -2,7 +2,7 @@ import { getProject } from "@/api/projects"; import { UnderlineLink } from "@/components/ui/UnderlineLink"; import { TabPathLinks } from "@/components/ui/tabs"; import { redirect } from "next/navigation"; -import { FooterLinksSection } from "../../components/footer/FooterLinksSection"; +import { FooterLinksSection } from "../components/footer/FooterLinksSection"; export default async function Layout(props: { params: Promise<{ @@ -18,7 +18,7 @@ export default async function Layout(props: { redirect(`/team/${params.team_slug}`); } - const payLayoutPath = `/team/${params.team_slug}/${params.project_slug}/connect/universal-bridge`; + const payLayoutPath = `/team/${params.team_slug}/${params.project_slug}/universal-bridge`; return (
diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/connect/universal-bridge/loading.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/universal-bridge/loading.tsx similarity index 100% rename from apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/connect/universal-bridge/loading.tsx rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/universal-bridge/loading.tsx diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/connect/universal-bridge/page.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/universal-bridge/page.tsx similarity index 93% rename from apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/connect/universal-bridge/page.tsx rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/universal-bridge/page.tsx index 6aa0c1ab0ab..f56889b62c6 100644 --- a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/connect/universal-bridge/page.tsx +++ b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/universal-bridge/page.tsx @@ -1,6 +1,8 @@ import { getProject } from "@/api/projects"; import { Spinner } from "@/components/ui/Spinner/Spinner"; import { getClientThirdwebClient } from "@/constants/thirdweb-client.client"; +import { getAuthToken } from "@app/api/lib/getAuthToken"; +import { loginRedirect } from "@app/login/loginRedirect"; import { PayAnalytics } from "components/pay/PayAnalytics/PayAnalytics"; import { PayAnalyticsFilter } from "components/pay/PayAnalytics/components/PayAnalyticsFilter"; import { getUniversalBridgeFiltersFromSearchParams } from "lib/time"; @@ -10,8 +12,6 @@ import { ResponsiveSearchParamsProvider, ResponsiveSuspense, } from "responsive-rsc"; -import { getAuthToken } from "../../../../../../api/lib/getAuthToken"; -import { loginRedirect } from "../../../../../../login/loginRedirect"; export default async function Page(props: { params: Promise<{ @@ -30,7 +30,7 @@ export default async function Page(props: { if (!authToken) { loginRedirect( - `/team/${params.team_slug}/${params.project_slug}/connect/universal-bridge`, + `/team/${params.team_slug}/${params.project_slug}/universal-bridge`, ); } diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/connect/universal-bridge/settings/page.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/universal-bridge/settings/page.tsx similarity index 85% rename from apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/connect/universal-bridge/settings/page.tsx rename to apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/universal-bridge/settings/page.tsx index 7c018619616..b98fcebbe4b 100644 --- a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/connect/universal-bridge/settings/page.tsx +++ b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/universal-bridge/settings/page.tsx @@ -2,11 +2,11 @@ import { getProject } from "@/api/projects"; import { getTeamBySlug } from "@/api/team"; import { getFees } from "@/api/universal-bridge/developer"; import { getClientThirdwebClient } from "@/constants/thirdweb-client.client"; +import { getAuthToken } from "@app/api/lib/getAuthToken"; +import { loginRedirect } from "@app/login/loginRedirect"; import { PayConfig } from "components/pay/PayConfig"; import { RouteDiscovery } from "components/pay/RouteDiscovery"; import { redirect } from "next/navigation"; -import { getAuthToken } from "../../../../../../../api/lib/getAuthToken"; -import { loginRedirect } from "../../../../../../../login/loginRedirect"; export default async function Page(props: { params: Promise<{ @@ -24,7 +24,7 @@ export default async function Page(props: { if (!authToken) { loginRedirect( - `/team/${team_slug}/${project_slug}/connect/universal-bridge/settings`, + `/team/${team_slug}/${project_slug}/universal-bridge/settings`, ); } @@ -63,7 +63,7 @@ export default async function Page(props: { }); return ( -
+
- + -
- -
+
+
+ +
); } diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/webhooks/contract-webhooks/contract-webhooks-page.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/webhooks/contract-webhooks/contract-webhooks-page.tsx new file mode 100644 index 00000000000..c7be5dcda25 --- /dev/null +++ b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/webhooks/contract-webhooks/contract-webhooks-page.tsx @@ -0,0 +1,93 @@ +import { + type WebhookResponse, + getSupportedWebhookChains, + getWebhooks, +} from "@/api/insight/webhooks"; +import type { Project } from "@/api/projects"; +import { getClientThirdwebClient } from "@/constants/thirdweb-client.client"; +import { CreateContractWebhookButton } from "../components/CreateWebhookModal"; +import { ContractsWebhooksTable } from "../components/WebhooksTable"; + +export async function ContractsWebhooksPageContent(props: { + project: Project; + authToken: string; +}) { + let webhooks: WebhookResponse[] = []; + let errorMessage = ""; + let supportedChainIds: number[] = []; + + const projectClientId = props.project.publishableKey; + + try { + const webhooksRes = await getWebhooks(projectClientId); + if (webhooksRes.error) { + errorMessage = webhooksRes.error; + } else if (webhooksRes.data) { + webhooks = webhooksRes.data; + } + + const supportedChainsRes = await getSupportedWebhookChains(); + if ("chains" in supportedChainsRes) { + supportedChainIds = supportedChainsRes.chains; + } else { + errorMessage = supportedChainsRes.error; + } + } catch (error) { + errorMessage = "Failed to load webhooks. Please try again later."; + console.error("Error loading project or webhooks", error); + } + + if (errorMessage) { + return ( +
+
+

+ Unable to load webhooks +

+

{errorMessage}

+
+
+ ); + } + + const client = getClientThirdwebClient({ + jwt: props.authToken, + teamId: props.project.teamId, + }); + + return ( +
+ {errorMessage ? ( +
+
+

+ Unable to load webhooks +

+

{errorMessage}

+
+
+ ) : webhooks.length > 0 ? ( + + ) : ( +
+
+

No webhooks found

+

+ Create a webhook to get started. +

+
+ +
+ )} +
+ ); +} diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/webhooks/page.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/webhooks/page.tsx index 9d254d2c52c..7bf9d89e587 100644 --- a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/webhooks/page.tsx +++ b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/webhooks/page.tsx @@ -1,23 +1,12 @@ -import { - type WebhookResponse, - getSupportedWebhookChains, - getWebhooks, -} from "@/api/insight/webhooks"; import { getProject } from "@/api/projects"; import { UnderlineLink } from "@/components/ui/UnderlineLink"; -import { getClientThirdwebClient } from "@/constants/thirdweb-client.client"; +import { getAuthToken } from "@app/api/lib/getAuthToken"; import { notFound } from "next/navigation"; -import { getAuthToken } from "../../../../../api/lib/getAuthToken"; -import { CreateWebhookModal } from "./components/CreateWebhookModal"; -import { WebhooksTable } from "./components/WebhooksTable"; +import { ContractsWebhooksPageContent } from "./contract-webhooks/contract-webhooks-page"; export default async function WebhooksPage({ params, }: { params: Promise<{ team_slug: string; project_slug: string }> }) { - let webhooks: WebhookResponse[] = []; - let errorMessage = ""; - let supportedChainIds: number[] = []; - const [authToken, resolvedParams] = await Promise.all([ getAuthToken(), params, @@ -32,32 +21,6 @@ export default async function WebhooksPage({ notFound(); } - const projectClientId = project.publishableKey; - - try { - const webhooksRes = await getWebhooks(projectClientId); - if (webhooksRes.error) { - errorMessage = webhooksRes.error; - } else if (webhooksRes.data) { - webhooks = webhooksRes.data; - } - - const supportedChainsRes = await getSupportedWebhookChains(); - if ("chains" in supportedChainsRes) { - supportedChainIds = supportedChainsRes.chains; - } else { - errorMessage = supportedChainsRes.error; - } - } catch (error) { - errorMessage = "Failed to load webhooks. Please try again later."; - console.error("Error loading project or webhooks", error); - } - - const client = getClientThirdwebClient({ - jwt: authToken, - teamId: project.teamId, - }); - return (
@@ -80,37 +43,7 @@ export default async function WebhooksPage({
- {errorMessage ? ( -
-
-

- Unable to load webhooks -

-

{errorMessage}

-
-
- ) : webhooks.length > 0 ? ( - - ) : ( -
-
-

No webhooks found

-

- Create a webhook to get started. -

-
- -
- )} +
diff --git a/apps/dashboard/src/components/contract-components/import-contract/modal.tsx b/apps/dashboard/src/components/contract-components/import-contract/modal.tsx index 0e2d957b198..533cd6831cb 100644 --- a/apps/dashboard/src/components/contract-components/import-contract/modal.tsx +++ b/apps/dashboard/src/components/contract-components/import-contract/modal.tsx @@ -58,7 +58,7 @@ export const ImportModal: React.FC = (props) => { > - Import {props.type === "contract" ? "Contract" : "Asset"} + Import {props.type === "contract" ? "Contract" : "Token"} Import a deployed contract in your project diff --git a/apps/dashboard/src/components/contract-components/tables/contract-table.tsx b/apps/dashboard/src/components/contract-components/tables/contract-table.tsx index bb1d825e13b..e4e07e8dae4 100644 --- a/apps/dashboard/src/components/contract-components/tables/contract-table.tsx +++ b/apps/dashboard/src/components/contract-components/tables/contract-table.tsx @@ -164,7 +164,7 @@ export function ContractTableUI(props: { Contract Address )} - {props.variant === "asset" && Asset Page} + {props.variant === "asset" && Token Page} Actions @@ -263,7 +263,7 @@ export function ContractTableUI(props: {
{props.variant === "asset" ? ( -

No assets found

+

No tokens found

) : (

No contracts found

)} diff --git a/apps/dashboard/src/components/dashboard/StepsCard.tsx b/apps/dashboard/src/components/dashboard/StepsCard.tsx index 3e9542fd985..385072b75fd 100644 --- a/apps/dashboard/src/components/dashboard/StepsCard.tsx +++ b/apps/dashboard/src/components/dashboard/StepsCard.tsx @@ -37,7 +37,7 @@ export const StepsCard: React.FC = ({ return (
{/* Title + Desc */} -

+

{title}

diff --git a/apps/dashboard/src/components/shared/FileInput.tsx b/apps/dashboard/src/components/shared/FileInput.tsx index e857cabd296..ddfb1e819a0 100644 --- a/apps/dashboard/src/components/shared/FileInput.tsx +++ b/apps/dashboard/src/components/shared/FileInput.tsx @@ -1,6 +1,6 @@ import { Button } from "@/components/ui/button"; import { cn } from "@/lib/utils"; -import { FilePreview } from "@app/team/[team_slug]/[project_slug]/(sidebar)/assets/create/_common/file-preview"; +import { FilePreview } from "@app/team/[team_slug]/[project_slug]/(sidebar)/tokens/create/_common/file-preview"; import { FilePlusIcon, UploadIcon } from "lucide-react"; import { useCallback, useEffect, useRef } from "react"; import { diff --git a/apps/dashboard/src/core-ui/batch-upload/batch-table.tsx b/apps/dashboard/src/core-ui/batch-upload/batch-table.tsx index fb618d44c84..edb461baf03 100644 --- a/apps/dashboard/src/core-ui/batch-upload/batch-table.tsx +++ b/apps/dashboard/src/core-ui/batch-upload/batch-table.tsx @@ -1,5 +1,6 @@ import { CodeClient } from "@/components/ui/code/code.client"; import { ToolTipLabel } from "@/components/ui/tooltip"; +import { FilePreview } from "@app/team/[team_slug]/[project_slug]/(sidebar)/tokens/create/_common/file-preview"; import { Flex, IconButton, @@ -23,7 +24,6 @@ import { useMemo } from "react"; import { type Column, usePagination, useTable } from "react-table"; import type { ThirdwebClient } from "thirdweb"; import type { NFTInput } from "thirdweb/utils"; -import { FilePreview } from "../../app/(app)/team/[team_slug]/[project_slug]/(sidebar)/assets/create/_common/file-preview"; interface BatchTableProps { data: NFTInput[];