import { serverFetch } from "../lib/api"; import DiscoverExperienceClient from "./DiscoverExperienceClient"; type PublicMaker = { id: string; slug: string; business_name: string; description: string; province: string; city: string; delivery_scope: string; availability: string; main_image_url: string | null; avg_rating: number | string; review_count: number; service_count: number; work_count: number; public_latitude: number | null; public_longitude: number | null; categories?: string[]; }; type PublicWork = { id: string; slug: string; title: string; summary: string; technology: string; material: string; image_url: string | null; gallery_urls: string[] | null; maker_id: string; maker_slug: string; maker_name: string; avg_rating: number | string; review_count: number; }; type DiscoverCategory = "all" | "fdm" | "resin" | "design-3d" | "repuestos" | "ingenieria"; function readParam(value: string | string[] | undefined) { return typeof value === "string" ? value : ""; } function normalizeCategory(value: string): DiscoverCategory { const normalized = value.trim().toLowerCase(); if (normalized === "fdm" || normalized === "impresion fdm") { return "fdm"; } if (normalized === "resina" || normalized === "impresion resina") { return "resin"; } if (normalized === "design-3d" || normalized === "diseno 3d") { return "design-3d"; } if (normalized === "repuestos") { return "repuestos"; } if (normalized === "ingenieria") { return "ingenieria"; } return "all"; } export async function DiscoverResultsScreen({ searchParams }: { searchParams?: Record; }) { const query = readParam(searchParams?.q); const initialCategory = normalizeCategory( readParam(searchParams?.category) || readParam(searchParams?.serviceCategory) ); const requestQuery = new URLSearchParams(); if (query) { requestQuery.set("q", query); } const serialized = requestQuery.toString(); const [makersData, worksData] = await Promise.all([ serverFetch<{ makers: PublicMaker[] }>(`/makers${serialized ? `?${serialized}` : ""}`), serverFetch<{ works: PublicWork[] }>(`/works${serialized ? `?${serialized}` : ""}`) ]); return ( ); }