1
0
Fork 0

feat(ui): 형식 색상 + 손실/상태 시맨틱 토큰 (Catppuccin/Material/Radix 영감)

디자인 리서치(VS Code Material Icon Theme·Seti UI·Linguist·Radix dark·Catppuccin·Linear·Geist) 기반으로 형식 색상과 시맨틱 토큰을 확장.

- 신규 형식색 FsFmtCsv/Xlsx/Json/Svg/Video/Audio (회색→카테고리별 hue) + AllFormats/FormatPalette 매핑
- 손실 등급 토큰 FsLoss*(Lossless=초록/Container=회색/Recode=앰버/Rasterize=빨강, Radix dark)
- 상태 토큰 FsStatus*(Success/Warn/Danger/Info × dot/text/bg)
- Geist식 8% 투명 보더 FsBorderHairline
This commit is contained in:
Yun Chan 2026-06-01 14:32:59 +09:00
parent df07eb9bdd
commit faffb8f205
5 changed files with 1171 additions and 16 deletions

View file

@ -824,22 +824,22 @@ public partial class MainWindow : Wpf.Ui.Controls.FluentWindow
new(".html", "HTML", "HTML", "FsFmtHtml"),
new(".md", "Markdown", "MD", "FsFmtOther"),
new(".txt", "텍스트", "TXT", "FsFmtOther"),
new(".csv", "CSV", "CSV", "FsFmtOther"),
new(".json", "JSON", "JSON", "FsFmtOther"),
new(".xlsx", "Excel", "XLSX", "FsFmtOther"),
new(".svg", "SVG", "SVG", "FsFmtOther"),
new(".mp4", "MP4", "MP4", "FsFmtOther"),
new(".webm", "WebM", "WEBM", "FsFmtOther"),
new(".mkv", "MKV", "MKV", "FsFmtOther"),
new(".mov", "MOV", "MOV", "FsFmtOther"),
new(".avi", "AVI", "AVI", "FsFmtOther"),
new(".mp3", "MP3", "MP3", "FsFmtOther"),
new(".aac", "AAC", "AAC", "FsFmtOther"),
new(".m4a", "M4A", "M4A", "FsFmtOther"),
new(".opus", "Opus", "OPUS", "FsFmtOther"),
new(".ogg", "OGG", "OGG", "FsFmtOther"),
new(".flac", "FLAC", "FLAC", "FsFmtOther"),
new(".wav", "WAV", "WAV", "FsFmtOther"),
new(".csv", "CSV", "CSV", "FsFmtCsv"),
new(".json", "JSON", "JSON", "FsFmtJson"),
new(".xlsx", "Excel", "XLSX", "FsFmtXlsx"),
new(".svg", "SVG", "SVG", "FsFmtSvg"),
new(".mp4", "MP4", "MP4", "FsFmtVideo"),
new(".webm", "WebM", "WEBM", "FsFmtVideo"),
new(".mkv", "MKV", "MKV", "FsFmtVideo"),
new(".mov", "MOV", "MOV", "FsFmtVideo"),
new(".avi", "AVI", "AVI", "FsFmtVideo"),
new(".mp3", "MP3", "MP3", "FsFmtAudio"),
new(".aac", "AAC", "AAC", "FsFmtAudio"),
new(".m4a", "M4A", "M4A", "FsFmtAudio"),
new(".opus", "Opus", "OPUS", "FsFmtAudio"),
new(".ogg", "OGG", "OGG", "FsFmtAudio"),
new(".flac", "FLAC", "FLAC", "FsFmtAudio"),
new(".wav", "WAV", "WAV", "FsFmtAudio"),
};
private bool _suppressFormatChanged;
@ -1160,6 +1160,15 @@ internal static class FormatPalette
"bmp" => ("BMP", "FsFmtBmp"),
"raw" or "dng" or "nef" or "cr2" or "cr3" or "arw" or "raf" or "orf" or "rw2" or "srw" or "pef"
=> ("RAW", "FsFmtRaw"),
// 신규 카테고리 (output AllFormats 매핑과 동일 hue 유지)
"csv" => ("CSV", "FsFmtCsv"),
"json" => ("JSON", "FsFmtJson"),
"xlsx" or "xls" => ("XLSX", "FsFmtXlsx"),
"svg" => ("SVG", "FsFmtSvg"),
"mp4" or "webm" or "mkv" or "mov" or "avi" or "m4v"
=> (ext.ToUpperInvariant(), "FsFmtVideo"),
"mp3" or "aac" or "m4a" or "opus" or "ogg" or "oga" or "flac" or "wav"
=> (ext.ToUpperInvariant(), "FsFmtAudio"),
_ => (ext.ToUpperInvariant(), "FsFmtOther"),
};
}