'use client'; import { Check, X } from 'lucide-react'; import { Material } from '@/types'; export type MaterialTab = 'fertilizer' | 'pesticide' | 'seed' | 'misc'; export interface MaterialFormState { name: string; material_type: Material['material_type']; seed_variety_id: string; maker: string; stock_unit: Material['stock_unit']; is_active: boolean; notes: string; fertilizer_profile: { capacity_kg: string; nitrogen_pct: string; phosphorus_pct: string; potassium_pct: string; }; pesticide_profile: { registration_no: string; formulation: string; usage_unit: string; dilution_ratio: string; active_ingredient: string; category: string; }; } interface MaterialFormProps { tab: MaterialTab; form: MaterialFormState; saving: boolean; seedVarietyOptions?: { id: number; label: string }[]; onBaseFieldChange: ( field: keyof Omit, value: string | boolean ) => void; onFertilizerFieldChange: ( field: keyof MaterialFormState['fertilizer_profile'], value: string ) => void; onPesticideFieldChange: ( field: keyof MaterialFormState['pesticide_profile'], value: string ) => void; onSave: () => void; onCancel: () => void; } const inputClassName = 'w-full rounded-md border border-gray-300 px-2 py-1 text-sm focus:border-green-500 focus:outline-none focus:ring-1 focus:ring-green-500'; export default function MaterialForm({ tab, form, saving, seedVarietyOptions = [], onBaseFieldChange, onFertilizerFieldChange, onPesticideFieldChange, onSave, onCancel, }: MaterialFormProps) { if (tab === 'fertilizer') { return ( onBaseFieldChange('name', e.target.value)} placeholder="資材名" autoFocus /> onBaseFieldChange('maker', e.target.value)} placeholder="メーカー" /> onFertilizerFieldChange('capacity_kg', e.target.value)} placeholder="kg" /> onFertilizerFieldChange('nitrogen_pct', e.target.value)} placeholder="%" /> onFertilizerFieldChange('phosphorus_pct', e.target.value)} placeholder="%" /> onFertilizerFieldChange('potassium_pct', e.target.value)} placeholder="%" /> onBaseFieldChange('stock_unit', value)} /> onBaseFieldChange('notes', e.target.value)} placeholder="備考" /> onBaseFieldChange('is_active', e.target.checked)} className="h-4 w-4 rounded border-gray-300 text-green-600 focus:ring-green-500" /> ); } if (tab === 'pesticide') { return ( onBaseFieldChange('name', e.target.value)} placeholder="資材名" autoFocus /> onBaseFieldChange('maker', e.target.value)} placeholder="メーカー" /> onPesticideFieldChange('registration_no', e.target.value)} placeholder="登録番号" /> onPesticideFieldChange('formulation', e.target.value)} placeholder="剤型" /> onPesticideFieldChange('active_ingredient', e.target.value)} placeholder="有効成分" /> onPesticideFieldChange('category', e.target.value)} placeholder="分類" /> onBaseFieldChange('stock_unit', value)} /> onBaseFieldChange('notes', e.target.value)} placeholder="備考" /> onBaseFieldChange('is_active', e.target.checked)} className="h-4 w-4 rounded border-gray-300 text-green-600 focus:ring-green-500" /> ); } return ( onBaseFieldChange('name', e.target.value)} placeholder="資材名" autoFocus /> {tab === 'seed' ? ( ) : ( )} onBaseFieldChange('maker', e.target.value)} placeholder="メーカー" /> onBaseFieldChange('stock_unit', value)} /> onBaseFieldChange('notes', e.target.value)} placeholder="備考" /> onBaseFieldChange('is_active', e.target.checked)} className="h-4 w-4 rounded border-gray-300 text-green-600 focus:ring-green-500" /> ); } function ActionButtons({ onSave, onCancel, saving, }: { onSave: () => void; onCancel: () => void; saving: boolean; }) { return (
); } function StockUnitSelect({ value, onChange, }: { value: Material['stock_unit']; onChange: (value: Material['stock_unit']) => void; }) { return ( ); }