"use client"; import { useForm } from "react-hook-form"; import { zodResolver } from "@hookform/resolvers/zod"; import { z } from "zod"; 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 { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from "@/components/ui/select"; import { FileUpload } from "@/components/common/file-upload"; import { useRouter } from "next/navigation"; import { correspondenceApi } from "@/lib/api/correspondences"; import { useState } from "react"; import { Loader2 } from "lucide-react"; const correspondenceSchema = z.object({ subject: z.string().min(5, "Subject must be at least 5 characters"), description: z.string().optional(), document_type_id: z.number().default(1), // Default to General for now from_organization_id: z.number({ required_error: "Please select From Organization" }), to_organization_id: z.number({ required_error: "Please select To Organization" }), importance: z.enum(["NORMAL", "HIGH", "URGENT"]).default("NORMAL"), attachments: z.array(z.instanceof(File)).optional(), }); type FormData = z.infer; export function CorrespondenceForm() { const router = useRouter(); const [isSubmitting, setIsSubmitting] = useState(false); const { register, handleSubmit, setValue, watch, formState: { errors }, } = useForm({ resolver: zodResolver(correspondenceSchema), defaultValues: { importance: "NORMAL", document_type_id: 1, }, }); const onSubmit = async (data: FormData) => { setIsSubmitting(true); try { await correspondenceApi.create(data as any); // Type casting for mock router.push("/correspondences"); router.refresh(); } catch (error) { console.error(error); alert("Failed to create correspondence"); } finally { setIsSubmitting(false); } }; return (
{/* Subject */}
{errors.subject && (

{errors.subject.message}

)}
{/* Description */}