import { Link } from 'react-router-dom'; import { TrendingUp, TrendingDown, Minus, ChevronRight } from 'lucide-react'; import type { StockAnalysis, Decision } from '../types'; interface StockCardProps { stock: StockAnalysis; showDetails?: boolean; compact?: boolean; } export function DecisionBadge({ decision, size = 'default' }: { decision: Decision | null; size?: 'small' | 'default' }) { if (!decision) return null; const config = { BUY: { bg: 'bg-green-100 dark:bg-green-900/30', text: 'text-green-800 dark:text-green-400', icon: TrendingUp, }, SELL: { bg: 'bg-red-100 dark:bg-red-900/30', text: 'text-red-800 dark:text-red-400', icon: TrendingDown, }, HOLD: { bg: 'bg-amber-100 dark:bg-amber-900/30', text: 'text-amber-800 dark:text-amber-400', icon: Minus, }, }; const { bg, text, icon: Icon } = config[decision]; const sizeClasses = size === 'small' ? 'px-2 py-0.5 text-xs gap-1' : 'px-2.5 py-0.5 text-xs gap-1'; const iconSize = size === 'small' ? 'w-3 h-3' : 'w-3.5 h-3.5'; return ( {decision} ); } export function ConfidenceBadge({ confidence }: { confidence?: string }) { if (!confidence) return null; const colors = { HIGH: 'bg-green-50 dark:bg-green-900/20 text-green-700 dark:text-green-400 border-green-200 dark:border-green-800', MEDIUM: 'bg-amber-50 dark:bg-amber-900/20 text-amber-700 dark:text-amber-400 border-amber-200 dark:border-amber-800', LOW: 'bg-gray-50 dark:bg-gray-800 text-gray-700 dark:text-gray-300 border-gray-200 dark:border-gray-600', }; return ( {confidence} Confidence ); } export function RiskBadge({ risk }: { risk?: string }) { if (!risk) return null; const colors = { HIGH: 'text-red-600 dark:text-red-400', MEDIUM: 'text-amber-600 dark:text-amber-400', LOW: 'text-green-600 dark:text-green-400', }; return ( {risk} Risk ); } export default function StockCard({ stock, showDetails = true, compact = false }: StockCardProps) { if (compact) { return (
); } return (

{stock.symbol}

{stock.company_name}

{showDetails && (
)}
); } export function StockCardCompact({ stock }: { stock: StockAnalysis }) { return (
{stock.symbol} · {stock.company_name}
); }