import React from 'react'; import { Input } from './Input'; import { TextArea } from './TextArea'; import { Button } from './Button'; export interface ProjectFormData { title: string; companyName: string; contactName: string; contactEmail: string; startDate: string; endDate: string; memo: string; } export interface ProjectFormProps { initialData?: ProjectFormData; onSubmit: (data: ProjectFormData) => void; submitButtonText: string; cancelButtonText?: string; onCancel?: () => void; submitIcon?: React.ReactNode; } export const ProjectForm: React.FC = ({ initialData, onSubmit, submitButtonText, cancelButtonText, onCancel, submitIcon, }) => { const [title, setTitle] = React.useState(''); const [companyName, setCompanyName] = React.useState(''); const [contactName, setContactName] = React.useState(''); const [contactEmail, setContactEmail] = React.useState(''); const [memo, setMemo] = React.useState(''); const [startDate, setStartDate] = React.useState('2026-07-01'); const [endDate, setEndDate] = React.useState('2026-07-15'); // Sync initial data when loaded/changed React.useEffect(() => { if (initialData) { setTitle(initialData.title); setCompanyName(initialData.companyName); setContactName(initialData.contactName); setContactEmail(initialData.contactEmail); setMemo(initialData.memo); setStartDate(initialData.startDate); setEndDate(initialData.endDate); } }, [initialData]); const handleSubmit = (e: React.FormEvent) => { e.preventDefault(); onSubmit({ title, companyName, contactName, contactEmail, startDate, endDate, memo, }); }; return (
setCompanyName(e.target.value)} placeholder="예: 삼성전자, 하이닉스" className="text-sm" required />
setTitle(e.target.value)} placeholder="예: 2026년 하반기 전사 조직 협업도 네트워크 분석 진단" className="text-sm" required />
setContactName(e.target.value)} placeholder="예: 김길동 부장" className="text-sm" />
setContactEmail(e.target.value)} placeholder="client@company.com" className="text-sm" />
setStartDate(e.target.value)} className="text-sm" required />
setEndDate(e.target.value)} className="text-sm" required />