import { useState } from 'react';
import { useSearchParams } from 'react-router-dom';
import { useQuery } from '@tanstack/react-query';
import { analysisApi } from '../api/client';
import { GitCompareArrows, AlertCircle, FileText, Clock } from 'lucide-react';
import type { CompanyAnalysis } from '../types';
function CompanyPanel({ data, isLoading, isError }: { data?: CompanyAnalysis; isLoading: boolean; isError: boolean }) {
if (isLoading) {
return (
);
}
if (isError) {
return (
Failed to load analysis. Check the company name and try again.
);
}
if (!data) return null;
return (
{data.company_name.toUpperCase()}
{data.patent_count}
Patents
{new Date(data.timestamp).toLocaleDateString()}
Analyzed
{data.success && data.analysis ? (
{data.analysis}
) : (
{data.error || 'Analysis not available'}
)}
);
}
export function Compare() {
const [searchParams, setSearchParams] = useSearchParams();
const [companyA, setCompanyA] = useState(searchParams.get('a') || '');
const [companyB, setCompanyB] = useState(searchParams.get('b') || '');
const queryA = searchParams.get('a') || '';
const queryB = searchParams.get('b') || '';
const resultA = useQuery({
queryKey: ['analyze', queryA],
queryFn: () => analysisApi.analyzeCompany(queryA),
enabled: !!queryA,
});
const resultB = useQuery({
queryKey: ['analyze', queryB],
queryFn: () => analysisApi.analyzeCompany(queryB),
enabled: !!queryB,
});
const handleCompare = (e: React.FormEvent) => {
e.preventDefault();
const a = companyA.trim();
const b = companyB.trim();
if (a && b) {
setSearchParams({ a, b });
}
};
return (
{/* Header */}
Portfolio Comparison
Compare patent portfolios of two companies side by side.
{/* Input Form */}
{/* Comparison Panels */}
{(queryA || queryB) && (
{queryA && (
)}
{queryB && (
)}
)}
);
}