import { useState, useEffect } from "react"; import { Link } from "react-router-dom"; import Layout from "@/components/Layout"; import LoadingScreen from "@/components/LoadingScreen"; import { SkeletonOnboardingStep } from "@/components/Skeleton"; import UserTypeSelection from "@/components/onboarding/UserTypeSelection"; import PersonalInfo from "@/components/onboarding/PersonalInfo"; import Experience from "@/components/onboarding/Experience"; import Interests from "@/components/onboarding/Interests"; import Welcome from "@/components/onboarding/Welcome"; export type UserType = "game-developer" | "client" | "member" | "customer"; export interface OnboardingData { userType: UserType | null; personalInfo: { firstName: string; lastName: string; email: string; company?: string; }; experience: { level: string; skills: string[]; previousProjects?: string; }; interests: { primaryGoals: string[]; preferredServices: string[]; }; } const initialData: OnboardingData = { userType: null, personalInfo: { firstName: "", lastName: "", email: "", company: "", }, experience: { level: "", skills: [], previousProjects: "", }, interests: { primaryGoals: [], preferredServices: [], }, }; export default function Onboarding() { const [currentStep, setCurrentStep] = useState(0); const [data, setData] = useState(initialData); const [isLoading, setIsLoading] = useState(true); const [isTransitioning, setIsTransitioning] = useState(false); const steps = [ { title: "Choose Your Path", component: UserTypeSelection }, { title: "Personal Information", component: PersonalInfo }, { title: "Experience Level", component: Experience }, { title: "Interests & Goals", component: Interests }, { title: "Welcome to AeThex", component: Welcome }, ]; useEffect(() => { const timer = setTimeout(() => { setIsLoading(false); }, 1200); return () => clearTimeout(timer); }, []); const updateData = (newData: Partial) => { setData((prev) => ({ ...prev, ...newData })); }; const nextStep = () => { if (currentStep < steps.length - 1) { setIsTransitioning(true); setTimeout(() => { setCurrentStep((prev) => prev + 1); setIsTransitioning(false); }, 300); } }; const prevStep = () => { if (currentStep > 0) { setIsTransitioning(true); setTimeout(() => { setCurrentStep((prev) => prev - 1); setIsTransitioning(false); }, 300); } }; const CurrentStepComponent = steps[currentStep].component; if (isLoading) { return ( ); } return (
{/* Progress Bar */}

Join AeThex

Step {currentStep + 1} of {steps.length}
Already have an account?{" "} Sign In
{/* Step Indicators */}
{steps.map((_, index) => (
))}
{/* Step Content */}

{steps[currentStep].title}

{isTransitioning ? ( ) : (
)}
{/* Floating particles effect */}
{[...Array(15)].map((_, i) => (
))}
); }