"use client"; import { useEffect, useState } from "react"; import axios from "axios"; interface SearchUserProps { value?: string | null; } type Alumno = { nombre: string; carrera: string; mesaActiva: boolean; }; export default function SearchUserTable({ value }: SearchUserProps) { const [numAcount, setNumAcount] = useState(value || ""); const [alumno, setAlumno] = useState(null); const [loading, setLoading] = useState(false); const [error, setError] = useState(null); // Si el prop cambia, actualizar el input useEffect(() => { if (value) setNumAcount(value); }, [value]); const handleSubmit = async (e: React.FormEvent) => { e.preventDefault(); if (!numAcount) { setError("Ingresa un número de cuenta"); return; } setLoading(true); setError(null); setAlumno(null); try { // Llamada a la API con Axios const { data } = await axios.get(`/api/alumnos/${numAcount}`); setAlumno(data); } catch (err: any) { setAlumno(null); setError(err.response?.data?.message || "Alumno no encontrado"); } finally { setLoading(false); } }; return (
{ const value = e.target.value; // Solo números y máximo 9 dígitos if (/^\d*$/.test(value) && value.length <= 9) { setNumAcount(value); } }} placeholder="Coloca un número de cuenta..." inputMode="numeric" pattern="[0-9]*" />
{error &&

{error}

} {alumno && (

Nombre: {alumno.nombre}

Carrera: {alumno.carrera}

Mesa activada: {alumno.mesaActiva ? "Sí" : "No"}

)}
); }