({ edits }: { edits: EditPair[] })
| 52 | } |
| 53 | |
| 54 | function EditDiffDisplay({ edits }: { edits: EditPair[] }) { |
| 55 | return ( |
| 56 | <div className="space-y-3"> |
| 57 | {edits.map((edit, index) => ( |
| 58 | <div |
| 59 | key={`${(edit.search || "").slice(0, 50)}-${(edit.replace || "").slice(0, 50)}-${index}`} |
| 60 | className="rounded-lg border border-border/50 overflow-hidden bg-background/50" |
| 61 | > |
| 62 | <div className="px-3 py-1.5 bg-muted/40 border-b border-border/30 flex items-center gap-2"> |
| 63 | <span className="text-xs font-medium text-muted-foreground"> |
| 64 | Change {index + 1} |
| 65 | </span> |
| 66 | </div> |
| 67 | <div className="divide-y divide-border/30"> |
| 68 | {/* Search (old) */} |
| 69 | <div className="px-3 py-2"> |
| 70 | <div className="flex items-center gap-1.5 mb-1.5"> |
| 71 | <Minus className="w-3 h-3 text-red-500" /> |
| 72 | <span className="text-[10px] font-medium text-red-600 uppercase tracking-wide"> |
| 73 | Remove |
| 74 | </span> |
| 75 | </div> |
| 76 | <pre className="text-[11px] font-mono text-red-700 bg-red-50 rounded px-2 py-1.5 overflow-x-auto whitespace-pre-wrap break-all"> |
| 77 | {edit.search} |
| 78 | </pre> |
| 79 | </div> |
| 80 | {/* Replace (new) */} |
| 81 | <div className="px-3 py-2"> |
| 82 | <div className="flex items-center gap-1.5 mb-1.5"> |
| 83 | <Plus className="w-3 h-3 text-green-500" /> |
| 84 | <span className="text-[10px] font-medium text-green-600 uppercase tracking-wide"> |
| 85 | Add |
| 86 | </span> |
| 87 | </div> |
| 88 | <pre className="text-[11px] font-mono text-green-700 bg-green-50 rounded px-2 py-1.5 overflow-x-auto whitespace-pre-wrap break-all"> |
| 89 | {edit.replace} |
| 90 | </pre> |
| 91 | </div> |
| 92 | </div> |
| 93 | </div> |
| 94 | ))} |
| 95 | </div> |
| 96 | ) |
| 97 | } |
| 98 | |
| 99 | import { useDiagram } from "@/contexts/diagram-context" |
| 100 |
nothing calls this directly
no outgoing calls
no test coverage detected