import React, { useState, useEffect } from 'react'; import { motion } from 'framer-motion'; import { useUserStore } from '@/store/userStore'; import apiService from '@/services/api'; import SimulatorChart from './SimulatorChart'; import { GitCompare, Download, ArrowUpRight, ArrowDownRight } from 'lucide-react'; import { ResponsiveContainer, BarChart, Bar, XAxis, YAxis, CartesianGrid, Tooltip } from 'recharts'; const ComparisonTab: React.FC = () => { const { isDark } = useUserStore(); const [scenarios, setScenarios] = useState([]); const [comparison, setComparison] = useState(null); const [loading, setLoading] = useState(true); const cardBg = isDark ? 'rgba(255,255,255,0.03)' : '#ffffff'; const cardBorder = isDark ? 'rgba(255,255,255,0.06)' : 'rgba(0,0,0,0.06)'; const textPrimary = isDark ? '#f8fafc' : '#0f172a'; const textMuted = isDark ? '#94a3b8' : '#64748b'; useEffect(() => { const fetchData = async () => { try { const savedRes = await apiService.listScenarios(); const saved = savedRes.data || []; setScenarios(saved); const compRes = await apiService.compareScenarios( saved.length > 0 ? saved.map((s: any) => s.id) : [] ); setComparison(compRes.data); } catch (err) { console.error(err); } finally { setLoading(false); } }; fetchData(); }, []); if (loading) return
; const comps = comparison?.comparisons || []; const chartData = comps.map((c: any) => ({ name: c.name, prediction: c.prediction || 0, impact: c.impact || c.impact_percentage || 0, confidence: c.confidence || 90, })); return (
{/* Header */}

Scenario Comparison & Trade-off Analysis

{/* Comparison Table */}
{comps.map((c: any, i: number) => ( ))} {comps.map((c: any, i: number) => ( ))} {comps.map((c: any, i: number) => { const imp = c.impact || c.impact_percentage || 0; return ( ); })} {comps.map((c: any, i: number) => ( ))}
Metric / Scenario {c.name}
Target Prediction {c.formatted_prediction || c.prediction?.toLocaleString()}
Impact vs Baseline = 0 ? 'text-emerald-500' : 'text-red-500'}`}> {imp >= 0 ? : } {imp >= 0 ? '+' : ''}{imp.toFixed(1)}%
AI Confidence Score {(c.confidence || 90).toFixed(1)}%
{/* Grouped Comparison Chart */}

Target Metric Comparison

); }; export default ComparisonTab;