"use client"; import { useState } from "react"; import { useForm } from "react-hook-form"; import { zodResolver } from "@hookform/resolvers/zod"; import * as z from "zod"; import { Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, DialogTrigger, } from "@/components/ui/dialog"; import { Form, FormControl, FormField, FormItem, FormLabel, FormMessage, } from "@/components/ui/form"; import { Input } from "@/components/ui/input"; import { Button } from "@/components/ui/button"; import { Plus, Rocket } from "lucide-react"; const formSchema = z.object({ namespace: z.string().min(1, "Namespace is required"), repo: z.string().min(1, "Repository name is required"), }); interface AddRepoDialogProps { onAdd: (namespace: string, repo: string) => Promise; } export function AddRepoDialog({ onAdd }: AddRepoDialogProps) { const [open, setOpen] = useState(false); const [isSubmitting, setIsSubmitting] = useState(false); const form = useForm>({ resolver: zodResolver(formSchema), defaultValues: { namespace: "", repo: "", }, }); async function onSubmit(values: z.infer) { setIsSubmitting(true); try { await onAdd(values.namespace, values.repo); setOpen(false); form.reset(); } finally { setIsSubmitting(false); } } return (
Monitor New Space Enter the Hugging Face Space repository details (e.g., username/space-name).
( Namespace / Username )} /> ( Space Name )} />
); }