'use client' import { useState } from 'react' import { useRouter } from 'next/navigation' export type Truck = { id: string truck_no: string carrier: string | null active: boolean } interface Props { trucks: Truck[] } export function TruckManager({ trucks }: Props) { const router = useRouter() const [truckNo, setTruckNo] = useState('') const [carrier, setCarrier] = useState('') const [submitting, setSubmitting] = useState(false) const [error, setError] = useState(null) async function handleAdd() { const no = truckNo.trim() if (!no) return setSubmitting(true) setError(null) try { const res = await fetch('/ims/api/admin/trucks', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ truck_no: no, carrier: carrier.trim() || null }), }) const data = await res.json() if (!res.ok) { setError(data.error ?? 'Failed to add truck') return } setTruckNo('') setCarrier('') router.refresh() } catch { setError('Network error') } finally { setSubmitting(false) } } return (

Trucks

setTruckNo(e.target.value)} onKeyDown={e => e.key === 'Enter' && handleAdd()} /> setCarrier(e.target.value)} onKeyDown={e => e.key === 'Enter' && handleAdd()} />
{error && (

{error}

)} {trucks.length === 0 ? (

No trucks yet.

) : (
    {trucks.map(tk => (
  • {tk.truck_no} {tk.carrier && ( {tk.carrier} )} {!tk.active && ( Inactive )}
  • ))}
)}
) }