import { db } from "@/db"; import Link from "next/link"; import { Button } from "@/components/ui/button"; import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow, } from "@/components/ui/table"; import { Badge } from "@/components/ui/badge"; import { Plus } from "lucide-react"; import { DeleteFormButton } from "@/components/delete-buttons"; import { AdminShellServer } from "@/components/admin-shell-server"; import { createDefaultForm } from "./actions"; import { RealtimeRefresh } from "@/components/realtime-refresh"; import { getFormSubmissionStats } from "@/lib/form/form-submission-stats"; import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"; import { isFormAcceptingSubmissions } from "@/lib/form/form-availability"; export const dynamic = "force-dynamic"; export default async function AdminFormsPage() { const formsList = await db.query.forms.findMany({ orderBy: (f, { desc }) => [desc(f.createdAt)], }); const submissionStats = await getFormSubmissionStats( formsList.map((form) => form.id), null ); return (

Forms

Manage your custom forms and view submissions.

Title Status Responses Created Actions {formsList.length === 0 ? ( No forms found. Create one to get started. ) : ( formsList.map((form) => { const isAccepting = isFormAcceptingSubmissions(form); return ( {form.title} {isAccepting ? ( Open ) : ( Closed )} {submissionStats.get(form.id)?.totalAnswers ?? 0} {form.createdAt ? new Date(form.createdAt).toLocaleDateString("en-GB", { timeZone: "Asia/Bangkok", }) : "N/A"}
); }) )}
{formsList.map((form) => { const isAccepting = isFormAcceptingSubmissions(form); return (
{form.title} {isAccepting ? "Open" : "Closed"}
{submissionStats.get(form.id)?.totalAnswers ?? 0} responses
); })} {formsList.length === 0 && ( No forms yet Create a form to start collecting responses. )}
); }