import { useEffect, useState, type FormEvent } from 'react' import { useNavigate } from 'react-router-dom' import { catalog } from '@/api/client' import type { Uom } from '@/types/api' import { PageHeader } from '@/components/PageHeader' import { ErrorBox } from '@/components/ErrorBox' const ITEM_TYPES = ['GOOD', 'SERVICE', 'DIGITAL'] as const export function CreateItemPage() { const navigate = useNavigate() const [code, setCode] = useState('') const [name, setName] = useState('') const [description, setDescription] = useState('') const [itemType, setItemType] = useState('GOOD') const [baseUomCode, setBaseUomCode] = useState('') const [uoms, setUoms] = useState([]) const [submitting, setSubmitting] = useState(false) const [error, setError] = useState(null) useEffect(() => { catalog.listUoms().then((u) => { setUoms(u) if (u.length > 0 && !baseUomCode) setBaseUomCode(u[0].code) }) }, []) // eslint-disable-line react-hooks/exhaustive-deps const onSubmit = async (e: FormEvent) => { e.preventDefault() setError(null) setSubmitting(true) try { await catalog.createItem({ code, name, itemType, baseUomCode, description: description || null, }) navigate('/items') } catch (err: unknown) { setError(err instanceof Error ? err : new Error(String(err))) } finally { setSubmitting(false) } } return (
navigate('/items')}>Cancel} />
setCode(e.target.value)} placeholder="PAPER-120G-A3" className="mt-1 w-full rounded-md border border-slate-300 px-3 py-2 text-sm" />
setName(e.target.value)} placeholder="120g A3 coated paper" className="mt-1 w-full rounded-md border border-slate-300 px-3 py-2 text-sm" />
setDescription(e.target.value)} className="mt-1 w-full rounded-md border border-slate-300 px-3 py-2 text-sm" />
{error && }
) }