import { cn } from '@/lib/utils' interface DiffViewProps { diff: string } const DIFF_HEADER_PREFIXES = ['diff', 'index', '---', '+++', 'new file'] function classifyDiffLine(line: string): string { if (line.startsWith('+') && !line.startsWith('+++')) return 'bg-[var(--diff-added-bg)] text-[var(--diff-added-text)]' if (line.startsWith('-') && !line.startsWith('---')) return 'bg-[var(--diff-removed-bg)] text-[var(--diff-removed-text)]' if (line.startsWith('@@')) return 'bg-[var(--diff-hunk-bg)] text-primary italic' if (DIFF_HEADER_PREFIXES.some((p) => line.startsWith(p))) return 'bg-muted text-muted-foreground font-semibold' return 'text-secondary-foreground' } function DiffLine({ line, lineNumber }: { line: string; lineNumber: number }) { return (
{lineNumber} {line || '\u00A0'}
) } export function DiffView({ diff }: DiffViewProps) { if (!diff) { return (
No changes to display
) } return (
{diff.split('\n').map((line, i) => ( ))}
) }