'use client'; import { useMemo } from 'react'; import * as Diff from 'diff'; interface DiffViewerProps { oldContent: string; newContent: string; } interface DiffLine { type: 'added' | 'removed' | 'unchanged'; content: string; oldLineNum?: number; newLineNum?: number; } export function DiffViewer({ oldContent, newContent }: DiffViewerProps) { const diffLines = useMemo(() => { const changes = Diff.diffLines(oldContent, newContent); const lines: DiffLine[] = []; let oldLineNum = 1; let newLineNum = 1; for (const change of changes) { const changeLines = change.value.split('\n'); // Remove empty last line from split if (changeLines[changeLines.length - 1] === '') { changeLines.pop(); } for (const line of changeLines) { if (change.added) { lines.push({ type: 'added', content: line, newLineNum: newLineNum++, }); } else if (change.removed) { lines.push({ type: 'removed', content: line, oldLineNum: oldLineNum++, }); } else { lines.push({ type: 'unchanged', content: line, oldLineNum: oldLineNum++, newLineNum: newLineNum++, }); } } } return lines; }, [oldContent, newContent]); // Split into old and new columns const oldLines = diffLines.filter(l => l.type !== 'added'); const newLines = diffLines.filter(l => l.type !== 'removed'); return (