"use client"; import * as z from "zod"; import { zodResolver } from "@hookform/resolvers/zod"; import { useForm } from "react-hook-form"; import { Button } from "@/components/ui/button"; import { Input } from "@/components/ui/input"; import { Form, FormControl, FormDescription, FormField, FormItem, FormLabel, FormMessage, } from "@/components/ui/form"; import ScopeSection from "@/components/scopes/ScopeSection"; import { scopesInfo } from "@/lib/utils"; import { Dispatch, SetStateAction } from "react"; import { AppEntry } from "@/lib/types"; import { AppInfo } from "./FormContainer"; const formSchema = z.object({ instanceUrl: z.string().trim(), clientName: z.string().trim(), redirectUris: z.string().trim(), scopes: z.string().array().nonempty().optional(), website: z.string().url().trim().optional(), }); export type FormSchema = z.infer; interface InputFormProps { createApp: ({ }: FormSchema) => Promise setAppInfo: Dispatch> } const InputForm: React.FC = ({ createApp, setAppInfo }) => { const form = useForm({ resolver: zodResolver(formSchema), defaultValues: { instanceUrl: "https://", clientName: "", redirectUris: "", scopes: ["read"], }, }); const onSubmit = async (values: FormSchema) => { setAppInfo(values) await createApp(values) } return (
( Instance )} /> ( Application name )} /> ( Application Website )} /> ( Redirect URI Use{" "} urn:ietf:wg:oauth:2.0:oob {" "} for local tests )} /> ( Scopes (
{scopesInfo.map((info) => ( ))}
)} >
)} /> ); }; export default InputForm;