import React from "react"; import { AnimatePresence, motion } from "framer-motion"; import { useLocation, useSearchParams } from "react-router-dom"; import "./steps-manager.css"; import Progressbar from "@/components/palmistry/progress-bar/progress-bar"; import PalmistryContainer from "@/components/palmistry/palmistry-container/palmistry-container"; import useSteps, { Step } from "@/hooks/palmistry/use-steps"; import StepWelcome from "@/components/palmistry/step-welcome/step-welcome"; import StepGender from "@/components/palmistry/step-gender/step-gender"; import StepBirthdate from "@/components/palmistry/step-birthdate/step-birthdate"; import StepPalmsHold from "@/components/palmistry/step-palms-hold/step-palms-hold"; import StepWish from "@/components/palmistry/step-wish/step-wish"; import StepRelationshipStatus from "@/components/palmistry/step-relationship-status/step-relationship-status"; import StepResonatedElement from "@/components/palmistry/step-resonated-element/step-resonated-element"; import StepColorYouLike from "@/components/palmistry/step-color-you-like/step-color-you-like"; import StepDecisions from "@/components/palmistry/step-decisions/step-decisions"; import StepGuidancePlan from "@/components/palmistry/step-guidance-plan/step-guidance-plan"; import StepPersonalStatement from "@/components/palmistry/step-personal-statement/step-personal-statement"; import StepScanInfo from "@/components/palmistry/step-scan-info/step-scan-info"; import StepUpload from "@/components/palmistry/step-upload/step-upload"; import StepScanPhoto from "@/components/palmistry/step-scan-photo/step-scan-photo"; import StepEmail from "@/components/palmistry/step-email/step-email"; import StepSubscriptionPlan from "@/components/palmistry/step-subscription-plan/step-subscription-plan"; import StepPaywall from "@/components/palmistry/step-paywall/step-paywall"; import PaymentScreen from "@/components/palmistry/payment-screen/payment-screen"; import DiscountScreen from "@/components/palmistry/discount-screen/discount-screen"; import PremiumBundleScreen from "@/components/palmistry/premium-bundle-screen/premium-bundle-screen"; const PalmistryContainerWrapper = (props: { children: React.ReactNode; currentStep: Step; }) => { return ( {props.children} ); }; const animationDuration = 0.2; export default function StepsManager() { const steps = useSteps(); const { pathname } = useLocation(); const [searchParams] = useSearchParams(); const [modalIsOpen, setModalIsOpen] = React.useState(false); React.useLayoutEffect(() => { if (!steps.isInited) return; steps.goFirstUnpassedStep(searchParams.toString()); // eslint-disable-next-line react-hooks/exhaustive-deps }, [steps.isInited]); const motionDivClassName = [ "steps-manager__motion-div", modalIsOpen ? "steps-manager__motion-div_no-transform" : "", ]; const nonSliderSteps = [Step.Payment, Step.Discount, Step.PremiumBundle]; return (
{steps.currentNumber >= steps.progressBarRange[0] && steps.currentNumber <= steps.progressBarRange[1] && ( )}
{(nonSliderSteps.includes(steps.current as Step) || steps.current === Step.Paywall) && (
{[Step.Paywall, Step.Payment].includes(steps.current as Step) && } {steps.current === Step.Discount && } {steps.current === Step.PremiumBundle && }
)} {!nonSliderSteps.includes(steps.current as Step) && ( {steps.current === Step.Welcome && } {steps.current === Step.Gender && } {steps.current === Step.Birthdate && } {steps.current === Step.PalmsHold && } {steps.current === Step.Wish && } {steps.current === Step.RelationshipStatus && ( )} {steps.current === Step.ResonatedElement && ( )} {steps.current === Step.ColorYouLike && } {steps.current === Step.Decisions && } {steps.current === Step.GuidancePlan && } {steps.current === Step.PersonalStatement && ( )} {steps.current === Step.ScanInfo && } {steps.current === Step.Upload && ( )} {steps.current === Step.ScanPhoto && } {steps.current === Step.Email && } {steps.current === Step.SubscriptionPlan && ( )} {steps.current === Step.Paywall && } )}
); }