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