← 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>
  );
}