"use client"; import React, { useState } from "react"; import { Box, Button, Typography, Paper, Container, useTheme, useMediaQuery, } from "@mui/material"; import CheckCircleIcon from "@mui/icons-material/CheckCircle"; import IdentityForm from "./forms/identity/IdentityForm"; import PersonalInfoForm from "./forms/personal/PersonalInfoForm"; import PhysicalInfoForm from "./forms/physicalInfo/PhysicalInfoForm"; import SkillsForm from "./forms/skillsForm/SkillsForm"; import JobInfoForm from "./forms/jobInfo/JobInfoForm"; import RelationsForm from "./forms/relation/RelationForm"; import RegistrationCenterForm from "./forms/register-center/RegistrationCenterForm"; import { INITIAL_WIZARD_DATA, WizardFormData } from "@/core/types"; import EducationForm from "./forms/education/EducationForm"; import CourseForm from "./forms/course/CourseForm"; import JobRequestForm from "./forms/jobRequest/JobRequestForm"; import WorkExperienceForm from "./forms/workExperience/WorkExperienceForm"; import ReferralForm from "./forms/referral/ReferralForm"; import { useSearchParams } from "next/navigation"; // کامپوننت پیش‌فرض برای مراحلی که هنوز نساختید const PlaceholderStep = ({ step }: any) => ( محتوای مرحله {step} در حال طراحی است... ); // --- ۲. نگاشت (Mapping) مراحل به کامپوننت‌ها --- const STEP_COMPONENTS: Record> = { 1: RegistrationCenterForm, 2: IdentityForm, 3: PersonalInfoForm, 4: PhysicalInfoForm, 5: EducationForm, 6: JobRequestForm, 7: CourseForm, 8: SkillsForm, 9: WorkExperienceForm, 10: JobInfoForm, 11: ReferralForm, 12: RelationsForm, // بقیه مراحل از Placeholder استفاده می‌کنند }; const STEP_LABELS = [ "انتخاب مركز", "مشخصات هويتي", "مشخصات فردي", "مشخصات ظاهري", "مشخصات تحصيلي", "شغل درخواستي", "دوره هاي آموزشي", "مهارت ها", "سوابق كاري", "اطلاعات كاري", "معرف", "مشخصات آشنايان", ]; // --- ۳. کامپوننت اصلی استپر --- export default function MultiStepForm() { const searchParams = useSearchParams(); // خواندن مرحله از URL (اگر نبود، پیش‌فرض ۱) const initialStep = Number(searchParams.get("step")) || 1; const [activeStep, setActiveStep] = useState(initialStep); const [maxStepReached, setMaxStepReached] = useState(initialStep); const [formData, setFormData] = useState(() => { // اگر می‌خواهی بعد از رفرش دیتا نپرد، اینجا از localStorage بخون return INITIAL_WIZARD_DATA; }); const updateFormData = (patch: Partial) => { setFormData((prev) => ({ ...prev, ...patch })); }; const theme = useTheme(); const isMobile = useMediaQuery(theme.breakpoints.down("md")); const ActiveStepComponent = STEP_COMPONENTS[activeStep] || PlaceholderStep; return (
{/* Sidebar Navigation */} {!isMobile && (
مراحل فرم {STEP_LABELS.map((label, i) => ( i + 1 <= maxStepReached && setActiveStep(i + 1) } sx={{ display: "flex", alignItems: "center", mb: 2, cursor: i + 1 <= maxStepReached ? "pointer" : "not-allowed", opacity: i + 1 <= maxStepReached ? 1 : 0.4, color: i + 1 === activeStep ? "#2563eb" : "#64748b", transition: "0.2s", }} > {i + 1 < activeStep ? ( ) : ( Number(i + 1).toLocaleString("fa-IR") )} {label} ))}
)} {/* Main Form Area */}
مرحله {activeStep.toLocaleString("fa-IR")} از{" "} {STEP_LABELS.length.toLocaleString("fa-IR")} {STEP_LABELS[activeStep - 1]} {/* رندر شدن داینامیک کامپوننت مرحله فعلی */}
); }