"use client" import { useState } from "react" import { useNavigate } from "react-router-dom" import { Card, CardContent } from "@/components/ui/card" import { Input } from "@/components/ui/input" import { Textarea } from "@/components/ui/textarea" import { Label } from "@/components/ui/label" import apiService from "@/services/apiService" import { showSuccessToast, showErrorToast, showUpdateItemToast } from "@/utils/toast" import { buildFormData } from "@/utils/formDataBuilder" // Import hooks import { useMigrantForm } from "@/hooks/useMigrantForm" import { usePhotoManagement } from "@/hooks/usePhotoManagement" import { useMigrantData } from "@/hooks/useMigrantData" // Import components import AddDialog from "./Modal/AddDialog" import UpdateDialog from "./Modal/UpdateDialog" // Import step components import PersonDetailsStep from "./form-steps/PersonDetailsStep" import MigrationInfoStep from "./form-steps/MigrationInfoStep" import NaturalizationStep from "./form-steps/NaturalizationStep" import ResidenceStep from "./form-steps/ResidenceStep" import FamilyStep from "./form-steps/FamilyStep" import InternmentStep from "./form-steps/InternmentStep" import PhotosStep from "./form-steps/PhotosStep" import ReviewStep from "./form-steps/ReviewStep" import StepperHeader from "./form-steps/StepperHeader" import StepperNavigation from "./form-steps/StepperNavigation" const StepperForm = () => { const navigate = useNavigate() // Form state management const { formData, setters, resetForm, populateFormData, validation } = useMigrantForm() const photoManagement = usePhotoManagement() const { loading, isEditMode, initialDataLoaded } = useMigrantData( populateFormData, photoManagement.populatePhotoData ) // Local state const [currentStep, setCurrentStep] = useState(0) const [isAddDialogOpen, setIsAddDialogOpen] = useState(false) const [isUpdateDialogOpen, setIsUpdateDialogOpen] = useState(false) const [isSubmitting, setIsSubmitting] = useState(false) const renderFormField = ( label: string, value: string, onChange: (value: string) => void, type = "text", placeholder?: string, required?: boolean, fieldPath?: string // Add this to identify the field for validation ) => { const hasError = fieldPath ? validation.hasFieldError(fieldPath) : false const errorMessage = fieldPath ? validation.getFieldError(fieldPath) : null return (
{type === "textarea" ? (