"use client" import * as React from "react" import { Input } from "@/components/ui/input" import { Button } from "@/components/ui/button" import { ProjectSearchStatus, getLabelStatusClassName, getDisplayElementStatusClassName, getInputStatusClassName } from "./project-field-utils" // 타입 재내보내기 export type { ProjectSearchStatus } from "./project-field-utils" // 재사용 가능한 필드 컴포넌트들 export interface ProjectInputFieldProps { label: string value: string onChange: (value: string) => void placeholder: string status: ProjectSearchStatus statusText?: string minWidth?: string } export const ProjectInputField: React.FC = ({ label, value, onChange, placeholder, status, statusText, minWidth = "250px" }) => (
onChange(e.target.value)} placeholder={placeholder} className={`h-8 text-sm ${getInputStatusClassName(status)}`} />
) export interface ProjectDisplayFieldProps { label: string value: string status: ProjectSearchStatus minWidth?: string formatter?: (value: string) => string } export const ProjectDisplayField: React.FC = ({ label, value, status, minWidth = "120px", formatter }) => { const displayValue = status === 'searching' ? '조회 중...' : (formatter ? formatter(value) : (value || '-')) return (
{displayValue}
) } export interface ProjectFileFieldProps { label: string originalFile: string onFileUpload: (event: React.ChangeEvent) => void minWidth?: string } export const ProjectFileField: React.FC = ({ label, originalFile, onFileUpload, minWidth = "200px" }) => (
{originalFile ? ( {originalFile} ) : (
)}
)