"use client" import { checkIfOrgDomainExists } from "../../../actions" import { Button } from "@/components/ui/button" import { Input } from "@/components/ui/input" import { Form, FormField, FormItem, FormLabel, FormControl, FormDescription, FormMessage } from "@/components/ui/form" import { isServiceError } from "@/lib/utils" import { useForm } from "react-hook-form" import { z } from "zod" import { zodResolver } from "@hookform/resolvers/zod" import logoDark from "@/public/sb_logo_dark_large.png"; import logoLight from "@/public/sb_logo_light_large.png"; import Image from "next/image"; import { useState } from "react"; const onboardingFormSchema = z.object({ name: z.string() .min(2, { message: "Organization name must be at least 3 characters long." }) .max(30, { message: "Organization name must be at most 30 characters long." }), domain: z.string() .min(2, { message: "Organization domain must be at least 3 characters long." }) .max(20, { message: "Organization domain must be at most 20 characters long." }), }) export type OnboardingFormValues = z.infer const defaultValues: Partial = { name: "", domain: "", } interface OrgCreateFormProps { setOrgCreateData: (data: OnboardingFormValues) => void; } export function OrgCreateForm({ setOrgCreateData }: OrgCreateFormProps) { const form = useForm({ resolver: zodResolver(onboardingFormSchema), defaultValues }) const [errorMessage, setErrorMessage] = useState(null); async function submitOrgInfoForm(data: OnboardingFormValues) { const res = await checkIfOrgDomainExists(data.domain); if (res) { setErrorMessage("Organization domain already exists. Please try a different one."); return; } else { setOrgCreateData(data); } } return (
{"Sourcebot {"Sourcebot

Let's create your organization

( Organization Name )} /> ( Organization Domain
.sourcebot.dev
)} /> {errorMessage &&

{errorMessage}

}
) }