import Link from "next/link"; import type { Metadata } from "next"; import { Sparkle } from "@/components/Sparkle"; import { getActiveMembersWithCategory, getAllCategories, getLiveBadgesByMember, } from "@/lib/queries"; import { AnnuaireClient, type DirectoryMember } from "./AnnuaireClient"; export const dynamic = "force-dynamic"; export const metadata: Metadata = { title: "Annuaire — Plein R", description: "L'annuaire des commerçants et entreprises du Bassin de Pompey. Trouvez un professionnel et ses bons plans.", }; export default async function AnnuairePage({ searchParams, }: { searchParams: Promise<{ q?: string }>; }) { const { q } = await searchParams; const [rawMembers, categories, badges] = await Promise.all([ getActiveMembersWithCategory(), getAllCategories(), getLiveBadgesByMember(), ]); const badgeByMember = new Map(); for (const b of badges) { if (b.memberId != null && !badgeByMember.has(b.memberId)) { badgeByMember.set(b.memberId, b.badge); } } const members: DirectoryMember[] = rawMembers.map((m) => ({ ...m, hasPromo: badgeByMember.has(m.id), promoBadge: badgeByMember.get(m.id) ?? null, })); return (
{/* header */}
{/* eslint-disable-next-line @next/next/no-img-element */} Plein R Plein R
{/* title block */}
{members.length} adhérents

L'annuaire des commerçants & entreprises

Trouvez un professionnel du Bassin de Pompey, découvrez sa fiche et ses bons plans.

{/* join CTA */}
Vous n'êtes pas encore référencé ?

Rejoignez l'annuaire Plein R

Adhérer à l'association
{/* footer */}
); }