'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 { PackageSelect } from '@/components/lookups/PackageSelect'; 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 { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from '@/components/ui/select'; import type { SegmentFormValues } from '../hooks/useSegmentForm'; interface SegmentDialogProps { open: boolean; onOpenChange: (open: boolean) => void; segmentId?: string; projectId: string; onProjectChange: (projectId: string) => void; packageId: string; onPackageChange: (packageId: string) => void; direction: 'UP' | 'DOWN'; onDirectionChange: (direction: 'UP' | 'DOWN') => void; register: UseFormRegister; errors: FieldErrors; isSubmitted: boolean; onSubmit: ComponentProps<'form'>['onSubmit']; canSubmit: boolean; isSaving: boolean; } export function SegmentDialog({ open, onOpenChange, segmentId, projectId, onProjectChange, packageId, onPackageChange, direction, onDirectionChange, register, errors, isSubmitted, onSubmit, canSubmit, isSaving, }: SegmentDialogProps) { const projectSelectPortalRef = useRef(null); const packageSelectPortalRef = useRef(null); const getError = (field: keyof SegmentFormValues) => isSubmitted ? errors[field]?.message : undefined; return ( event.preventDefault()} > {segmentId ? 'Edit Segment' : 'Create Segment'} Manage segment binding, chainage values, direction, and coordinates.

Basic details

Project, package, segment name, and direction.

{!segmentId ? (
) : null}

Chainage

Required start and end kilometre values.

Coordinates

Required start and end point latitude and longitude.

); }