import Link from "next/link"; import { Building2 } from "lucide-react"; import { requireAdmin } from "@/lib/session"; import { listOrganizations, pageNum, str, PLAN_OPTIONS } from "@/lib/queries/admin"; import { formatNumber, formatUsd } from "@/lib/format"; import { PageHeader } from "@/components/ui/page-header"; import { Badge, StatusBadge } from "@/components/ui/badge"; import { EmptyState } from "@/components/ui/empty-state"; import { NativeSelect } from "@/components/ui/input"; import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from "@/components/ui/table"; import { DateCell, Pagination, Panel, PlanBadge, SearchForm, numCell } from "@/components/admin/primitives"; export const dynamic = "force-dynamic"; export default async function AdminOrganizationsPage({ searchParams }: { searchParams: Promise> }) { await requireAdmin(); const sp = await searchParams; const q = str(sp.q); const plan = str(sp.plan); const page = pageNum(sp.page); const data = await listOrganizations({ q: q || undefined, plan: plan || undefined, page }); return ( <> {PLAN_OPTIONS.map((p) => ( ))} } /> {data.total === 0 ? (
) : ( <> Name Plan Owner Projects Requests 30d Spend 30d Status Provider vis. Created {data.rows.map((o) => ( {o.name}
{o.slug}
{o.ownerEmail ?? "—"} {o.projects} {formatNumber(o.requests30d)} {formatUsd(o.spend30d)} {o.suspended ? : } {o.providerVisibility ? debug on : off}
))}
)}
); }