'use client' import { useEffect } from 'react' import { useForm } from 'react-hook-form' import { zodResolver } from '@hookform/resolvers/zod' import { z } from 'zod' import { Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, } from '@/components/ui/dialog' import { Button } from '@/components/ui/button' import { Input } from '@/components/ui/input' import { Textarea } from '@/components/ui/textarea' import { Label } from '@/components/ui/label' import { useCreateNotebook } from '@/lib/hooks/use-notebooks' const createNotebookSchema = z.object({ name: z.string().min(1, 'Name is required'), description: z.string().optional(), }) type CreateNotebookFormData = z.infer interface CreateNotebookDialogProps { open: boolean onOpenChange: (open: boolean) => void } export function CreateNotebookDialog({ open, onOpenChange }: CreateNotebookDialogProps) { const createNotebook = useCreateNotebook() const { register, handleSubmit, formState: { errors, isValid }, reset, } = useForm({ resolver: zodResolver(createNotebookSchema), mode: 'onChange', defaultValues: { name: '', description: '', }, }) const closeDialog = () => onOpenChange(false) const onSubmit = async (data: CreateNotebookFormData) => { await createNotebook.mutateAsync(data) closeDialog() reset() } useEffect(() => { if (!open) { reset() } }, [open, reset]) return ( Create New Notebook Start organizing your research with a dedicated space for related sources and notes.
{errors.name && (

{errors.name.message}

)}