"use client"; import { useMemo } from "react"; import Link from "next/link"; import { useParams, useRouter } from "next/navigation"; import { ClipboardList, Plus } from "lucide-react"; import { Badge } from "@/components/ui/badge"; import { Button } from "@/components/ui/button"; import { api } from "@/lib/trpc"; function formatUpdatedAt(value: Date | string): string { const date = value instanceof Date ? value : new Date(value); if (Number.isNaN(date.getTime())) return String(value); return date.toLocaleString(); } export default function FormsListPage() { const params = useParams(); const router = useRouter(); const utils = api.useUtils(); const workspaceSlug = typeof params?.workspaceSlug === "string" ? params.workspaceSlug : undefined; const listQuery = api.forms.list.useQuery( { workspace: workspaceSlug! }, { enabled: Boolean(workspaceSlug) }, ); const createMutation = api.forms.create.useMutation({ onSuccess: (created) => { if (workspaceSlug) { void utils.forms.list.invalidate({ workspace: workspaceSlug }); router.push(`/${workspaceSlug}/forms/${created.id}/edit`); } }, }); const forms = useMemo( () => listQuery.data?.forms ?? [], [listQuery.data?.forms], ); return (
Build forms that create or update tasks in this workspace.
Loading forms…
) : !workspaceSlug ? (Missing workspace.
) : forms.length === 0 ? ({form.title}
{form.description ? ({form.description}
) : null}