'use client'; import { useState } from 'react'; import { VehicleGroup, Vehicle, createGroup, updateGroup, assignVehicleToGroup } from '@/lib/api'; import { Users, Plus, Edit2, X, Check } from 'lucide-react'; interface GroupManagerProps { groups: VehicleGroup[]; vehicles: Vehicle[]; onGroupChanged: () => void; } export function GroupManager({ groups, vehicles, onGroupChanged }: GroupManagerProps) { const [isCreating, setIsCreating] = useState(false); const [editingId, setEditingId] = useState(null); const [name, setName] = useState(''); const [description, setDescription] = useState(''); const [loading, setLoading] = useState(false); // Vehicle Assignment State const [assignVin, setAssignVin] = useState(''); const startCreate = () => { setIsCreating(true); setEditingId(null); setName(''); setDescription(''); setAssignVin(''); }; const startEdit = (group: VehicleGroup) => { setIsCreating(false); setEditingId(group.id); setName(group.name); setDescription(group.description || ''); setAssignVin(''); }; const cancel = () => { setIsCreating(false); setEditingId(null); setName(''); setDescription(''); setAssignVin(''); }; const handleSubmit = async (e: React.FormEvent) => { e.preventDefault(); if (!name) return; setLoading(true); try { if (isCreating) { await createGroup(name, description); } else if (editingId) { await updateGroup(editingId, name, description); } onGroupChanged(); cancel(); } catch (err) { console.error(err); alert('Operation failed'); } finally { setLoading(false); } }; const handleAssignVehicle = async () => { if (!editingId || !assignVin) return; setLoading(true); try { await assignVehicleToGroup(editingId, assignVin); onGroupChanged(); alert('Vehicle assigned'); setAssignVin(''); } catch (err) { console.error(err); alert('Failed to assign vehicle'); } finally { setLoading(false); } }; return (

Vehicle Groups

{(isCreating || editingId) && (
setName(e.target.value)} placeholder="Group Name" className="w-full bg-zinc-900 border border-zinc-700 rounded-lg px-3 py-2 text-white text-sm outline-none focus:ring-1 focus:ring-orange-500" required /> setDescription(e.target.value)} placeholder="Description (optional)" className="w-full bg-zinc-900 border border-zinc-700 rounded-lg px-3 py-2 text-white text-sm outline-none focus:ring-1 focus:ring-orange-500" />
{editingId && (

Assign Vehicle

)}
)}
{groups.map(group => (

{group.name}

{group.vehicles?.length || 0} vehicles

))} {groups.length === 0 &&

No groups created.

}
); }