import { Form, FormField, FormItem, FormLabel, FormControl, FormDescription, FormMessage, Input, Button, Textarea, } from "@repo/ui"; import { zodResolver } from "@hookform/resolvers/zod"; import { Building2Icon } from "lucide-react"; import { useForm } from "react-hook-form"; import { z } from "zod"; import { trpc } from "@/trpc"; import { useNavigate } from "react-router"; import { useLocalStorage } from "usehooks-ts"; const formSchema = z.object({ name: z .string() .min(2, { message: "Organization name must be at least 2 characters" }) .max(50, { message: "Organization name must be less than 50 characters" }), description: z.string().optional(), }); export function OnboardingPage() { const form = useForm>({ resolver: zodResolver(formSchema), defaultValues: { name: "", description: "", }, }); const [, setOrgId] = useLocalStorage("orgId", ""); const navigate = useNavigate(); const createOrganization = trpc.organization.create.useMutation(); function onSubmit(values: z.infer) { createOrganization.mutate(values, { onSuccess: (data) => { setOrgId(data.organization.id); navigate("/dashboard"); }, }); } return (

Create your organization

Get started by creating your first organization.

( Organization name This is your organization's visible name. )} /> ( Description