refactor: 전체 프론트엔드 하드코딩 색상 → CSS 변수 일괄 치환

447+ 파일, 4500+ 줄 변경:
- gray-* → border/bg-muted/text-foreground/text-muted-foreground
- blue-* → primary/ring
- red-* → destructive
- green-* → emerald (일관성)
- indigo-* → primary
- yellow/orange → amber (통일)
- dark mode 변형도 시맨틱 토큰으로 변환

Made-with: Cursor
This commit is contained in:
DDD1542
2026-03-09 14:31:59 +09:00
parent d967cf0a0d
commit 4f10b5e42d
447 changed files with 4520 additions and 4520 deletions

View File

@@ -381,8 +381,8 @@ export const FileAttachmentDetailModal: React.FC<FileAttachmentDetailModalProps>
<div
className={`
border-2 border-dashed rounded-lg p-8 text-center cursor-pointer transition-colors
${dragOver ? 'border-blue-400 bg-accent' : 'border-gray-300'}
${uploading ? 'opacity-50 cursor-not-allowed' : 'hover:border-gray-400'}
${dragOver ? 'border-primary/60 bg-accent' : 'border-input'}
${uploading ? 'opacity-50 cursor-not-allowed' : 'hover:border-input'}
`}
onDragOver={handleDragOver}
onDragLeave={handleDragLeave}
@@ -402,17 +402,17 @@ export const FileAttachmentDetailModal: React.FC<FileAttachmentDetailModalProps>
<div className="flex flex-col items-center space-y-3">
{uploading ? (
<>
<div className="animate-spin rounded-full h-12 w-12 border-b-2 border-blue-600"></div>
<p className="text-lg font-medium text-gray-700"> ...</p>
<div className="animate-spin rounded-full h-12 w-12 border-b-2 border-primary"></div>
<p className="text-lg font-medium text-foreground"> ...</p>
</>
) : (
<>
<Upload className="w-12 h-12 text-gray-400" />
<Upload className="w-12 h-12 text-muted-foreground/70" />
<div>
<p className="text-lg font-medium text-gray-700">
<p className="text-lg font-medium text-foreground">
</p>
<p className="text-sm text-gray-500 mt-2">
<p className="text-sm text-muted-foreground mt-2">
{fileConfig.accept && `지원 형식: ${fileConfig.accept}`}
{fileConfig.maxSize && ` • 최대 ${formatFileSize(fileConfig.maxSize)}`}
{fileConfig.multiple && ' • 여러 파일 선택 가능'}
@@ -446,24 +446,24 @@ export const FileAttachmentDetailModal: React.FC<FileAttachmentDetailModalProps>
</CardHeader>
<CardContent>
{uploadedFiles.length === 0 ? (
<div className="text-center py-8 text-gray-500">
<FileText className="w-12 h-12 mx-auto mb-3 text-gray-300" />
<div className="text-center py-8 text-muted-foreground">
<FileText className="w-12 h-12 mx-auto mb-3 text-muted-foreground/50" />
<p> .</p>
<p className="text-sm mt-1"> .</p>
</div>
) : (
<div className="space-y-3 max-h-60 overflow-y-auto">
{uploadedFiles.map((file) => (
<div key={file.objid} className="flex items-center justify-between p-3 bg-gray-50 rounded-lg">
<div key={file.objid} className="flex items-center justify-between p-3 bg-muted rounded-lg">
<div className="flex items-center space-x-3 flex-1 min-w-0">
<div className="flex-shrink-0">
{getFileIcon(file.fileExt)}
</div>
<div className="flex-1 min-w-0">
<p className="text-sm font-medium text-gray-900 truncate">
<p className="text-sm font-medium text-foreground truncate">
{file.realFileName}
</p>
<div className="flex items-center space-x-2 text-xs text-gray-500">
<div className="flex items-center space-x-2 text-xs text-muted-foreground">
<span>{formatFileSize(file.fileSize)}</span>
<span></span>
<span>{file.fileExt.toUpperCase()}</span>
@@ -505,7 +505,7 @@ export const FileAttachmentDetailModal: React.FC<FileAttachmentDetailModalProps>
variant="ghost"
size="sm"
onClick={() => handleFileDelete(file)}
className="h-8 w-8 p-0 text-destructive hover:text-red-700"
className="h-8 w-8 p-0 text-destructive hover:text-destructive"
title="삭제"
>
<Trash2 className="w-4 h-4" />
@@ -555,7 +555,7 @@ export const FileAttachmentDetailModal: React.FC<FileAttachmentDetailModalProps>
onChange={(e) => setFileConfig(prev => ({ ...prev, accept: e.target.value }))}
placeholder="예: image/*,.pdf,.doc,.docx"
/>
<p className="text-xs text-gray-500 mt-1">
<p className="text-xs text-muted-foreground mt-1">
(: image/*,.pdf,.doc)
</p>
</div>
@@ -581,7 +581,7 @@ export const FileAttachmentDetailModal: React.FC<FileAttachmentDetailModalProps>
type="checkbox"
checked={fileConfig.multiple}
onChange={(e) => setFileConfig(prev => ({ ...prev, multiple: e.target.checked }))}
className="rounded border-gray-300"
className="rounded border-input"
/>
<Label htmlFor="multiple">여러 파일 업로드 허용</Label>
</div>