← back to Homesonspec
apps/admin/src/app/leads/page.tsx
37 lines
import { prisma } from "@homesonspec/database";
import { CreatedChip } from "@homesonspec/shared-ui";
export const dynamic = "force-dynamic";
export default async function LeadsPage() {
const leads = await prisma.lead.findMany({
orderBy: { createdAt: "desc" },
take: 100,
include: { home: { select: { street: true, city: true, state: true } } },
});
return (
<div>
<h1 className="text-2xl font-bold">Leads</h1>
<p className="mt-1 text-sm text-neutral-500">Builder inquiries recorded by the contact forms (delivery deferred in v1).</p>
<div className="mt-4 space-y-3">
{leads.map((lead) => (
<div key={lead.id} className="rounded-xl border border-neutral-200 bg-white p-4 text-sm shadow-sm">
<div className="flex items-center justify-between">
<span><span className="font-medium">{lead.name}</span> <span className="text-neutral-500">({lead.email}{lead.phone ? ` · ${lead.phone}` : ""})</span></span>
<CreatedChip date={lead.createdAt} />
</div>
{lead.home && (
<p className="mt-1 text-xs text-neutral-500">
Re: {lead.home.street}, {lead.home.city}, {lead.home.state}
</p>
)}
{lead.message && <p className="mt-2 text-neutral-700">{lead.message}</p>}
</div>
))}
{leads.length === 0 && <p className="text-neutral-500">No leads yet.</p>}
</div>
</div>
);
}