1- import { ArrowUpRightIcon } from "lucide-react " ;
1+ import { cn } from "@workspace/ui/lib/utils " ;
22import type { Metadata } from "next" ;
33import type { Address } from "thirdweb" ;
44import { defineChain } from "thirdweb/chains" ;
55import { getContract } from "thirdweb/contract" ;
66import { getCurrencyMetadata } from "thirdweb/extensions/erc20" ;
7+ import { AppFooter } from "@/components/footers/app-footer" ;
78import { UniversalBridgeEmbed } from "./components/client/UniversalBridgeEmbed" ;
9+ import { PageHeader } from "./components/header" ;
810import { bridgeAppThirdwebClient } from "./constants" ;
911
1012const title = "thirdweb Payments: Swap, Bridge, and Onramp" ;
@@ -49,8 +51,11 @@ export default async function BridgePage({
4951 }
5052
5153 return (
52- < div className = "relative mx-auto flex h-dvh w-full flex-col items-center justify-center overflow-hidden border py-10" >
53- < main className = "container z-10 flex justify-center" >
54+ < div className = "grow flex flex-col relative overflow-hidden" >
55+ < PageHeader />
56+
57+ < div className = "flex grow flex-col items-center justify-center py-36 px-4 min-h-dvh relative overflow-hidden" >
58+ < DotsBackgroundPattern />
5459 < UniversalBridgeEmbed
5560 amount = { amount as string }
5661 chainId = { chainId ? Number ( chainId ) : undefined }
@@ -64,42 +69,28 @@ export default async function BridgePage({
6469 : undefined
6570 }
6671 />
67- </ main >
68-
69- { /* eslint-disable-next-line @next/next/no-img-element */ }
70- < img
71- alt = ""
72- className = "-bottom-12 -right-12 pointer-events-none absolute lg:right-0 lg:bottom-0 opacity-20"
73- src = "/assets/login/background.svg"
74- />
72+ </ div >
7573
76- < div className = "absolute inset-x-0 bottom-8 z-20" >
77- < div className = "container mx-auto px-4" >
78- < div className = "relative overflow-hidden rounded-lg border-2 border-green-500/20 bg-gradient-to-br from-card/80 to-card/50 p-4 shadow-[inset_0_1px_2px_0_rgba(0,0,0,0.02)]" >
79- < div className = "absolute inset-0 bg-gradient-to-br from-green-500/5 to-transparent" />
80- < div className = "relative flex flex-col gap-2 sm:flex-row sm:items-center sm:justify-between" >
81- < div className = "flex flex-col gap-1" >
82- < h3 className = "font-semibold text-base tracking-tight" >
83- Get Started with thirdweb Bridge
84- </ h3 >
85- < p className = "text-muted-foreground text-sm" >
86- thirdweb Bridge allows developers to easily bridge and swap
87- tokens between chains and wallets.
88- </ p >
89- </ div >
90- < a
91- className = "inline-flex items-center gap-2 rounded-md bg-green-600 px-4 py-2 font-medium text-sm text-white transition-all hover:bg-green-600/90 hover:shadow-sm"
92- href = "https://portal.thirdweb.com/bridge"
93- rel = "noopener noreferrer"
94- target = "_blank"
95- >
96- Learn More
97- < ArrowUpRightIcon className = "size-4" />
98- </ a >
99- </ div >
100- </ div >
101- </ div >
74+ < div className = "bg-background relative z-10" >
75+ < AppFooter />
10276 </ div >
10377 </ div >
10478 ) ;
10579}
80+
81+ export function DotsBackgroundPattern ( props : { className ?: string } ) {
82+ return (
83+ < div
84+ className = { cn (
85+ "pointer-events-none absolute inset-0 text-foreground/30 dark:text-foreground/10" ,
86+ props . className ,
87+ ) }
88+ style = { {
89+ backgroundImage : "radial-gradient(currentColor 1px, transparent 1px)" ,
90+ backgroundSize : "24px 24px" ,
91+ maskImage :
92+ "radial-gradient(ellipse 100% 100% at 50% 50%, black 30%, transparent 50%)" ,
93+ } }
94+ />
95+ ) ;
96+ }
0 commit comments