import Link from "next/link"; import { serverFetch } from "../../lib/api"; function toText(value: unknown, fallback = "") { return typeof value === "string" && value ? value : fallback; } function toBool(value: unknown) { return value === true || value === "true"; } function asArray(value: unknown): string[] { return Array.isArray(value) ? value.map((item) => String(item)) : []; } export default async function ServicePage({ params }: { params: Promise<{ slug: string }> }) { const { slug } = await params; const { service } = await serverFetch<{ service: Record }>(`/services/${slug}`); return (
Servicio publico

{toText(service.title)}

{toText(service.description)}

{toText(service.category)} {toBool(service.local_pickup) ? "Retiro local" : "Solo envio"} {toBool(service.nationwide_shipping) ? "Envio nacional" : "Cobertura puntual"}
{String(service.lead_time_days || 4)} diasPlazo orientativo
Desde${Math.round(Number(service.price_from_cents || 0) / 100).toLocaleString("es-AR")}
VisibleEn mapa y perfil
GuiadoContacto contextual
Materiales y capacidades

Informacion pensada para decidir rapido

{asArray(service.materials).map((item) => ( {item} ))} {asArray(service.technologies).map((item) => ( {item} ))}
Uso
Uso principal Piezas funcionales, prototipos y necesidades reales con restricciones claras.
Entrega
Entrega Retiro local, envio o cobertura segun la configuracion del maker.
Contexto
Consulta guiada El cliente no llega en frio. Llega con referencia, urgencia y uso final.
); }