From 0f3539f14d071ddfcd457615d25c4b2a64e2d86e Mon Sep 17 00:00:00 2001 From: Manan Tank Date: Sat, 24 Jan 2026 16:28:30 +0530 Subject: [PATCH 1/2] portal: landing page ui improvements --- apps/portal/src/app/page.tsx | 317 +++++++++--------- apps/portal/src/components/AI/chat-button.tsx | 4 +- 2 files changed, 168 insertions(+), 153 deletions(-) diff --git a/apps/portal/src/app/page.tsx b/apps/portal/src/app/page.tsx index e102ae88740..5afe6b8ccdc 100644 --- a/apps/portal/src/app/page.tsx +++ b/apps/portal/src/app/page.tsx @@ -2,35 +2,29 @@ import { ArchiveIcon, ArrowUpRightIcon, BrainIcon, + BringToFrontIcon, CoinsIcon, + GlobeIcon, ZapIcon, } from "lucide-react"; -import Image from "next/image"; import Link from "next/link"; -import { Heading } from "@/components/Document"; import { ChatButton } from "../components/AI/chat-button"; import { Button } from "../components/ui/button"; import { DotNetIcon, - ExternalLinkIcon, ReactIcon, TypeScriptIcon, UnityIcon, UnrealEngineIcon, } from "../icons"; import { ConnectIcon } from "../icons/products/ConnectIcon"; -import DocsHeroDark from "./_images/docs-hero-dark.png"; -import DocsHeroLight from "./_images/docs-hero-light.png"; export default function Page() { return ( -
+
-
- +
+
@@ -40,221 +34,242 @@ export default function Page() { function Hero() { return ( -
- {/* Left */} -
-
-

- thirdweb Documentation -

-

- Platform for building the next generation of internet products -

-
- - -
-
+
+ {/* Badge */} +
+ Developer Documentation
- {/* right */} -
- - + {/* Title */} +

+ Build the next generation of internet products +

+ + {/* Subtitle */} +

+ Where users and AI can spend, earn and transact autonomously. +

+ + {/* CTAs */} +
+ +
); } -function ArchiveSection() { +function SectionHeader(props: { title: string; description: string }) { + return ( +
+

+ {props.title} +

+

{props.description}

+
+ ); +} + +function ReferenceSection() { return (
- +
- + + + + + +
+
+ ); +} + +function ArchiveSection() { + return ( +
+

+ Archived Documentation +

+
+ - - -
); } -function ReferenceSection() { +function ProductsSection() { return (
-
- - - - - - -
-
- ); -} - -function LearningResourcesSection() { - return ( -
- -
- - - - - -
); } -function SectionTitle(props: { title: string; anchorId: string }) { - return ( - - {props.title} - - ); -} - -/*** - * This component is only for the index page - */ -function ArticleCardIndex(props: { +function Card(props: { title: string; - description: string; + description?: string; href: string; icon: React.FC<{ className?: string }>; external?: boolean; }) { return ( -
-
-
- + + {/* Icon */} +
+
+
-

- - {props.title} - -

-

{props.description}

-
+ + {/* Content */} +
+

{props.title}

+ {props.description && ( +

+ {props.description} +

+ )} +
+ ); } -function SDKCard(props: { +function MinimalCard(props: { title: string; + description?: string; href: string; icon: React.FC<{ className?: string }>; + external?: boolean; }) { return ( -
-
- + +
+
-
-

- - {props.title} - -

-

- View docs - -

+ + {/* Content */} +
+

{props.title}

+ {props.description && ( +

+ {props.description} +

+ )}
-
+ ); } diff --git a/apps/portal/src/components/AI/chat-button.tsx b/apps/portal/src/components/AI/chat-button.tsx index d61e99d3b74..6f20b67b51f 100644 --- a/apps/portal/src/components/AI/chat-button.tsx +++ b/apps/portal/src/components/AI/chat-button.tsx @@ -10,7 +10,7 @@ const Chat = lazy(() => import("./chat").then((mod) => ({ default: mod.Chat })), ); -export function ChatButton() { +export function ChatButton(props: { className?: string }) { const [isOpen, setIsOpen] = useState(false); const [hasBeenOpened, setHasBeenOpened] = useState(false); const closeModal = useCallback(() => setIsOpen(false), []); @@ -20,7 +20,7 @@ export function ChatButton() { <> {/* Inline Button (not floating) */}