File tree Expand file tree Collapse file tree 4 files changed +58
-5
lines changed
apps/dashboard/src/app/(app)/team
[team_slug]/[project_slug]/contract/[chainIdOrSlug]/[contractAddress] Expand file tree Collapse file tree 4 files changed +58
-5
lines changed Original file line number Diff line number Diff line change 11import { redirect } from "next/navigation" ;
2+ import { getAuthToken , getAuthTokenWalletAddress } from "@/api/auth-token" ;
23import { getProjects } from "@/api/projects" ;
34import { getTeams } from "@/api/team" ;
45import { AppFooter } from "@/components/footers/app-footer" ;
56import { getClientThirdwebClient } from "@/constants/thirdweb-client.client" ;
6- import {
7- getAuthToken ,
8- getAuthTokenWalletAddress ,
9- } from "../../../../../../../../@/api/auth-token" ;
10- import { ErrorProvider } from "../../../../../../../../@/contexts/error-handler" ;
7+ import { ErrorProvider } from "@/contexts/error-handler" ;
8+ import { ContractIcon } from "@/icons/ContractIcon" ;
119import { SharedContractLayout } from "../../../../../../(dashboard)/(chain)/[chain_id]/[contractAddress]/shared-layout" ;
1210import { getValidAccount } from "../../../../../../account/settings/getAccount" ;
1311import { TeamHeaderLoggedIn } from "../../../../../components/TeamHeader/team-header-logged-in.client" ;
@@ -68,6 +66,11 @@ export default async function ContractLayout(props: {
6866 accountAddress = { accountAddress }
6967 client = { client }
7068 currentProject = { project }
69+ currentProjectSubpath = { {
70+ href : `/team/${ params . team_slug } /${ params . project_slug } /contracts` ,
71+ icon : < ContractIcon /> ,
72+ label : "Contracts" ,
73+ } }
7174 currentTeam = { team }
7275 teamsAndProjects = { teamsAndProjects }
7376 />
Original file line number Diff line number Diff line change 11import type { Meta , StoryObj } from "@storybook/nextjs" ;
2+ import { BoxIcon } from "lucide-react" ;
23import { ThirdwebProvider } from "thirdweb/react" ;
34import type { Project } from "@/api/projects" ;
45import type { Team } from "@/api/team" ;
@@ -119,6 +120,19 @@ function Variants(props: { type: "mobile" | "desktop" }) {
119120 type = { props . type }
120121 />
121122 </ BadgeContainer >
123+
124+ < BadgeContainer label = "Pro Plan - active subpage" >
125+ < Variant
126+ currentProject = { proTeam . projects [ 0 ] }
127+ currentProjectSubpath = { {
128+ href : "/team/project/foo" ,
129+ icon : < BoxIcon /> ,
130+ label : "Foo" ,
131+ } }
132+ team = { proTeam . team }
133+ type = { props . type }
134+ />
135+ </ BadgeContainer >
122136 </ div >
123137 </ ThirdwebProvider >
124138 ) ;
@@ -132,6 +146,11 @@ function Variant(props: {
132146 team : Team ;
133147 type : "mobile" | "desktop" ;
134148 currentProject ?: Project ;
149+ currentProjectSubpath ?: {
150+ label : string ;
151+ href : string ;
152+ icon : React . ReactNode ;
153+ } ;
135154} ) {
136155 const Comp =
137156 props . type === "mobile" ? TeamHeaderMobileUI : TeamHeaderDesktopUI ;
@@ -149,6 +168,7 @@ function Variant(props: {
149168 createProject = { ( ) => { } }
150169 createTeam = { ( ) => { } }
151170 currentProject = { undefined }
171+ currentProjectSubpath = { props . currentProjectSubpath }
152172 currentTeam = { props . team }
153173 logout = { ( ) => { } }
154174 teamsAndProjects = { teamsAndProjectsStub }
Original file line number Diff line number Diff line change @@ -21,6 +21,13 @@ export type TeamHeaderCompProps = {
2121 currentTeam : Team ;
2222 teamsAndProjects : Array < { team : Team ; projects : Project [ ] } > ;
2323 currentProject : Project | undefined ;
24+ currentProjectSubpath :
25+ | {
26+ label : string ;
27+ icon : React . ReactNode ;
28+ href : string ;
29+ }
30+ | undefined ;
2431 className ?: string ;
2532 account : Pick < Account , "email" | "id" > ;
2633 logout : ( ) => void ;
@@ -107,6 +114,23 @@ export function TeamHeaderDesktopUI(props: TeamHeaderCompProps) {
107114 teamsAndProjects = { props . teamsAndProjects }
108115 />
109116 </ div >
117+
118+ { props . currentProjectSubpath && (
119+ < >
120+ < SlashSeparator />
121+ < div className = "flex items-center gap-1.5" >
122+ < div className = "flex items-center justify-center rounded-full border size-6 [&>svg]:size-[50%] [&>svg]:text-muted-foreground" >
123+ { props . currentProjectSubpath . icon }
124+ </ div >
125+ < Link
126+ className = "flex flex-row items-center gap-2 font-semibold text-sm"
127+ href = { props . currentProjectSubpath . href }
128+ >
129+ { props . currentProjectSubpath . label }
130+ </ Link >
131+ </ div >
132+ </ >
133+ ) }
110134 </ >
111135 ) }
112136 </ div >
Original file line number Diff line number Diff line change @@ -28,6 +28,11 @@ export function TeamHeaderLoggedIn(props: {
2828 account : Pick < Account , "email" | "id" > ;
2929 accountAddress : string ;
3030 client : ThirdwebClient ;
31+ currentProjectSubpath ?: {
32+ label : string ;
33+ href : string ;
34+ icon : React . ReactNode ;
35+ } ;
3136} ) {
3237 // identify the account
3338 useIdentifyAccount ( {
@@ -89,6 +94,7 @@ export function TeamHeaderLoggedIn(props: {
8994 ) ;
9095 } ,
9196 currentProject : props . currentProject ,
97+ currentProjectSubpath : props . currentProjectSubpath ,
9298 currentTeam : props . currentTeam ,
9399 logout : logout ,
94100 teamsAndProjects : props . teamsAndProjects ,
You can’t perform that action at this time.
0 commit comments