From ddeb25446e487890fd91626b4bdad471b203ba33 Mon Sep 17 00:00:00 2001 From: Yves Gugger Date: Sat, 13 Dec 2025 18:16:17 +0100 Subject: [PATCH] fix: Yield slider fixed, pricing features aligned with docs --- frontend/src/app/pricing/page.tsx | 27 ++-- frontend/src/app/terminal/portfolio/page.tsx | 129 ++++++++++--------- frontend/src/app/yield/page.tsx | 25 ++-- 3 files changed, 99 insertions(+), 82 deletions(-) diff --git a/frontend/src/app/pricing/page.tsx b/frontend/src/app/pricing/page.tsx index 0e3b4d5..a66c56a 100644 --- a/frontend/src/app/pricing/page.tsx +++ b/frontend/src/app/pricing/page.tsx @@ -22,10 +22,11 @@ const tiers = [ { text: 'Market Overview', highlight: false, available: true }, { text: 'Basic Search', highlight: false, available: true }, { text: '5 Watchlist Domains', highlight: false, available: true }, - { text: 'Market Feed', highlight: false, available: true, sublabel: '🌪️ Raw' }, - { text: 'Alert Speed', highlight: false, available: true, sublabel: '🐢 Daily' }, + { text: 'Market Feed', highlight: false, available: true, sublabel: 'Raw' }, + { text: 'Alert Speed', highlight: false, available: true, sublabel: 'Daily' }, { text: 'Pounce Score', highlight: false, available: false }, { text: '2 Sniper Alerts', highlight: false, available: true }, + { text: 'Marketplace', highlight: false, available: true, sublabel: 'Buy Only' }, ], cta: 'Start Free', highlighted: false, @@ -41,13 +42,13 @@ const tiers = [ description: 'The smart investor\'s choice.', features: [ { text: '50 Watchlist Domains', highlight: true, available: true }, - { text: 'Market Feed', highlight: true, available: true, sublabel: '✨ Curated' }, - { text: 'Alert Speed', highlight: true, available: true, sublabel: '🐇 Hourly' }, - { text: 'Renewal Price Intel', highlight: true, available: true }, + { text: 'Market Feed', highlight: true, available: true, sublabel: 'Curated' }, + { text: 'Alert Speed', highlight: true, available: true, sublabel: 'Hourly' }, + { text: 'TLD Intel', highlight: true, available: true, sublabel: 'Renewal Prices' }, { text: 'Pounce Score', highlight: true, available: true }, { text: '5 Listings', highlight: true, available: true, sublabel: '0% Fee' }, { text: '10 Sniper Alerts', highlight: true, available: true }, - { text: 'Portfolio (25 domains)', highlight: true, available: true }, + { text: 'Portfolio', highlight: true, available: true, sublabel: '25 Domains' }, ], cta: 'Upgrade to Trader', highlighted: true, @@ -63,13 +64,13 @@ const tiers = [ description: 'For serious domain investors.', features: [ { text: '500 Watchlist Domains', highlight: true, available: true }, - { text: 'Market Feed', highlight: true, available: true, sublabel: '⚡ Priority' }, - { text: 'Alert Speed', highlight: true, available: true, sublabel: '⚡ 10 min' }, - { text: 'Unlimited Portfolio', highlight: true, available: true }, + { text: 'Market Feed', highlight: true, available: true, sublabel: 'Priority' }, + { text: 'Alert Speed', highlight: true, available: true, sublabel: 'Real-Time' }, + { text: 'TLD Intel', highlight: true, available: true, sublabel: 'Full History' }, { text: 'Score + SEO Data', highlight: true, available: true }, { text: '50 Listings', highlight: true, available: true, sublabel: 'Featured' }, { text: '50 Sniper Alerts', highlight: true, available: true }, - { text: 'Full Price History', highlight: true, available: true }, + { text: 'Unlimited Portfolio', highlight: true, available: true }, ], cta: 'Go Tycoon', highlighted: false, @@ -79,10 +80,10 @@ const tiers = [ ] const comparisonFeatures = [ - { name: 'Market Feed', scout: 'Raw', trader: 'Curated', tycoon: 'Priority' }, - { name: 'Alert Speed', scout: 'Daily', trader: 'Hourly', tycoon: '10 min' }, + { name: 'Market Feed', scout: 'Raw (Unfiltered)', trader: 'Curated (Spam-Free)', tycoon: 'Curated + Priority' }, + { name: 'Alert Speed', scout: 'Daily', trader: 'Hourly', tycoon: 'Real-Time (10 min)' }, { name: 'Watchlist', scout: '5 Domains', trader: '50 Domains', tycoon: '500 Domains' }, - { name: 'Listings', scout: '—', trader: '5 (0% Fee)', tycoon: '50 Featured' }, + { name: 'Marketplace', scout: 'Buy Only', trader: 'Sell (0% Fee)', tycoon: 'Sell + Featured' }, { name: 'TLD Intel', scout: 'Public Trends', trader: 'Renewal Prices', tycoon: 'Full History' }, { name: 'Valuation', scout: 'Locked', trader: 'Pounce Score', tycoon: 'Score + SEO' }, { name: 'Sniper Alerts', scout: '2', trader: '10', tycoon: '50' }, diff --git a/frontend/src/app/terminal/portfolio/page.tsx b/frontend/src/app/terminal/portfolio/page.tsx index cf3dced..d59fa07 100755 --- a/frontend/src/app/terminal/portfolio/page.tsx +++ b/frontend/src/app/terminal/portfolio/page.tsx @@ -298,15 +298,8 @@ export default function PortfolioPage() { {/* ADD DOMAIN + FILTERS */}
-
- - - {/* Filters */} +
+ {/* Filters - LEFT */}
{[ { value: 'all', label: 'All', count: stats.total }, @@ -327,6 +320,14 @@ export default function PortfolioPage() { ))}
+ + {/* Add Domain Button - RIGHT */} +
@@ -351,7 +352,7 @@ export default function PortfolioPage() { ) : (
{/* Desktop Table Header */} -
+
Actions
@@ -442,44 +443,47 @@ export default function PortfolioPage() {
{/* Desktop Row */} -
+
+ {/* Domain Info */}
{domain.is_sold ? : domain.is_dns_verified ? : }
-
-
{domain.domain}
-
- {domain.registrar || 'Unknown'} - {domain.is_sold && SOLD} - {!domain.is_sold && domain.is_dns_verified && VERIFIED} - {!domain.is_sold && !domain.is_dns_verified && UNVERIFIED} +
+
+ {domain.domain} + + + +
+
+ {domain.registrar || '—'} + {domain.is_sold && Sold} + {!domain.is_sold && domain.is_dns_verified && Verified} + {!domain.is_sold && !domain.is_dns_verified && Unverified}
- - -
- {/* Purchase */} -
+ {/* Purchase Price */} +
{formatCurrency(domain.purchase_price)}
- {/* Value */} -
+ {/* Estimated Value */} +
{formatCurrency(domain.estimated_value)}
- {/* ROI */} -
+ {/* ROI Badge */} +
{roiPositive ? : } @@ -487,26 +491,26 @@ export default function PortfolioPage() {
- {/* Renewal */} -
+ {/* Renewal/Expiry */} +
{domain.is_sold ? ( - + ) : isRenewingSoon ? ( {daysUntilRenewal}d ) : ( - {formatDate(domain.renewal_date)} + {formatDate(domain.renewal_date)} )}
- {/* Actions */} -
- {/* Verification Status & Actions */} + {/* Actions - Better organized */} +
+ {/* Primary Action - Verify or Sell */} {!domain.is_sold && ( domain.is_dns_verified ? ( canListForSale && ( Sell @@ -514,32 +518,39 @@ export default function PortfolioPage() { ) : ( ) )} - - - + + {/* Secondary Actions - Icon Buttons */} +
+ + + +
diff --git a/frontend/src/app/yield/page.tsx b/frontend/src/app/yield/page.tsx index d64b071..edaf9d3 100644 --- a/frontend/src/app/yield/page.tsx +++ b/frontend/src/app/yield/page.tsx @@ -78,7 +78,7 @@ function YieldSimulator() { Monthly Traffic {traffic.toLocaleString()} Visits
-
+
setTraffic(parseInt(e.target.value))} - className="absolute w-full h-1 bg-white/10 rounded-full appearance-none cursor-pointer z-20 - [&::-webkit-slider-thumb]:appearance-none [&::-webkit-slider-thumb]:w-3 [&::-webkit-slider-thumb]:h-3 - [&::-webkit-slider-thumb]:bg-white [&::-webkit-slider-thumb]:rounded-full - [&::-webkit-slider-thumb]:shadow-[0_0_10px_rgba(255,255,255,0.8)]" - /> -
-
+
+ 100 + 5,000 +
{/* Input 2: Vertical Selector (Grid) */}