'use client'; import type { ComponentProps } from 'react'; import { useRef } from 'react'; import type { FieldErrors, UseFormRegister } from 'react-hook-form'; import { Loader2 } from 'lucide-react'; import { FormField } from '@/components/form'; import { ProjectSelect } from '@/components/lookups/ProjectSelect'; import { Button } from '@/components/ui/button'; import { Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, } from '@/components/ui/dialog'; import { Input } from '@/components/ui/input'; import type { PackageFormValues } from '../hooks/usePackageForm'; interface PackageDialogProps { open: boolean; onOpenChange: (open: boolean) => void; packageId?: string; projectId: string; onProjectChange: (projectId: string) => void; register: UseFormRegister; errors: FieldErrors; isSubmitted: boolean; onSubmit: ComponentProps<'form'>['onSubmit']; canSubmit: boolean; isSaving: boolean; } export function PackageDialog({ open, onOpenChange, packageId, projectId, onProjectChange, register, errors, isSubmitted, onSubmit, canSubmit, isSaving, }: PackageDialogProps) { const projectSelectPortalRef = useRef(null); const projectErrorMessage = isSubmitted ? errors.project_id?.message : undefined; const nameErrorMessage = isSubmitted ? errors.name?.message : undefined; const startErrorMessage = isSubmitted ? errors.chainage_start_km?.message : undefined; const endErrorMessage = isSubmitted ? errors.chainage_end_km?.message : undefined; return ( event.preventDefault()} > {packageId ? 'Edit Package' : 'Create Package'} Manage package details and optional chainage range.

Basic details

Project binding, package name, and region.

{!packageId ? ( ) : null}

Chainage range

start and end kilometre values.

); }