"use client" import React from "react" import { Alert, AlertDescription, AlertTitle } from "@/components/ui/alert" import { Button } from "@/components/ui/button" import { Badge } from "@/components/ui/badge" import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card" import { Dialog, DialogContent, DialogDescription, DialogHeader, DialogTitle, DialogTrigger } from "@/components/ui/dialog" import { AlertTriangle, CheckCircle, Info, X, Eye, Edit, Copy, Lightbulb, AlertCircle } from "lucide-react" import { BuildComparison } from "@/lib/duplicate-detector" interface DuplicateWarningProps { comparisons: BuildComparison[] onDismiss: () => void onViewSimilar: (buildId: string) => void onEditSimilar: (buildId: string) => void onProceedAnyway: () => void onModifyBuild: () => void } export function DuplicateWarning({ comparisons, onDismiss, onViewSimilar, onEditSimilar, onProceedAnyway, onModifyBuild }: DuplicateWarningProps) { const exactDuplicates = comparisons.filter(c => c.similarityScore >= 0.95) const similarBuilds = comparisons.filter(c => c.similarityScore >= 0.6 && c.similarityScore < 0.95) if (comparisons.length === 0) return null return (
{/* Exact Duplicates Alert */} {exactDuplicates.length > 0 && ( Exact Duplicates Detected We found {exactDuplicates.length} build(s) that are nearly identical to yours. Consider updating the existing build instead of creating a new one. )} {/* Similar Builds Alert */} {similarBuilds.length > 0 && ( Similar Builds Found We found {similarBuilds.length} build(s) that are very similar to yours. Review them to ensure your build is unique. )} {/* Detailed Comparison Cards */}
{comparisons.slice(0, 3).map((comparison, index) => ( = 0.95 ? 'border-l-red-500 bg-red-50 dark:bg-red-950' : 'border-l-yellow-500 bg-yellow-50 dark:bg-yellow-950' }`}>
{comparison.existingBuildName} = 0.95 ? "destructive" : "secondary"}> {Math.round(comparison.similarityScore * 100)}% match
{/* Duplicate Reasons */} {comparison.duplicateReasons.length > 0 && (

Why it's similar:

    {comparison.duplicateReasons.map((reason, reasonIndex) => (
  • {reason}
  • ))}
)} {/* Suggested Actions */} {comparison.suggestedActions.length > 0 && (

Suggestions:

    {comparison.suggestedActions.map((action, actionIndex) => (
  • {action}
  • ))}
)} {/* Action Buttons */}
))}
{/* Action Buttons */}
{/* Additional Info */}

Why we check for duplicates:

  • • Prevents cluttering your build library with similar builds
  • • Helps you organize and manage your builds better
  • • Suggests improvements to make your builds more unique
  • • Maintains a clean, organized build collection
) } interface DuplicateCheckDialogProps { open: boolean onOpenChange: (open: boolean) => void comparisons: BuildComparison[] onViewSimilar: (buildId: string) => void onEditSimilar: (buildId: string) => void onProceedAnyway: () => void onModifyBuild: () => void } export function DuplicateCheckDialog({ open, onOpenChange, comparisons, onViewSimilar, onEditSimilar, onProceedAnyway, onModifyBuild }: DuplicateCheckDialogProps) { return ( Duplicate Build Detection We found similar builds in your collection. Review them before proceeding. onOpenChange(false)} onViewSimilar={onViewSimilar} onEditSimilar={onEditSimilar} onProceedAnyway={() => { onProceedAnyway() onOpenChange(false) }} onModifyBuild={() => { onModifyBuild() onOpenChange(false) }} /> ) }