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:
@@ -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>
|
||||
|
||||
Reference in New Issue
Block a user