"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 */}
onViewSimilar(comparison.existingBuildId || '')}
className="text-xs h-7"
>
View
onEditSimilar(comparison.existingBuildId || '')}
className="text-xs h-7"
>
Edit
Modify Mine
))}
{/* Action Buttons */}
Proceed Anyway
Modify Build
{/* 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)
}}
/>
)
}