fix(WEB): 검사입력 모달 UI/UX 개선

- ImportInspectionInputModal 수입검사 입력 모달 개선
- InspectionInputModal 작업자화면 검사입력 개선
- ProductInspectionInputModal 제품검사 입력 개선
- WipProductionModal 수정

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
유병철
2026-02-06 09:41:27 +09:00
parent 16a349292b
commit 881f4668da
4 changed files with 116 additions and 116 deletions

View File

@@ -59,7 +59,7 @@ function PassFailToggle({
'px-4 py-2 rounded-lg text-sm font-medium transition-colors',
value === 'pass'
? 'bg-orange-500 text-white'
: 'bg-gray-700 text-white hover:bg-gray-600',
: 'bg-gray-200 text-gray-700 hover:bg-gray-300',
disabled && 'opacity-50 cursor-not-allowed'
)}
>
@@ -72,8 +72,8 @@ function PassFailToggle({
className={cn(
'px-4 py-2 rounded-lg text-sm font-medium transition-colors',
value === 'fail'
? 'bg-gray-900 text-white'
: 'bg-gray-700 text-white hover:bg-gray-600',
? 'bg-gray-700 text-white'
: 'bg-gray-200 text-gray-700 hover:bg-gray-300',
disabled && 'opacity-50 cursor-not-allowed'
)}
>
@@ -122,12 +122,12 @@ function ImageUploader({
return (
<div className="space-y-2">
<Label className="text-gray-300"> ({images.length}/{maxImages})</Label>
<Label className="text-muted-foreground"> ({images.length}/{maxImages})</Label>
<div className="flex gap-3">
{images.map((img, index) => (
<div
key={index}
className="relative w-24 h-24 rounded-lg overflow-hidden border border-gray-700"
className="relative w-24 h-24 rounded-lg overflow-hidden border"
>
<img src={img} alt={`제품 사진 ${index + 1}`} className="w-full h-full object-cover" />
<button
@@ -143,7 +143,7 @@ function ImageUploader({
<button
type="button"
onClick={() => fileInputRef.current?.click()}
className="w-24 h-24 rounded-lg border-2 border-dashed border-gray-600 flex flex-col items-center justify-center text-gray-400 hover:border-gray-500 hover:text-gray-300 transition-colors"
className="w-24 h-24 rounded-lg border-2 border-dashed border-gray-300 flex flex-col items-center justify-center text-muted-foreground hover:border-gray-400 hover:text-gray-600 transition-colors"
>
<Camera className="w-6 h-6 mb-1" />
<span className="text-xs"> </span>
@@ -171,7 +171,7 @@ function InspectionGroup({
}) {
return (
<div className="space-y-3">
<div className="text-sm font-medium text-orange-400 border-b border-gray-700 pb-2">
<div className="text-sm font-medium text-orange-500 border-b pb-2">
{title}
</div>
<div className="space-y-4 pl-2">{children}</div>
@@ -189,7 +189,7 @@ function InspectionRow({
}) {
return (
<div className="flex items-center justify-between">
<Label className="text-gray-300 text-sm">{label}</Label>
<Label className="text-muted-foreground text-sm">{label}</Label>
{children}
</div>
);
@@ -219,9 +219,9 @@ function MeasurementInput({
value={value ?? ''}
onChange={(e) => onValueChange(e.target.value === '' ? null : parseFloat(e.target.value))}
placeholder={placeholder}
className="w-24 bg-gray-800 border-gray-700 text-white text-sm"
className="w-24 text-sm"
/>
<span className="text-gray-400 text-xs">{unit}</span>
<span className="text-muted-foreground text-xs">{unit}</span>
</div>
<PassFailToggle value={judgment} onChange={onJudgmentChange} />
</div>
@@ -306,9 +306,9 @@ export function ProductInspectionInputModal({
return (
<Dialog open={open} onOpenChange={onOpenChange}>
<DialogContent className="w-[95vw] max-w-[600px] bg-gray-900 text-white border-gray-700 max-h-[90vh] overflow-hidden flex flex-col">
<DialogContent className="w-[95vw] max-w-[600px] max-h-[90vh] overflow-hidden flex flex-col">
<DialogHeader>
<DialogTitle className="text-white text-lg font-bold">
<DialogTitle className="text-lg font-bold">
#
</DialogTitle>
</DialogHeader>
@@ -317,19 +317,19 @@ export function ProductInspectionInputModal({
{/* 제품명 / 규격 */}
<div className="grid grid-cols-2 gap-4">
<div className="space-y-2">
<Label className="text-gray-300"></Label>
<Label className="text-muted-foreground"></Label>
<Input
value={formData.productName}
readOnly
className="bg-gray-800 border-gray-700 text-white"
className=""
/>
</div>
<div className="space-y-2">
<Label className="text-gray-300"></Label>
<Label className="text-muted-foreground"></Label>
<Input
value={formData.specification}
readOnly
className="bg-gray-800 border-gray-700 text-white"
className=""
/>
</div>
</div>
@@ -453,22 +453,22 @@ export function ProductInspectionInputModal({
{/* 특이사항 */}
<div className="space-y-2">
<Label className="text-gray-300"></Label>
<Label className="text-muted-foreground"></Label>
<Textarea
value={formData.specialNotes}
onChange={(e) => updateField('specialNotes', e.target.value)}
placeholder="특이사항을 입력하세요"
className="bg-gray-800 border-gray-700 text-white min-h-[80px]"
className="min-h-[80px]"
/>
</div>
</div>
{/* 버튼 영역 */}
<div className="flex gap-3 mt-6 pt-4 border-t border-gray-700">
<div className="flex gap-3 mt-6 pt-4 border-t">
<Button
variant="outline"
onClick={handleCancel}
className="flex-1 bg-gray-800 border-gray-700 text-white hover:bg-gray-700"
className="flex-1"
>
</Button>