From b22c437b7d8b9185b22016c7e48c7dc87f8335b0 Mon Sep 17 00:00:00 2001 From: Vasanth T Date: Tue, 6 Oct 2026 10:48:38 +0530 Subject: [PATCH] ui: posts, how it works, agents and dashboard in the new style The section pages and the dashboard move to the flat card language with icon headers, chain logos, and the new buttons. --- app/src/app/about/page.tsx | 3 +- app/src/app/agents/page.tsx | 24 +-- app/src/app/feed/loading.tsx | 17 +- app/src/app/feed/page.tsx | 4 +- app/src/app/me/loading.tsx | 24 ++- app/src/app/me/page.tsx | 3 +- app/src/app/rules/page.tsx | 26 +-- app/src/components/Skeleton.tsx | 3 +- .../launchpad/MeDashboard.module.css | 159 +++++++++-------- app/src/components/launchpad/MeDashboard.tsx | 64 +++---- app/src/components/sections/Agents.module.css | 164 +++++++++--------- .../sections/CommunityFeed.module.css | 92 +++++----- app/src/components/sections/CommunityFeed.tsx | 22 ++- .../components/sections/RulesGuide.module.css | 128 +++++++------- 14 files changed, 400 insertions(+), 333 deletions(-) diff --git a/app/src/app/about/page.tsx b/app/src/app/about/page.tsx index b9d6b5d3..28fe3f59 100644 --- a/app/src/app/about/page.tsx +++ b/app/src/app/about/page.tsx @@ -1,7 +1,7 @@ import type { Metadata } from "next"; import { pageMetadata } from "@/lib/seo"; import Link from "next/link"; -import { ArrowRight, ArrowUpRight } from "lucide-react"; +import { ArrowRight, ArrowUpRight, Info } from "lucide-react"; import SectionIntro from "@/components/sections/SectionIntro"; import shell from "@/components/sections/SectionShell.module.css"; import { BRAND, BRAND_DOMAIN, BRAND_GITHUB, BRAND_X, LEGACY_DOMAIN } from "@/lib/brand"; @@ -34,6 +34,7 @@ export default function AboutPage() {
} title={`What ${BRAND} is`} description={<>{BRAND} is a free, open-source token launchpad. One transaction deploys a fixed-supply ERC-20, opens a Uniswap v4 pool at the market cap you pick and locks 100% of the supply as liquidity, forever. It runs on Base, Robinhood Chain and Arc.} > diff --git a/app/src/app/agents/page.tsx b/app/src/app/agents/page.tsx index 69a23c1d..950fbd15 100644 --- a/app/src/app/agents/page.tsx +++ b/app/src/app/agents/page.tsx @@ -1,6 +1,6 @@ import type { Metadata } from "next"; import { pageMetadata } from "@/lib/seo"; -import { ArrowDown, ArrowRight, ArrowUpRight, Braces, FileCode2, Terminal } from "lucide-react"; +import { ArrowDown, ArrowLeftRight, ArrowRight, ArrowUpRight, BookOpen, Bot, Braces, FileCode2, Rocket, Terminal } from "lucide-react"; import SectionIntro from "@/components/sections/SectionIntro"; import AgentsCodeBlock from "@/components/sections/AgentsCodeBlock"; import shell from "@/components/sections/SectionShell.module.css"; @@ -8,13 +8,15 @@ import styles from "@/components/sections/Agents.module.css"; import { launchpad } from "@/lib/launchpad/config"; import { CHAIN_KEYS, CHAIN_LABELS, CHAINS, SITE_URL, explorerAddress } from "@/lib/chainPublic"; import { BRAND_GITHUB } from "@/lib/brand"; +import { ChainLogo } from "@/components/launchpad/ChainLogo"; export const metadata: Metadata = pageMetadata({ path: "/agents", title: "Agents", description: "Launch and trade tokens from an agent: one contract call, plus a JSON API for the list, trades and metadata." }); +/** The page's sections, each with the mark its heading carries. */ const sections = [ - { id: "launch", number: "01", label: "Launch a token" }, - { id: "read", number: "02", label: "Read the API" }, - { id: "trade", number: "03", label: "Trade & collect" }, + { id: "launch", icon: Rocket, label: "Launch a token" }, + { id: "read", icon: BookOpen, label: "Read the API" }, + { id: "trade", icon: ArrowLeftRight, label: "Trade & collect" }, ] as const; const endpoints = [ @@ -34,13 +36,13 @@ export default function AgentsPage() { return (
- No API key, no signup, no platform fee. A launch is one contract call from any wallet with a little ETH for gas. Everything the site shows is also JSON.}> + } title="Agents" description={<>No API key, no signup, no platform fee. A launch is one contract call from any wallet with a little ETH for gas. Everything the site shows is also JSON.}> Explore the source
-
+

The interface is optional.The same protocol is yours to build with.

Start with a launch
@@ -48,19 +50,19 @@ export default function AgentsPage() {
-
01

Launch a token

One call, from your own wallet.

+

Launch a token

One call, from your own wallet.

{CHAIN_KEYS.map((chain) => { const config = launchpad(chain); return
-

{CHAIN_LABELS[chain]}

Chain {CHAINS[chain].id}
+

{CHAIN_LABELS[chain]}

Chain {CHAINS[chain].id}
{(["factory", "locker"] as const).map((contract) =>
{contract}
{config[contract] ? {config[contract]} : not deployed yet}
@@ -90,7 +92,7 @@ export default function AgentsPage() {
-
02

Read the API

JSON endpoints, plus a plain-text agent reference.

+

Read the API

JSON endpoints, plus a plain-text agent reference.

Public endpointsNo API key
{endpoints.map((endpoint) =>
@@ -106,7 +108,7 @@ export default function AgentsPage() {
-
03

Trade & collect

Standard pools. Direct contract calls.

+

Trade & collect

Standard pools. Direct contract calls.

Swap

Speak Uniswap v4

Pools are plain Uniswap v4, with tick spacing 200 and no hook. The quote can be ETH, TWIG (Base), GITLAWB (Base and Robinhood Chain), USDG (Robinhood Chain), USDC (Arc) or a supported issuer-registry stock token. Get the actual pool key with poolKeyOf(token) on the factory. Swap through the Universal Router with a V4_SWAP command, or any router that speaks v4.

Collect

Pay out accrued fees

Anyone may call collect(tokenId) on that chain's locker to pay out accrued fees. Base locker: {locker}. Use the matching chain address above.

diff --git a/app/src/app/feed/loading.tsx b/app/src/app/feed/loading.tsx index 80da5400..633acfa6 100644 --- a/app/src/app/feed/loading.tsx +++ b/app/src/app/feed/loading.tsx @@ -10,7 +10,7 @@ export default function Loading() { return (
-
+
@@ -19,13 +19,13 @@ export default function Loading() {
- +
-
+

    {Array.from({ length: 6 }, (_, i) => ( @@ -36,22 +36,21 @@ export default function Loading() {