"use client" import { useState } from "react" import type { ComparisonData } from "@/lib/types" import { ComparisonRadarChart } from "@/components/comparison/radar-chart" import { ComparisonTable } from "@/components/comparison/comparison-table" import { ComparisonBarChart } from "@/components/comparison/bar-chart" import { ScoreCard } from "@/components/comparison/score-card" import { ProsConsCard } from "@/components/comparison/pros-cons-card" import { useComparisonStream } from "@/hooks/use-comparison-stream" import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs" import { Badge } from "@/components/ui/badge" import { Button } from "@/components/ui/button" import { Separator } from "@/components/ui/separator" import { Skeleton } from "@/components/ui/skeleton" import { Share2, ArrowLeft, Loader2, Trophy, AlertCircle } from "lucide-react" import Link from "next/link" interface ComparisonResultsClientProps { initialData: ComparisonData } export function ComparisonResultsClient({ initialData }: ComparisonResultsClientProps) { const [data] = useState(initialData) const { progress } = useComparisonStream() const isResearching = data.status === "researching" || progress?.status === "researching" const handleShare = async () => { const url = window.location.href await navigator.clipboard.writeText(url) } const winner = [...data.items].sort((a, b) => b.overallScore - a.overallScore)[0] if (data.status === "failed") { return (

Comparison Failed

This comparison could not be completed. This may be due to a processing error or invalid input.

) } if (isResearching) { return (

{data.title}

{progress.message || "Research in progress..."}

) } return (

{data.title}

{data.summary}

{data.tags.map((tag) => ( {tag} ))}
Overview Charts Table Details {winner && (
Top pick: {winner.name} ({winner.overallScore.toFixed(1)}/10)
)}
{data.items.map((item, index) => ( ))}

Radar Chart

Visual comparison across all dimensions

Score Comparison

Side-by-side bar chart of dimension scores

{data.items.map((item, index) => ( ))}
) }