"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/PersonalInfoForm"; import PhysicalInfoForm from "./forms/PhysicalInfoForm"; import EducationSection from "./forms/EducationSection"; import JobRequestSection from "./forms/JobRequestSection"; import CourseSection from "./forms/CourseSection"; import SkillsForm from "./forms/SkillsForm"; import { WorkExperienceSection } from "./forms/WorkExperienceSection"; import JobInfoForm from "./forms/JobInfoForm"; import { ReferralSection } from "./forms/ReferralForm"; import RelationsForm from "./forms/RelationForm"; import RegistrationCenterForm from "./forms/register-center/RegistrationCenterForm"; import { INITIAL_WIZARD_DATA, WizardFormData } from "@/core/types"; // کامپوننت پیش‌فرض برای مراحلی که هنوز نساختید const PlaceholderStep = ({ step }: any) => ( محتوای مرحله {step} در حال طراحی است... ); // --- ۲. نگاشت (Mapping) مراحل به کامپوننت‌ها --- const STEP_COMPONENTS: Record> = { 1: RegistrationCenterForm, 2: IdentityForm, 3: PersonalInfoForm, 4: PhysicalInfoForm, 5: EducationSection, 6: JobRequestSection, 7: CourseSection, 8: SkillsForm, 9: WorkExperienceSection, 10: JobInfoForm, 11: ReferralSection, 12: RelationsForm, // بقیه مراحل از Placeholder استفاده می‌کنند }; const STEP_LABELS = [ "انتخاب مركز", "مشخصات هويتي", "مشخصات فردي", "مشخصات ظاهري", "مشخصات تحصيلي", "شغل درخواستي", "دوره هاي آموزشي", "مهارت ها", "سوابق كاري", "اطلاعات كاري", "معرف", "مشخصات آشنايان", ]; // --- ۳. کامپوننت اصلی استپر --- export default function MultiStepForm() { const [activeStep, setActiveStep] = useState(1); const [maxStepReached, setMaxStepReached] = useState(1); const [formData, setFormData] = useState(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]} {/* رندر شدن داینامیک کامپوننت مرحله فعلی */}
); }