"use client"; import { useEffect, useState } from "react"; import { useRouter } from "next/navigation"; import Link from "next/link"; import Button from "@/components/ui/Button"; import Card from "@/components/ui/Card"; import Input from "@/components/ui/Input"; import Combobox from "@/components/ui/Combobox"; import { MARCAS, getModelos } from "@/lib/marcas-modelos"; interface Auto { id: string; patente: string; marca: string; modelo: string; anio: number; nroChasis?: string | null; } export default function DashboardPage() { const router = useRouter(); const [autos, setAutos] = useState([]); const [loading, setLoading] = useState(true); const [mostrarForm, setMostrarForm] = useState(false); const [form, setForm] = useState({ patente: "", marca: "", modelo: "", anio: "", nroChasis: "" }); const modelosDisponibles = getModelos(form.marca); const [guardando, setGuardando] = useState(false); const [errorForm, setErrorForm] = useState(""); useEffect(() => { cargarAutos(); }, []); async function cargarAutos() { setLoading(true); const res = await fetch("/api/cliente/autos"); if (res.status === 401) { router.push("/cliente"); return; } const data = await res.json(); setAutos(data); setLoading(false); } function set(field: string) { return (e: React.ChangeEvent) => setForm((f) => ({ ...f, [field]: e.target.value })); } async function agregarAuto(e: React.FormEvent) { e.preventDefault(); setGuardando(true); setErrorForm(""); const res = await fetch("/api/cliente/autos", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ ...form, anio: Number(form.anio) }), }); const data = await res.json(); setGuardando(false); if (!res.ok) { setErrorForm(data.error || "Error al guardar"); return; } setMostrarForm(false); setForm({ patente: "", marca: "", modelo: "", anio: "", nroChasis: "" }); cargarAutos(); } async function cerrarSesion() { await fetch("/api/auth/cliente-logout", { method: "POST" }); router.push("/cliente"); } return (

Mis autos

Mis datos
{loading ? (
Cargando...
) : (
{autos.map((auto) => (

{auto.marca} {auto.modelo} ({auto.anio})

{auto.patente}

))} {autos.length === 0 && !mostrarForm && (

No tenés autos registrados todavía.

)}
)} {mostrarForm ? (
setForm((f) => ({ ...f, marca: v, modelo: "" }))} onSelect={(v) => setForm((f) => ({ ...f, marca: v, modelo: "" }))} placeholder="Ford" required /> setForm((f) => ({ ...f, modelo: v }))} onSelect={(v) => setForm((f) => ({ ...f, modelo: v }))} placeholder={form.marca ? "Focus" : "Primero elegí la marca"} disabled={modelosDisponibles.length === 0} required />
{errorForm &&

{errorForm}

}
) : ( )}
); }