1- import { FileIcon , defaultStyles } from "react-file-icon" ;
21import type { GitLogEntry } from "../types" ;
32import type { MouseEvent as ReactMouseEvent } from "react" ;
43import { Menu , MenuItem } from "@tauri-apps/api/menu" ;
@@ -48,6 +47,40 @@ function splitNameAndExtension(name: string) {
4847 } ;
4948}
5049
50+ function getStatusSymbol ( status : string ) {
51+ switch ( status ) {
52+ case "A" :
53+ return "+" ;
54+ case "M" :
55+ return "M" ;
56+ case "D" :
57+ return "-" ;
58+ case "R" :
59+ return "R" ;
60+ case "T" :
61+ return "T" ;
62+ default :
63+ return "?" ;
64+ }
65+ }
66+
67+ function getStatusClass ( status : string ) {
68+ switch ( status ) {
69+ case "A" :
70+ return "diff-icon-added" ;
71+ case "M" :
72+ return "diff-icon-modified" ;
73+ case "D" :
74+ return "diff-icon-deleted" ;
75+ case "R" :
76+ return "diff-icon-renamed" ;
77+ case "T" :
78+ return "diff-icon-typechange" ;
79+ default :
80+ return "diff-icon-unknown" ;
81+ }
82+ }
83+
5184export function GitDiffPanel ( {
5285 mode,
5386 onModeChange,
@@ -153,8 +186,9 @@ export function GitDiffPanel({
153186 { files . map ( ( file ) => {
154187 const { name } = splitPath ( file . path ) ;
155188 const { base, extension } = splitNameAndExtension ( name ) ;
156- const style = extension ? defaultStyles [ extension ] : undefined ;
157189 const isSelected = file . path === selectedPath ;
190+ const statusSymbol = getStatusSymbol ( file . status ) ;
191+ const statusClass = getStatusClass ( file . status ) ;
158192 return (
159193 < div
160194 key = { file . path }
@@ -169,8 +203,8 @@ export function GitDiffPanel({
169203 }
170204 } }
171205 >
172- < span className = " diff-icon" aria-hidden >
173- < FileIcon extension = { extension || "file" } { ... style } />
206+ < span className = { ` diff-icon ${ statusClass } ` } aria-hidden >
207+ { statusSymbol }
174208 </ span >
175209 < div className = "diff-file" >
176210 < div className = "diff-path" >
0 commit comments