"use client"; import { X } from "lucide-react"; import { useForm } from "react-hook-form"; import { z } from "zod"; import { zodResolver } from "@hookform/resolvers/zod"; import { Dialog, DialogContent, DialogHeader, DialogTitle, DialogDescription, Button, Form, FormField, FormItem, FormLabel, FormControl, FormMessage, Input, Textarea, Select, SelectTrigger, SelectValue, SelectContent, SelectItem, } from "ikoncomponents"; /* ---------------- Schema ---------------- */ const integrationSchema = z.object({ name: z.string().min(1, "Integration name is required"), systemType: z.string().min(1, "System type is required"), connectionMethod: z.string().min(1, "Connection method is required"), endpointUrl: z.string().url("Invalid URL").optional().or(z.literal("")), description: z.string().optional(), }); type IntegrationFormValues = z.infer; interface Props { open: boolean; onClose: () => void; onSubmit: (data: IntegrationFormValues) => void; } /* ---------------- Component ---------------- */ export default function AddIntegrationModal({ open, onClose, onSubmit, }: Props) { const form = useForm({ resolver: zodResolver(integrationSchema), defaultValues: { name: "", systemType: "", connectionMethod: "", endpointUrl: "", description: "", }, }); const handleClose = () => { form.reset(); onClose(); }; const handleCreateIntegration = (data: IntegrationFormValues) => { console.log("Integration form data:", { ...data, }); onSubmit(data); // pass to parent if needed handleClose(); // close + reset modal }; return ( {/* Header */} Add External Integration {/* Form */}
{/* Integration Name */} ( Integration Name * )} /> {/* System Type */} ( System Type * )} /> {/* Connection Method */} ( Connection Method{" "} * )} /> {/* Endpoint URL */} ( Endpoint URL )} /> {/* Description */} ( Description