import React from 'react'; import { PresetMarketplace } from '../components/PresetMarketplace'; import type { StrategyPreset } from '../lib/PresetRegistry'; import type { BotState } from '../hooks/useWebSocket'; import { TrendingUp, Brain } from 'lucide-react'; import { PageHeader } from '../components/ui/page-header'; import { Card, CardContent } from '../components/ui/card'; interface MarketplaceTabProps { onClone: (preset: StrategyPreset) => void; botState: BotState; } export const MarketplaceTab: React.FC = ({ onClone, botState }) => { const symbols = Object.keys(botState.symbols); const aiSetups = symbols .filter(s => botState.symbols[s]?.rules?.['AIAnalysisRule']?.metadata?.confidence !== undefined) .sort((a, b) => (botState.symbols[b]?.rules?.['AIAnalysisRule']?.metadata?.confidence || 0) - (botState.symbols[a]?.rules?.['AIAnalysisRule']?.metadata?.confidence || 0)) .slice(0, 5); const topVolatile = [...symbols] .sort((a, b) => Math.abs(botState.symbols[b].change24h || 0) - Math.abs(botState.symbols[a].change24h || 0)) .slice(0, 6); return (
{/* Contextual Intelligence Row */}
{/* AI Best Setups Panel */}
Best AI Setups
High-confidence signals — find the right strategy below
{aiSetups.map(s => { const conf = botState.symbols[s]?.rules['AIAnalysisRule']?.metadata?.confidence || 0; return (
{s}
{conf}%
); })} {aiSetups.length === 0 && (
AI analysis scanning markets...
)}
{/* Top Volatile Panel */}
Top Volatile (24h)
Most active markets — match with strategies below
{topVolatile.map(s => { const change = botState.symbols[s]?.change24h || 0; return (
{s.split('/')[0]} = 0 ? 'var(--bl-success)' : 'var(--bl-danger)' }}> {change >= 0 ? '+' : ''}{change.toFixed(2)}%
); })} {topVolatile.length === 0 && (
Scanning markets...
)}
{/* Strategy Marketplace Grid */}
); };