From e651d0ae91ff9f5da43a30b5180444b133679b03 Mon Sep 17 00:00:00 2001 From: MananTank Date: Tue, 26 Aug 2025 22:35:44 +0000 Subject: [PATCH] Dashboard: Update Project header style (#7920) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ## PR-Codex overview This PR primarily focuses on updating UI components across various files in the application. It includes adjustments to icon sizes, component styles, and the introduction of new icons, enhancing the overall user interface and experience. ### Detailed summary - Changed `PlusIcon` size from `size-4` to `size-3.5` in multiple buttons. - Replaced `SettingsIcon` with `Settings2Icon`. - Added `DatabaseIcon`, `WebhookIcon`, `TokenIcon`, `ArrowDownToLineIcon`, and others to various headers. - Updated button styles to `bg-card` and changed variants to `outline`. - Modified header layouts to include new icons and adjusted spacing. - Removed actions from several `ProjectPage` components and replaced them with links. - Adjusted descriptions and added new links in the `ContractsPage`, `PaymentsPage`, and other components. > ✨ Ask PR-Codex anything about this PR by commenting with `/codex {your question}` ## Summary by CodeRabbit - New Features - Header icons added across many pages; Settings now appears as a dedicated header control where provided. - Single link renders as a direct action button; multiple links grouped under a labeled "Resources" menu with chevron. - Refactor - Project header redesigned to an icon-driven layout; mobile-specific branching removed and actions reorganized. - Style - Button variants, spacing, iconography, and dropdown alignment adjusted (smaller icons, new arrow/chevron visuals, reduced item padding). --- .../blocks/project-page/header/link-group.tsx | 75 +++++------- .../project-page/project-page-header.tsx | 111 ++++++++++++------ .../contracts/import-contract/modal.tsx | 4 +- .../(sidebar)/account-abstraction/page.tsx | 21 +--- .../[project_slug]/(sidebar)/ai/page.tsx | 15 +-- .../components/ProjectSidebarLayout.tsx | 4 +- .../contracts/import-contract-button.tsx | 8 +- .../(sidebar)/contracts/page.tsx | 6 +- .../(general)/import/import-engine-dialog.tsx | 11 +- .../overview/engine-instances-table.tsx | 2 +- .../(sidebar)/engine/(general)/page.tsx | 2 + .../[project_slug]/(sidebar)/insight/page.tsx | 16 +-- .../[project_slug]/(sidebar)/page.tsx | 10 +- .../(sidebar)/payments/page.tsx | 18 +-- .../[project_slug]/(sidebar)/rpc/page.tsx | 19 +-- .../(sidebar)/settings/layout.tsx | 20 +++- .../[project_slug]/(sidebar)/tokens/cards.tsx | 8 +- .../[project_slug]/(sidebar)/tokens/page.tsx | 6 +- .../(sidebar)/transactions/page.tsx | 15 +-- .../[project_slug]/(sidebar)/vault/page.tsx | 10 +- .../[project_slug]/(sidebar)/wallets/page.tsx | 20 +--- .../components/CreateWebhookModal.tsx | 2 +- .../(sidebar)/webhooks/contracts/page.tsx | 13 +- .../(sidebar)/webhooks/payments/page.tsx | 16 +-- 24 files changed, 215 insertions(+), 217 deletions(-) diff --git a/apps/dashboard/src/@/components/blocks/project-page/header/link-group.tsx b/apps/dashboard/src/@/components/blocks/project-page/header/link-group.tsx index eb7844c2fc6..bbddd8d5fc9 100644 --- a/apps/dashboard/src/@/components/blocks/project-page/header/link-group.tsx +++ b/apps/dashboard/src/@/components/blocks/project-page/header/link-group.tsx @@ -4,9 +4,8 @@ import { Button } from "@workspace/ui/components/button"; import { BookTextIcon, BoxIcon, - EllipsisVerticalIcon, - NetworkIcon, - SettingsIcon, + ChevronDownIcon, + CodeIcon, WebhookIcon, } from "lucide-react"; import Link from "next/link"; @@ -17,17 +16,14 @@ import { DropdownMenuItem, DropdownMenuTrigger, } from "@/components/ui/dropdown-menu"; -import { ToolTipLabel } from "@/components/ui/tooltip"; -import { useIsMobile } from "@/hooks/use-mobile"; -type LinkType = "api" | "docs" | "playground" | "webhooks" | "settings"; +type LinkType = "api" | "docs" | "playground" | "webhooks"; const linkTypeToLabel: Record = { api: "API Reference", docs: "Documentation", playground: "Playground", webhooks: "Webhooks", - settings: "Settings", }; const linkTypeToOrder: Record = { @@ -35,15 +31,13 @@ const linkTypeToOrder: Record = { playground: 1, api: 3, webhooks: 4, - settings: 5, }; const linkTypeToIcon: Record> = { - api: NetworkIcon, + api: CodeIcon, docs: BookTextIcon, playground: BoxIcon, webhooks: WebhookIcon, - settings: SettingsIcon, }; function orderLinks(links: ActionLink[]) { @@ -60,52 +54,43 @@ export type ActionLink = { }; export function LinkGroup(props: { links: ActionLink[] }) { - const isMobile = useIsMobile(); - const maxLinks = isMobile ? 1 : 2; const orderedLinks = useMemo(() => orderLinks(props.links), [props.links]); - // case where we just render directly - if (props.links.length <= maxLinks) { + if (orderedLinks.length === 1 && orderedLinks[0]) { + const link = orderedLinks[0]; + const Icon = linkTypeToIcon[link.type]; return ( -
- {orderedLinks.map((link) => { - const isExternal = link.href.startsWith("http"); - const Icon = linkTypeToIcon[link.type]; - return ( - - - - ); - })} -
+ + + ); } - // case where we render a dropdown return ( - {orderedLinks.map((link) => { @@ -115,7 +100,7 @@ export function LinkGroup(props: { links: ActionLink[] }) { ; + isProjectIcon?: boolean; actions: { primary: Action; secondary?: Action; } | null; links?: ActionLink[]; + settings?: { + href: string; + }; // TODO: add task card component task?: never; @@ -71,50 +75,81 @@ export type ProjectPageHeaderProps = { export function ProjectPageHeader(props: ProjectPageHeaderProps) { return ( -
- {/* main row */} -
- {/* left */} -
- {/* image */} - {props.imageUrl !== undefined && ( - +
+ {/* top row */} +
+ {/* left - icon */} +
+ {props.isProjectIcon ? ( + + ) : ( +
+ +
)} - {/* title */} -
-

- {props.title} -

-

- {props.description} -

-
- {/* right */} - {/* TODO: add "current task" card component */} -
+ {/* right - buttons */} +
+
+ {props.links && props.links.length > 0 && ( + + )} - {/* actions row */} - {props.actions && ( -
- {/* left actions */} -
- {props.actions.primary && } - {props.actions.secondary && ( - + {props.settings && ( + + + )}
- {/* right actions */} - {props.links && props.links.length > 0 && ( - + + {/* hide on mobile */} + {props.actions && ( +
+ {props.actions.secondary && ( + + )} + + {props.actions.primary && ( + + )} +
)}
- )} +
+ +
+ {/* mid row */} +
+

+ {props.title} +

+ {/* description */} +

+ {props.description} +

+
+ + {/* bottom row - hidden on desktop */} + {props.actions && ( +
+ {props.actions?.primary && ( + + )} + + {props.actions?.secondary && ( + + )} +
+ )} +
); } diff --git a/apps/dashboard/src/@/components/contracts/import-contract/modal.tsx b/apps/dashboard/src/@/components/contracts/import-contract/modal.tsx index 6a225b0a979..c4cbc25af04 100644 --- a/apps/dashboard/src/@/components/contracts/import-contract/modal.tsx +++ b/apps/dashboard/src/@/components/contracts/import-contract/modal.tsx @@ -1,7 +1,7 @@ "use client"; import { zodResolver } from "@hookform/resolvers/zod"; -import { ExternalLinkIcon, ImportIcon } from "lucide-react"; +import { ArrowDownToLineIcon, ExternalLinkIcon } from "lucide-react"; import Link from "next/link"; import { useForm } from "react-hook-form"; import { toast } from "sonner"; @@ -234,7 +234,7 @@ function ImportForm(props: { {addContractToProject.isPending ? ( ) : ( - + )} {addContractToProject.isPending ? "Importing" : "Import"} diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/account-abstraction/page.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/account-abstraction/page.tsx index c15962d7813..6ca23d1d256 100644 --- a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/account-abstraction/page.tsx +++ b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/account-abstraction/page.tsx @@ -11,6 +11,7 @@ import { } from "@/components/analytics/date-range-selector"; import { ProjectPage } from "@/components/blocks/project-page/project-page"; import { getClientThirdwebClient } from "@/constants/thirdweb-client.client"; +import { SmartAccountIcon } from "@/icons/SmartAccountIcon"; import { getAbsoluteUrl } from "@/utils/vercel"; import { AccountAbstractionSummary } from "./AccountAbstractionAnalytics/AccountAbstractionSummary"; import { SmartWalletsBillingAlert } from "./Alerts"; @@ -93,22 +94,14 @@ export default async function Page(props: { return ( diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/ai/page.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/ai/page.tsx index eb45c74c176..0ccf60dafbe 100644 --- a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/ai/page.tsx +++ b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/ai/page.tsx @@ -6,6 +6,7 @@ import type { DurationId } from "@/components/analytics/date-range-selector"; import { ResponsiveTimeFilters } from "@/components/analytics/responsive-time-filters"; import { ProjectPage } from "@/components/blocks/project-page/project-page"; import { getClientThirdwebClient } from "@/constants/thirdweb-client.client"; +import { NebulaIcon } from "@/icons/NebulaIcon"; import { getFiltersFromSearchParams } from "@/lib/time"; import { loginRedirect } from "@/utils/redirects"; import { AiAnalytics } from "./analytics/chart"; @@ -57,21 +58,11 @@ export default async function Page(props: { diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/contracts/page.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/contracts/page.tsx index 5db37eb8599..e01390aee85 100644 --- a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/contracts/page.tsx +++ b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/contracts/page.tsx @@ -1,10 +1,11 @@ -import { RocketIcon } from "lucide-react"; +import { ArrowUpFromLineIcon } from "lucide-react"; import { redirect } from "next/navigation"; import { getAuthToken } from "@/api/auth-token"; import { getProject } from "@/api/project/projects"; import { getTeamBySlug } from "@/api/team/get-team"; import { ProjectPage } from "@/components/blocks/project-page/project-page"; import { getClientThirdwebClient } from "@/constants/thirdweb-client.client"; +import { ContractIcon } from "@/icons/ContractIcon"; import { loginRedirect } from "@/utils/redirects"; import { DeployedContractsPage } from "./DeployedContractsPage"; import { ImportContractButton } from "./import-contract-button"; @@ -42,6 +43,7 @@ export default async function Page(props: { header={{ client, title: "Contracts", + icon: ContractIcon, description: ( <> Read, write, and deploy smart contracts on any EVM compatible @@ -53,7 +55,7 @@ export default async function Page(props: { primary: { label: "Deploy Contract", href: "/explore", - icon: , + icon: , }, secondary: { component: ( diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/engine/(general)/import/import-engine-dialog.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/engine/(general)/import/import-engine-dialog.tsx index ea879a79982..c188ccc9c8e 100644 --- a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/engine/(general)/import/import-engine-dialog.tsx +++ b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/engine/(general)/import/import-engine-dialog.tsx @@ -3,10 +3,9 @@ import { zodResolver } from "@hookform/resolvers/zod"; import { useMutation } from "@tanstack/react-query"; import { + ArrowDownToLineIcon, CircleAlertIcon, - DownloadIcon, ExternalLinkIcon, - ImportIcon, } from "lucide-react"; import Link from "next/link"; import { useForm } from "react-hook-form"; @@ -108,11 +107,11 @@ export function ImportEngineButton(props: { @@ -188,7 +187,7 @@ export function ImportEngineButton(props: { {importMutation.isPending ? ( ) : ( - + )} Import diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/engine/(general)/overview/engine-instances-table.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/engine/(general)/overview/engine-instances-table.tsx index 00b5f060c5e..05c5bf03f47 100644 --- a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/engine/(general)/overview/engine-instances-table.tsx +++ b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/engine/(general)/overview/engine-instances-table.tsx @@ -132,7 +132,7 @@ export function DedicatedEngineSubscriptionButton(props: { team: Team }) { const trigger = ( ); diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/engine/(general)/page.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/engine/(general)/page.tsx index 4b7cb6a1b68..32d15755850 100644 --- a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/engine/(general)/page.tsx +++ b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/engine/(general)/page.tsx @@ -1,3 +1,4 @@ +import { DatabaseIcon } from "lucide-react"; import { redirect } from "next/navigation"; import { getAuthToken } from "@/api/auth-token"; import { getTeamBySlug } from "@/api/team/get-team"; @@ -56,6 +57,7 @@ export default async function Page(props: { ( + + ), title: project.name, description: "Your project's overview and analytics", - imageUrl: project.image, // explicitly NO actions on the overview page actions: null, }} diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/payments/page.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/payments/page.tsx index 471154ad86b..56cfb2d1e1c 100644 --- a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/payments/page.tsx +++ b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/payments/page.tsx @@ -6,6 +6,7 @@ import { getAuthToken } from "@/api/auth-token"; import { getProject } from "@/api/project/projects"; import { ProjectPage } from "@/components/blocks/project-page/project-page"; import { getClientThirdwebClient } from "@/constants/thirdweb-client.client"; +import { PayIcon } from "@/icons/PayIcon"; import { loginRedirect } from "@/utils/redirects"; import { AdvancedSection } from "./components/AdvancedSection.client"; import { PayAnalytics } from "./components/PayAnalytics"; @@ -56,6 +57,7 @@ export default async function Page(props: { header={{ client, title: "Payments", + icon: PayIcon, description: ( <> Payments allow you to create advanced payment flows to monetize your @@ -77,11 +79,9 @@ export default async function Page(props: { ), }, - secondary: { - label: "Documentation", - href: "https://portal.thirdweb.com/payments", - external: true, - }, + }, + settings: { + href: `/team/${params.team_slug}/${params.project_slug}/settings/payments`, }, links: [ { @@ -100,10 +100,10 @@ export default async function Page(props: { type: "webhooks", href: `/team/${params.team_slug}/${params.project_slug}/webhooks/payments`, }, - { - type: "settings", - href: `/team/${params.team_slug}/${params.project_slug}/settings/payments`, - }, + // { + // type: "settings", + // href: `/team/${params.team_slug}/${params.project_slug}/settings/payments`, + // }, ], }} footer={{ diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/rpc/page.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/rpc/page.tsx index c74aa80f1dd..cd5b226f1d0 100644 --- a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/rpc/page.tsx +++ b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/rpc/page.tsx @@ -1,3 +1,4 @@ +import { RssIcon } from "lucide-react"; import { redirect } from "next/navigation"; import { ResponsiveSearchParamsProvider } from "responsive-rsc"; import { getAuthToken } from "@/api/auth-token"; @@ -47,17 +48,17 @@ export default async function Page(props: { return ( + Remote Procedure Call (RPC) provides reliable access to{" "} +
querying data and interacting with + the blockchain through global edge RPCs + + ), + actions: null, links: [ { type: "docs", diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/settings/layout.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/settings/layout.tsx index 620aa72ddc2..635c38e7240 100644 --- a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/settings/layout.tsx +++ b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/settings/layout.tsx @@ -1,3 +1,5 @@ +import { Settings2Icon } from "lucide-react"; + export default async function Layout(props: { children: React.ReactNode; params: Promise<{ @@ -7,11 +9,21 @@ export default async function Layout(props: { }) { return (
-
+
-

- Project Settings -

+
+
+ +
+
+
+

+ Project Settings +

+

+ Configure your project's settings and services +

+
{props.children}
diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/tokens/cards.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/tokens/cards.tsx index 3d081837c0e..18bcf5daf10 100644 --- a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/tokens/cards.tsx +++ b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/tokens/cards.tsx @@ -1,7 +1,7 @@ "use client"; import { Button } from "@workspace/ui/components/button"; -import { CoinsIcon, ImagesIcon, ImportIcon } from "lucide-react"; +import { ArrowDownToLineIcon, CoinsIcon, ImagesIcon } from "lucide-react"; import Link from "next/link"; import { useState } from "react"; import type { ThirdwebClient } from "thirdweb"; @@ -23,15 +23,15 @@ export function ImportTokenButton(props: { return ( <> diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/tokens/page.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/tokens/page.tsx index 28a22b62364..74ff22780d9 100644 --- a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/tokens/page.tsx +++ b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/tokens/page.tsx @@ -19,6 +19,7 @@ import { DialogTrigger, } from "@/components/ui/dialog"; import { getClientThirdwebClient } from "@/constants/thirdweb-client.client"; +import { TokenIcon } from "@/icons/TokenIcon"; import { loginRedirect } from "@/utils/redirects"; import { Cards, ImportTokenButton } from "./cards"; @@ -53,6 +54,7 @@ export default async function Page(props: { return ( - diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/page.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/page.tsx index d92cfa21346..deeaddbefe4 100644 --- a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/page.tsx +++ b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/page.tsx @@ -1,4 +1,5 @@ import { createVaultClient, listEoas } from "@thirdweb-dev/vault-sdk"; +import { ArrowLeftRightIcon } from "lucide-react"; import { notFound, redirect } from "next/navigation"; import { getAuthToken } from "@/api/auth-token"; import { getProject } from "@/api/project/projects"; @@ -91,6 +92,7 @@ export default async function TransactionsAnalyticsPage(props: { @@ -99,18 +101,7 @@ export default async function TransactionsAnalyticsPage(props: { server wallets, sponsor gas, monitor transaction status, and more ), - actions: { - primary: { - label: "Documentation", - href: "https://portal.thirdweb.com/transactions", - external: true, - }, - secondary: { - label: "API Reference", - href: "https://api.thirdweb.com/reference#tag/transactions", - external: true, - }, - }, + actions: null, links: [ { type: "docs", diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/vault/page.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/vault/page.tsx index 731af61b640..6c4455e2e1d 100644 --- a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/vault/page.tsx +++ b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/vault/page.tsx @@ -1,3 +1,4 @@ +import { LockIcon } from "lucide-react"; import { notFound } from "next/navigation"; import { getAuthToken } from "@/api/auth-token"; import { getProject } from "@/api/project/projects"; @@ -35,15 +36,10 @@ export default async function VaultPage(props: { header={{ client, title: "Vault", + icon: LockIcon, description: "Secure, non-custodial key management system for your server wallets.", - actions: { - primary: { - label: "Documentation", - href: "https://portal.thirdweb.com/vault", - external: true, - }, - }, + actions: null, links: [ { type: "docs", diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/wallets/page.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/wallets/page.tsx index 460bebfae83..fad8863cd37 100644 --- a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/wallets/page.tsx +++ b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/wallets/page.tsx @@ -7,6 +7,7 @@ import { ResponsiveTimeFilters } from "@/components/analytics/responsive-time-fi import { ProjectPage } from "@/components/blocks/project-page/project-page"; import { InAppWalletUsersPageContent } from "@/components/in-app-wallet-users-content/in-app-wallet-users-content"; import { getClientThirdwebClient } from "@/constants/thirdweb-client.client"; +import { WalletProductIcon } from "@/icons/WalletProductIcon"; import { getFiltersFromSearchParams } from "@/lib/time"; import { loginRedirect } from "@/utils/redirects"; import { InAppWalletAnalytics } from "./analytics/chart"; @@ -54,6 +55,7 @@ export default async function Page(props: { ), - actions: { - primary: { - label: "Documentation", - href: "https://portal.thirdweb.com/wallets", - external: true, - }, - secondary: { - label: "API Reference", - href: "https://api.thirdweb.com/reference#tag/wallets", - external: true, - }, + actions: null, + settings: { + href: `/team/${params.team_slug}/${params.project_slug}/settings/wallets`, }, links: [ { @@ -89,10 +83,6 @@ export default async function Page(props: { type: "api", href: "https://api.thirdweb.com/reference#tag/wallets", }, - { - type: "settings", - href: `/team/${params.team_slug}/${params.project_slug}/settings/wallets`, - }, ], }} > diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/webhooks/components/CreateWebhookModal.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/webhooks/components/CreateWebhookModal.tsx index 053b46218c3..4493537a97d 100644 --- a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/webhooks/components/CreateWebhookModal.tsx +++ b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/webhooks/components/CreateWebhookModal.tsx @@ -235,7 +235,7 @@ export function CreateContractWebhookButton({ size="sm" onClick={handleOpenModal} > - + Create Webhook diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/webhooks/contracts/page.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/webhooks/contracts/page.tsx index 91b2360d0e2..73602269897 100644 --- a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/webhooks/contracts/page.tsx +++ b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/webhooks/contracts/page.tsx @@ -1,3 +1,4 @@ +import { WebhookIcon } from "lucide-react"; import { notFound } from "next/navigation"; import { getAuthToken } from "@/api/auth-token"; import { getSupportedWebhookChains } from "@/api/insight/webhooks"; @@ -33,6 +34,7 @@ export default async function ContractsPage(props: { ), }, - secondary: { - label: "Documentation", - href: "https://portal.thirdweb.com/insight/webhooks", - external: true, - }, }, + links: [ + { + type: "docs", + href: "https://portal.thirdweb.com/payments/webhooks", + }, + ], }} tabs={[ { diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/webhooks/payments/page.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/webhooks/payments/page.tsx index 5477f4981d6..5efcb34720b 100644 --- a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/webhooks/payments/page.tsx +++ b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/webhooks/payments/page.tsx @@ -1,5 +1,5 @@ import { Button } from "@workspace/ui/components/button"; -import { PlusIcon } from "lucide-react"; +import { PlusIcon, WebhookIcon } from "lucide-react"; import { notFound } from "next/navigation"; import { getAuthToken } from "@/api/auth-token"; import { getProject } from "@/api/project/projects"; @@ -33,6 +33,7 @@ export default async function Page(props: { - ), }, - secondary: { - label: "Documentation", + }, + links: [ + { + type: "docs", href: "https://portal.thirdweb.com/payments/webhooks", - external: true, }, - }, + ], }} tabs={[ {