import Link from "next/link"; import { notFound } from "next/navigation"; import Sidebar from "@/app/components/Sidebar"; import { avatarClasses } from "@/app/components/KidCard"; import type { Kid, Parent, ParentStatus } from "@/app/data/kids"; import { kids } from "@/app/data/kids"; /** Página 100% estática que deriva de params: permitido bloquear, sin Suspense. */ export const instant = false; /** Los 8 slugs del mock se prerenderizan; cualquier otro cae en notFound(). */ export function generateStaticParams() { return kids.map((kid) => ({ slug: kid.slug })); } /** * Colores dinámicos → utilities Tailwind con valores exactos. * El set de fondos del mock es cerrado; nunca se usan atributos style. */ const PARENT_BG: Record = { C9B6E8: "bg-[#C9B6E8]", A9C7E8: "bg-[#A9C7E8]", F4B8CC: "bg-[#F4B8CC]", B9DEC4: "bg-[#B9DEC4]", F2937A: "bg-[#F2937A]", F4DC8E: "bg-[#F4DC8E]", }; const STATUS_BADGE: Record = { activa: { label: "ACTIVA", classes: "bg-[#CFEBD8] text-[#3E9B6C]" }, pendiente: { label: "PENDIENTE", classes: "bg-[#F7E7A6] text-[#9A7B1E]" }, }; function parentClasses(parent: Parent): string { return PARENT_BG[parent.bg.replace("#", "")] ?? ""; } function ParentRow({ parent }: { parent: Parent }) { const badge = STATUS_BADGE[parent.status]; return (
{parent.initial}
{parent.name}
{parent.role} · {parent.note}
{badge.label}
); } export default async function KidProfilePage({ params }: { params: Promise<{ slug: string }> }) { const { slug } = await params; const kid: Kid | undefined = kids.find((candidate) => candidate.slug === slug); if (!kid) notFound(); return (
{/* Breadcrumb */} Volver a Niños
{/* Columna izquierda */}
{/* Identidad */}
{kid.initial}

{kid.name}

{kid.age} años · Sala {kid.room}

Editar
{/* Alergias y notas (solo si tiene) */} {kid.allergyNote && (
Alergias y notas
{kid.allergyNote}
)} {/* Datos */}
Fecha de nacimiento {kid.birthDate}
Sala {kid.room}
Ingreso {kid.admission}
{/* Columna derecha */}
Resumen del día {/* Padres vinculados */}
PADRES VINCULADOS
{kid.parents.map((parent) => ( ))} Vincular otro padre
); }