diff --git a/biome.json b/biome.json index 46abf5884..63f7f6971 100644 --- a/biome.json +++ b/biome.json @@ -39,7 +39,8 @@ "noDuplicateArgumentNames": "error", "noDuplicatedSpreadProps": "error", "noFloatingPromises": "error", - "noShadow": "error" + "noShadow": "error", + "useSortedClasses": "error" } }, "domains": { diff --git a/frontend/example.env b/frontend/example.env new file mode 100644 index 000000000..1e106c80f --- /dev/null +++ b/frontend/example.env @@ -0,0 +1,10 @@ +# Required: which Solana cluster to connect to. +# Valid values: localnet, devnet, testnet, mainnet +NEXT_PUBLIC_CLUSTER=localnet + +# Optional: private/paid RPC URLs (server-side only, never exposed to the browser). +# Falls back to the public RPC URL for the selected cluster if not set. +# SERVER_LOCALNET_RPC_URL=http://localhost:8899 +# SERVER_DEVNET_RPC_URL=https://your-paid-rpc.example.com +# SERVER_TESTNET_RPC_URL=https://your-paid-rpc.example.com +# SERVER_MAINNET_RPC_URL=https://your-paid-rpc.example.com diff --git a/frontend/package.json b/frontend/package.json index 340e2e9fe..833ee9d70 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -8,13 +8,15 @@ "build": "next build", "check": "tsc --noEmit", "clean": "rm -rf .next", - "lint": "biome check .", + "lint": "biome check", "lint:fix": "pnpm lint --write", "format": "pnpm _format --write", "start": "next start" }, "dependencies": { "@base-ui/react": "^1.3.0", + "@solana/addresses": "catalog:", + "@solana/rpc-types": "catalog:", "@tanstack/react-query": "^5.95.2", "@tanstack/react-query-devtools": "^5.95.2", "class-variance-authority": "^0.7.1", diff --git a/frontend/public/icon.svg b/frontend/public/icon.svg new file mode 100644 index 000000000..40d5f0e7f --- /dev/null +++ b/frontend/public/icon.svg @@ -0,0 +1,47 @@ + diff --git a/frontend/src/app/globals.css b/frontend/src/app/globals.css index 1db9ba22e..054e26f23 100644 --- a/frontend/src/app/globals.css +++ b/frontend/src/app/globals.css @@ -3,11 +3,21 @@ :root { --background: #ffffff; --foreground: #171717; + --muted: #f5f5f5; + --muted-fg: #737373; + --border: #e5e5e5; + --accent: #3b82f6; + --accent-hover: #2563eb; } @theme inline { --color-background: var(--background); --color-foreground: var(--foreground); + --color-muted: var(--muted); + --color-muted-fg: var(--muted-fg); + --color-border: var(--border); + --color-accent: var(--accent); + --color-accent-hover: var(--accent-hover); --font-sans: var(--font-geist-sans); --font-mono: var(--font-geist-mono); } @@ -16,11 +26,16 @@ :root { --background: #0a0a0a; --foreground: #ededed; + --muted: #1a1a1a; + --muted-fg: #a3a3a3; + --border: #262626; + --accent: #60a5fa; + --accent-hover: #93bbfd; } } body { background: var(--background); color: var(--foreground); - font-family: var(--font-geist-sans); + font-family: var(--font-geist-sans), Arial, Helvetica, sans-serif; } diff --git a/frontend/src/app/info/page.tsx b/frontend/src/app/info/page.tsx new file mode 100644 index 000000000..8cc436225 --- /dev/null +++ b/frontend/src/app/info/page.tsx @@ -0,0 +1,10 @@ +export default function InfoPage() { + return ( +
Coming soon.
+