import { useQuery } from '@tanstack/react-query'; import { Box, Typography, Skeleton, Accordion, AccordionSummary, AccordionDetails, Button, Chip, } from '@mui/material'; import ExpandMoreIcon from '@mui/icons-material/ExpandMore'; import ContentCopyIcon from '@mui/icons-material/ContentCopy'; import { adminApi } from '../../lib/api/admin'; import { formatCurrency } from '../../lib/format'; import type { EditableLineItem } from './LineItemEditor'; interface SimilarProposal { proposalNumber: string; customerName: string; serviceCategory: string; similarityScore: number; totalBidAmount: number; lineItems: Array<{ description: string; quantity: number; unit: string; unitPrice: number | null; totalPrice: number; }>; } interface SimilarProposalsPanelProps { proposalId: string; onPullLineItem: (item: Omit) => void; disabled?: boolean; } export default function SimilarProposalsPanel({ proposalId, onPullLineItem, disabled }: SimilarProposalsPanelProps) { const { data: similar, isLoading } = useQuery({ queryKey: ['similarProposals', proposalId], queryFn: () => adminApi.getSimilar(proposalId) as Promise, enabled: !!proposalId, }); if (isLoading) { return ( Similar Proposals {Array.from({ length: 3 }).map((_, i) => ( ))} ); } return ( Similar Proposals {similar && similar.length > 0 && `(${similar.length})`} {similar?.map((sp, idx) => ( } sx={{ minHeight: 'auto', px: 1 }}> {sp.proposalNumber} {sp.customerName} - {sp.serviceCategory} {sp.lineItems.map((li, liIdx) => ( {li.description} {li.quantity} {li.unit} @ {formatCurrency(li.totalPrice)} {!disabled && ( )} ))} ))} ); }