import type { Metadata } from "next"; import Link from "next/link"; import { PageHeader, Tag } from "@/components/status"; import { DateTime } from "@/components/time"; import { Button } from "@/components/ui/button"; import { Card, CardContent } from "@/components/ui/card"; import { Input } from "@/components/ui/input"; import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from "@/components/ui/table"; import { api, unwrap } from "@/lib/api"; import { ConsoleNav, requireModerator } from "../console-nav"; export const metadata: Metadata = { title: "People" }; export default async function People({ searchParams, }: { searchParams: Promise<{ q?: string | string[]; waiting?: string | string[] }>; }) { const params = await searchParams; const q = typeof params.q === "string" ? params.q.slice(0, 64) : ""; const waiting = params.waiting === "true"; const query = new URLSearchParams({ ...(q ? { q } : {}), ...(waiting ? { waiting: "true" } : {}) }).toString(); await requireModerator(`/console/people${query ? `?${query}` : ""}`); const { people } = unwrap(await api.console.people.get({ query: { ...(q ? { q } : {}), ...(waiting ? { waiting: true } : {}) } })); return ( <>
{waiting && }
{waiting ? "Show everyone" : "Waiting for approval"}
{people.length === 0 ? (

{waiting ? "Nobody is waiting." : "Nobody found."}

) : ( Username Role Link cap Joined {people.map((p) => ( {p.username} {p.role} {p.linkCap} {p.banned ? banned : !p.approved && waiting} ))}
)}
); }