import { createFileRoute, useNavigate } from "@tanstack/react-router"; import { requireSignedIn } from "~/lib/route-guards"; import { createOrganization } from "~/fns/account"; import { useAction } from "~/hooks/use-action"; import { Button } from "~/ui/Button"; import { TextField } from "~/ui/Field"; import { ErrorBanner } from "~/ui/Callout"; import { PageContainer } from "~/ui/PageContainer"; import { Panel } from "~/ui/Panel"; import { Heading } from "~/ui/Heading"; export const Route = createFileRoute("/orgs/new")({ beforeLoad: ({ context, location }) => { requireSignedIn({ context, location }); }, component: NewOrgPage, }); function NewOrgPage() { const navigate = useNavigate(); const action = useAction(createOrganization); async function submit(event: React.SubmitEvent) { event.preventDefault(); const form = new FormData(event.currentTarget); const displayName = String(form.get("displayName") ?? "").trim(); const result = await action.run({ data: { name: String(form.get("name") ?? ""), displayName: displayName || null }, }); if (result) await navigate({ to: "/$owner", params: { owner: result.name } }); } return ( New organization
); }