"use client" import { useState, useEffect } 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, } from "@/components/ui/dialog" import { Button } from "@/components/ui/button" import { Form, FormControl, FormField, FormItem, FormLabel, FormMessage, } from "@/components/ui/form" import { Input } from "@/components/ui/input" import { Textarea } from "@/components/ui/textarea" import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from "@/components/ui/select" import { Lead, LeadStatus, User } from "@/types" import { LEAD_SOURCES, LEAD_STATUSES } from "@/lib/constants" import { users } from "@/data/users" const leadFormSchema = z.object({ companyName: z.string().min(1, "Company name is required"), contactName: z.string().min(1, "Contact name is required"), email: z.string().email("Invalid email address"), phone: z.string().optional(), source: z.string().optional(), description: z.string().optional(), status: z.string(), assignedUserId: z.string().optional(), }) type LeadFormValues = z.infer interface LeadFormDialogProps { open: boolean onOpenChange: (open: boolean) => void lead?: Lead | null } export function LeadFormDialog({ open, onOpenChange, lead }: LeadFormDialogProps) { const isEditing = !!lead const form = useForm({ resolver: zodResolver(leadFormSchema), defaultValues: { companyName: "", contactName: "", email: "", phone: "", source: "", description: "", status: "open", assignedUserId: "", }, }) useEffect(() => { if (lead) { form.reset({ companyName: lead.companyName, contactName: lead.contactName, email: lead.email, phone: lead.phone || "", source: lead.source || "", description: lead.description || "", status: lead.status, assignedUserId: lead.assignedUserId || "", }) } else { form.reset({ companyName: "", contactName: "", email: "", phone: "", source: "", description: "", status: "open", assignedUserId: "", }) } }, [lead, form]) function onSubmit(values: LeadFormValues) { console.log(values) onOpenChange(false) } return ( {isEditing ? "Edit Lead" : "Create New Lead"} {isEditing ? "Update the lead information below." : "Fill in the details to add a new lead."}
( Company Name )} /> ( Contact Name )} /> ( Email )} /> ( Phone )} /> ( Source )} /> ( Status )} />
( Description