From 1a4b0eb9844e796347439b2ec9d401daa6fb8bfb Mon Sep 17 00:00:00 2001 From: Yves Gugger Date: Fri, 12 Dec 2025 21:30:04 +0100 Subject: [PATCH] Radar & Watchlist: smaller fonts, no header, laptop optimized --- frontend/src/app/terminal/radar/page.tsx | 574 +++++++--------- frontend/src/app/terminal/watchlist/page.tsx | 622 +++++++++--------- .../src/components/CommandCenterLayout.tsx | 15 +- 3 files changed, 570 insertions(+), 641 deletions(-) diff --git a/frontend/src/app/terminal/radar/page.tsx b/frontend/src/app/terminal/radar/page.tsx index 70ff9a3..b2e5d61 100644 --- a/frontend/src/app/terminal/radar/page.tsx +++ b/frontend/src/app/terminal/radar/page.tsx @@ -8,22 +8,17 @@ import { Toast, useToast } from '@/components/Toast' import { Eye, Gavel, - Clock, ExternalLink, Plus, Activity, - Search, ArrowRight, CheckCircle2, XCircle, Loader2, Crosshair, - Radar, Zap, Globe, - Target, - Cpu, - Radio + Target } from 'lucide-react' import clsx from 'clsx' import Link from 'next/link' @@ -40,13 +35,6 @@ interface HotAuction { affiliate_url?: string } -interface TrendingTld { - tld: string - current_price: number - price_change: number - reason: string -} - interface SearchResult { domain: string status: string @@ -58,40 +46,6 @@ interface SearchResult { auctionData?: HotAuction } -// ============================================================================ -// ANIMATED RADAR COMPONENT -// ============================================================================ - -function RadarAnimation() { - return ( -
- {/* Outer Ring */} -
-
-
-
- - {/* Crosshairs */} -
-
- - {/* Sweeping Line */} -
- - {/* Center Dot */} -
- - {/* Blips */} -
-
-
-
- ) -} - // ============================================================================ // LIVE TICKER // ============================================================================ @@ -99,16 +53,16 @@ function RadarAnimation() { function LiveTicker({ items }: { items: { label: string; value: string; highlight?: boolean }[] }) { return (
-
-
+
+
-
+
{[...items, ...items, ...items].map((item, i) => ( -
- {item.label} +
+ {item.label} {item.value}
))} @@ -139,7 +93,7 @@ export default function RadarPage() { const loadDashboardData = useCallback(async () => { try { const summary = await api.getDashboardSummary() - setHotAuctions((summary.market.ending_soon_preview || []).slice(0, 6)) + setHotAuctions((summary.market.ending_soon_preview || []).slice(0, 5)) setMarketStats({ totalAuctions: summary.market.total_auctions || 0, endingSoon: summary.market.ending_soon || 0, @@ -210,320 +164,258 @@ export default function RadarPage() { const totalDomains = domains?.length || 0 const tickerItems = [ - { label: 'System', value: 'ONLINE', highlight: true }, - { label: 'Targets', value: totalDomains.toString() }, - { label: 'Opportunities', value: availableDomains.length.toString(), highlight: availableDomains.length > 0 }, - { label: 'Market', value: `${marketStats.totalAuctions} Active` }, - { label: 'Latency', value: '12ms' }, + { label: 'Status', value: 'ONLINE', highlight: true }, + { label: 'Tracking', value: totalDomains.toString() }, + { label: 'Available', value: availableDomains.length.toString(), highlight: availableDomains.length > 0 }, + { label: 'Auctions', value: marketStats.totalAuctions.toString() }, ] return ( - + {toast && } -
- - {/* ═══════════════════════════════════════════════════════════════════════ */} - {/* HERO SECTION - CINEMATIC */} - {/* ═══════════════════════════════════════════════════════════════════════ */} -
-
-
- + {/* ═══════════════════════════════════════════════════════════════════════ */} + {/* HERO - Compact for Laptops */} + {/* ═══════════════════════════════════════════════════════════════════════ */} +
+
+ + {/* Left: Typography */} +
+
+
+ + Intelligence Hub + +
+ +

+ Global Recon. + Zero Blind Spots. +

+ +

+ Real-time monitoring across {marketStats.totalAuctions.toLocaleString()}+ auctions. + Your targets. Your intel. +

+ + {/* Stats Row */} +
+
+
{totalDomains}
+
Tracking
+
+
+
{availableDomains.length}
+
Available
+
+
+
{marketStats.endingSoon}
+
Ending Soon
+
-
-
+ {/* Right: Search Terminal */} +
+
+ +
+ {/* Tech Corners */} +
+
+
+
- {/* Left: Typography */} -
-
-
- - Intelligence Hub // Active +
+ {/* Header */} +
+ + + Target Acquisition +
+
+
+
+
-

- Global - Recon. - - Zero Blind Spots. - -

- -

- Scanning {marketStats.totalAuctions.toLocaleString()}+ auction listings across all major platforms. - Your targets. Your intel. -

- - {/* Stats Row */} -
-
-
{totalDomains}
-
Tracking
-
-
-
{availableDomains.length}
-
Ready
-
-
-
{marketStats.endingSoon}
-
Ending Soon
-
+ {/* Input */} +
+
{'>'}
+ setSearchQuery(e.target.value)} + onFocus={() => setSearchFocused(true)} + onBlur={() => setSearchFocused(false)} + placeholder="ENTER_TARGET..." + className="w-full bg-black/50 px-8 py-4 text-lg lg:text-xl text-white placeholder:text-white/15 font-mono uppercase tracking-tight outline-none" + /> + {searchQuery && ( + + )}
-
- - {/* Right: Search Terminal */} -
-
-
- {/* Tech Corners */} -
-
-
-
- -
- {/* Header */} -
- - - Target Acquisition - -
-
-
-
+ {/* Results */} + {searchResult && ( +
+ {searchResult.loading ? ( +
+ + Scanning...
-
- - {/* Input */} -
-
{'>'}
- setSearchQuery(e.target.value)} - onFocus={() => setSearchFocused(true)} - onBlur={() => setSearchFocused(false)} - placeholder="ENTER_TARGET..." - className="w-full bg-black/50 px-10 py-5 text-2xl text-white placeholder:text-white/20 font-mono uppercase tracking-tight outline-none" - /> - {searchQuery && ( - - )} -
- - {/* Results */} - {searchResult && ( -
- {searchResult.loading ? ( -
- - Scanning registries... -
- ) : ( -
-
-
- {searchResult.is_available ? ( -
- ) : ( -
- )} - {searchResult.domain} -
- - {searchResult.is_available ? 'AVAILABLE' : 'REGISTERED'} - -
- - {searchResult.is_available && ( -
- - - ACQUIRE - -
+ ) : ( +
+
+
+ {searchResult.is_available ? ( +
+ ) : ( +
)} + {searchResult.domain} +
+ + {searchResult.is_available ? 'AVAILABLE' : 'TAKEN'} + +
+ + {searchResult.is_available && ( +
+ + + GET +
)}
)} - - {/* Footer */} -
- SECURE_CONNECTION - V2.1.0 -
-
-
-
-
-
-
- - {/* Ticker */} - - - {/* ═══════════════════════════════════════════════════════════════════════ */} - {/* LIVE FEED SECTION */} - {/* ═══════════════════════════════════════════════════════════════════════ */} -
-
- - {/* Section Header */} -
-
- Live Feed -

- Market
- Operations. -

-
-
-
-
- Live Updates -
- - Full Feed - -
-
- - {/* Grid */} -
- - {/* Hot Auctions */} -
-
-
- -
-
-

Active Auctions

-

Real-time market data

-
-
- - {loadingData ? ( -
- -
- ) : hotAuctions.length > 0 ? ( - - ) : ( -
- No active auctions
)} -
- - {/* Quick Actions */} -
-
-
- -
-
-

Quick Access

-

Navigation

-
-
-
- {[ - { label: 'Watchlist', desc: 'Your targets', href: '/terminal/watchlist', icon: Eye }, - { label: 'Market', desc: 'All auctions', href: '/terminal/market', icon: Gavel }, - { label: 'Intel', desc: 'TLD pricing', href: '/terminal/intel', icon: Globe }, - ].map((item) => ( - - -
-
{item.label}
-
{item.desc}
-
- - - ))} -
- - {/* System Status */} -
-
System Status
-
-
-
- All Systems Operational -
- 99.9% -
+ {/* Footer */} +
+ SECURE + V2.1
-
-
+
+
-
+ {/* Ticker */} + + + {/* ═══════════════════════════════════════════════════════════════════════ */} + {/* CONTENT GRID */} + {/* ═══════════════════════════════════════════════════════════════════════ */} +
+
+ + {/* Hot Auctions - 2 cols */} +
+
+
+ + Live Auctions +
+ + View All → + +
+ + {loadingData ? ( +
+ +
+ ) : hotAuctions.length > 0 ? ( + + ) : ( +
No active auctions
+ )} +
+ + {/* Quick Links */} +
+
+ + Quick Access +
+ +
+ {[ + { label: 'Watchlist', href: '/terminal/watchlist', icon: Eye }, + { label: 'Market', href: '/terminal/market', icon: Gavel }, + { label: 'Intel', href: '/terminal/intel', icon: Globe }, + ].map((item) => ( + + + {item.label} + + + ))} +
+ + {/* Status */} +
+
+
+ System Online +
+
+
+ +
+