import React, {useState} from 'react'; import { Eye, Plus, MinusCircle, Edit, GitBranch, AlertTriangle, Code, FileText, Settings, File } from 'lucide-react'; import Tooltip from '../../ui/Tooltip'; import ViewChanges from './modal/ViewChanges'; const ChangeRow = ({change, isSelected, onSelect, isIncoming, isDevMode}) => { const [showChanges, setShowChanges] = useState(false); const getStatusIcon = status => { switch (status) { case 'Untracked': return ; case 'Staged (New)': return ; case 'Staged (Modified)': case 'Modified': return ; case 'Deleted': return ; case 'Deleted (Staged)': return ; case 'Renamed': return ; default: return ; } }; const getTypeIcon = type => { switch (type) { case 'Regex Pattern': return ; case 'Custom Format': return ; case 'Quality Profile': return ; default: return ; } }; const handleViewChanges = e => { e.stopPropagation(); setShowChanges(true); }; const handleRowClick = () => { if (!isIncoming && onSelect) { onSelect(change.file_path); } }; // Determine row classes based on whether it's incoming or selected const rowClasses = `border-t border-gray-600 ${ isIncoming ? 'cursor-default' : `cursor-pointer ${ isSelected ? 'bg-blue-700 bg-opacity-30' : 'hover:bg-gray-700' }` }`; return ( <>
{getStatusIcon(change.status)} {change.staged ? `${change.status} (Staged)` : change.status} {isIncoming && change.will_conflict && ( )}
{getTypeIcon(change.type)} {change.type}
{isIncoming ? ( change.incoming_name && change.incoming_name !== change.local_name ? ( <> Local:{' '} {change.local_name || 'Unnamed'} Incoming:{' '} {change.incoming_name || 'Unnamed'} ) : ( change.local_name || change.incoming_name || 'Unnamed' ) ) : change.outgoing_name && change.outgoing_name !== change.prior_name ? ( <> Prior:{' '} {change.prior_name || 'Unnamed'} Outgoing:{' '} {change.outgoing_name || 'Unnamed'} ) : ( change.outgoing_name || change.prior_name || 'Unnamed' )} setShowChanges(false)} change={change} isIncoming={isIncoming} isDevMode={isDevMode} /> ); }; export default ChangeRow;