import type { Metadata } from "next"; import { Suspense } from "react"; import { profileService } from "@/server/services/profile.service"; import { UserCard } from "@/features/profile/components/user-card"; import { PeopleFilter } from "@/features/profile/components/people-filter"; import { isVibe, vibeLabel } from "@/lib/vibe"; import { siteConfig } from "@/lib/site"; import { Users } from "lucide-react"; interface PeoplePageProps { searchParams: Promise<{ city?: string; interest?: string; vibe?: string; }>; } export async function generateMetadata({ searchParams, }: PeoplePageProps): Promise { const { city, interest, vibe: vibeParam } = await searchParams; const vibe = isVibe(vibeParam) ? vibeParam : undefined; const parts: string[] = []; if (vibe) parts.push(`Vibe ${vibeLabel(vibe).toLowerCase()}`); if (city) parts.push(`di ${city}`); if (interest) parts.push(`#${interest.toLowerCase()}`); const title = parts.length ? `Cari Teman ${parts.join(" ")}` : "Cari Teman Aktivitas — Profil Anggota"; const description = `Telusuri profil anggota ${siteConfig.name} berdasarkan minat, kota, dan vibe. Temukan calon teman trip dengan ritme yang cocok sebelum gabung bareng.`; return { title, description, alternates: { canonical: "/people" }, openGraph: { title, description, url: "/people" }, }; } export default async function PeoplePage({ searchParams }: PeoplePageProps) { const params = await searchParams; const vibe = isVibe(params.vibe) ? params.vibe : undefined; const filters = { city: params.city?.trim() || undefined, interest: params.interest?.trim().toLowerCase() || undefined, vibe, }; const hasFilters = Boolean(filters.city || filters.interest || filters.vibe); const people = await profileService.findPeople(filters); return (

Cari Teman Aktivitas

{hasFilters ? `${people.length} orang ditemukan dengan filter di atas` : `${people.length} anggota dengan profil sosial — kenali dulu sebelum gabung trip`}

{people.length === 0 ? (

{hasFilters ? "Belum ada anggota yang cocok" : "Belum ada anggota dengan profil terisi"}

{hasFilters ? "Coba longgarkan filter — kota, minat, atau vibe." : "Setelah anggota lain mengisi profil, mereka akan muncul di sini."}

) : ( )}
); }