Import source: app/src/components/diff-viewer

Import the existing local project snapshot. This commit organizes existing files; it does not represent newly developed functionality.
This commit is contained in:
arsam
2026-09-18 23:24:19 +03:30
parent 3ed1386d35
commit 46c739fb11
+43
View File
@@ -0,0 +1,43 @@
import { useMemo } from 'react';
import * as Diff from 'diff';
export function DiffViewer({ oldText, newText }) {
const diffs = useMemo(() => {
return Diff.diffWordsWithSpace(oldText || '', newText || '');
}, [oldText, newText]);
return (
<div className="diff-viewer" style={{
whiteSpace: 'pre-wrap',
direction: 'rtl',
textAlign: 'right',
fontFamily: 'monospace',
padding: '1rem',
backgroundColor: 'var(--bg-surface)',
border: '1px solid var(--border-color)',
borderRadius: '8px',
lineHeight: '1.6'
}}>
{diffs.map((part, index) => {
const color = part.added ? '#10b981' : part.removed ? '#ef4444' : 'inherit';
const backgroundColor = part.added ? 'rgba(16, 185, 129, 0.1)' : part.removed ? 'rgba(239, 68, 68, 0.1)' : 'transparent';
const textDecoration = part.removed ? 'line-through' : 'none';
return (
<span
key={index}
style={{
color,
backgroundColor,
textDecoration,
padding: part.added || part.removed ? '2px 4px' : '0',
borderRadius: '4px',
}}
>
{part.value}
</span>
);
})}
</div>
);
}