import routes from "@/routes";
import { Route, Routes } from "react-router-dom";
import LayoutABDesignV1 from "./LayoutABDesignV1";
import GenderPage from "@/components/pages/ABDesign/v1/pages/Gender";
import QuestionnairePage from "@/components/pages/ABDesign/v1/components/Questionnaire";
import GoalSetupPage from "@/components/pages/ABDesign/v1/pages/GoalSetup";
import AboutUsPage from "@/components/pages/ABDesign/v1/pages/AboutUs";
import HyperPersonalizedAstrologyPage from "@/components/pages/ABDesign/v1/pages/HyperPersonalizedAstrologyPage";
import SingleZodiacInfoPage from "@/components/pages/ABDesign/v1/pages/SingleZodiacInfo";
import RelationshipZodiacInfoPage from "@/components/pages/ABDesign/v1/pages/RelationshipZodiacInfo";
import NoBirthtimePage from "@/components/pages/ABDesign/v1/pages/NoBirthtime";
import RelationshipAlmostTherePage from "@/components/pages/ABDesign/v1/pages/RelationshipAlmostThere";
import LoadingInRelationshipPage from "@/components/pages/ABDesign/v1/pages/LoadingInRelationship";
import ProblemsPage from "@/components/pages/ABDesign/v1/pages/Problems";
import WorksRouterPage from "./WorksRouter";
import QuestionnaireIntermediatePage from "@/components/pages/ABDesign/v1/pages/QuestionnaireIntermediate";
import NotAlonePage from "@/components/pages/ABDesign/v1/pages/NotAlone";
import AllRightPage from "@/components/pages/ABDesign/v1/pages/AllRight";
import AlmostTherePage from "@/components/pages/ABDesign/v1/pages/AlmostThere";
import PartnerRightPlacePage from "@/components/pages/ABDesign/v1/pages/PartnerRightPlace";
import PartnerThingPage from "@/components/pages/ABDesign/v1/pages/PartnerThing";
import PartnerTotallyNormalPage from "@/components/pages/ABDesign/v1/pages/PartnerTotallyNormal";
import WithHeartPage from "@/components/pages/ABDesign/v1/pages/WithHeart";
import WithHeadPage from "@/components/pages/ABDesign/v1/pages/WithHead";
import BothPage from "@/components/pages/ABDesign/v1/pages/Both";
import Satisfied from "@/components/pages/ABDesign/v1/pages/Satisfied";
import LoadingProfilePage from "@/components/pages/ABDesign/v1/pages/LoadingProfile";
import EmailEnterPage from "@/components/pages/ABDesign/v1/pages/EmailEnterPage";
import EmailConfirmPage from "@/components/pages/ABDesign/v1/pages/EmailConfirm";
import OnboardingPage from "@/components/pages/ABDesign/v1/pages/Onboarding";
import TrialChoicePage from "@/components/pages/ABDesign/v1/pages/TrialChoice";
import TrialPaymentPage from "@/components/pages/ABDesign/v1/pages/TrialPayment";
import TrialPaymentWithDiscount from "@/components/pages/ABDesign/v1/pages/TrialPaymentWithDiscount";
import AdditionalDiscount from "@/components/pages/ABDesign/v1/pages/AdditionalDiscount";
import MentionedInPage from "@/components/pages/ABDesign/v1/pages/MentionedIn";
import TryAppPage from "@/components/pages/ABDesign/v1/pages/TryApp";
import TrialChoiceVideoPage from "@/components/pages/ABDesign/v1/pages/TrialChoiceVideo";
import FindHappiness from "@/components/pages/ABDesign/v1/pages/FindHappiness";
import ScanInstruction from "@/components/pages/ABDesign/v1/pages/ScanInstruction";
import Camera from "@/components/pages/ABDesign/v1/pages/Camera";
import ScannedPhoto from "@/components/pages/ABDesign/v1/pages/ScannedPhoto";
import AddReportPage from "@/components/pages/ABDesign/v1/pages/AdditionalPurchases/pages/AddReport";
import UnlimitedReadingsPage from "@/components/pages/ABDesign/v1/pages/AdditionalPurchases/pages/UnlimitedReadings";
import AddConsultationPage from "@/components/pages/ABDesign/v1/pages/AdditionalPurchases/pages/AddConsultation";
import { AuthorizedUserOutlet, PrivateOutlet } from "@/components/App";
import AdditionalPurchases from "@/components/pages/ABDesign/v1/pages/AdditionalPurchases";
import LayoutSession from "./LayoutSession";

function ABDesignV1Routes() {
  return (
    <Routes>
      <Route element={<LayoutSession />}>
        <Route element={<LayoutABDesignV1 />}>
          <Route element={<AuthorizedUserOutlet />}>
            <Route path={routes.client.genderV1()} element={<GenderPage />}>
              <Route path=":targetId/*" element={<GenderPage />} />
            </Route>
            <Route
              path={routes.client.questionnaireV1()}
              element={<QuestionnairePage />}
            >
              <Route path=":stepId" element={<QuestionnairePage />}>
                <Route path=":question" element={<QuestionnairePage />} />
              </Route>
            </Route>

            <Route
              path={routes.client.goalSetupV1()}
              element={<GoalSetupPage />}
            />
            <Route path={routes.client.aboutUsV1()} element={<AboutUsPage />} />
            <Route
              path={routes.client.hyperPersonalizedAstrologyV1()}
              element={<HyperPersonalizedAstrologyPage />}
            />
            <Route
              path={routes.client.singleZodiacInfoV1()}
              element={<SingleZodiacInfoPage />}
            />
            <Route
              path={routes.client.relationshipZodiacInfoV1()}
              element={<RelationshipZodiacInfoPage />}
            />
            <Route
              path={routes.client.noTimeV1()}
              element={<NoBirthtimePage />}
            />
            <Route
              path={routes.client.relationshipAlmostThereV1()}
              element={<RelationshipAlmostTherePage />}
            />
            <Route
              path={routes.client.loadingInRelationshipV1()}
              element={<LoadingInRelationshipPage />}
            />
            <Route
              path={routes.client.problemsV1()}
              element={<ProblemsPage />}
            />
            <Route
              path={routes.client.worksRouterV1()}
              element={<WorksRouterPage />}
            />
            <Route
              path={routes.client.worksForUsV1()}
              element={<QuestionnaireIntermediatePage />}
            />
            <Route
              path={routes.client.worksTraitsV1()}
              element={<QuestionnaireIntermediatePage />}
            />
            <Route
              path={routes.client.notAloneV1()}
              element={<NotAlonePage />}
            />
            <Route
              path={routes.client.allRightV1()}
              element={<AllRightPage />}
            />
            <Route
              path={routes.client.almostThereV1()}
              element={<AlmostTherePage />}
            />
            <Route
              path={routes.client.partnerRightPlaceV1()}
              element={<PartnerRightPlacePage />}
            />
            <Route
              path={routes.client.partnerThingV1()}
              element={<PartnerThingPage />}
            />
            <Route
              path={routes.client.partnerTotallyNormalV1()}
              element={<PartnerTotallyNormalPage />}
            />
            <Route
              path={routes.client.withHeartV1()}
              element={<WithHeartPage />}
            />
            <Route
              path={routes.client.withHeadV1()}
              element={<WithHeadPage />}
            />
            <Route path={routes.client.bothV1()} element={<BothPage />} />
            <Route
              path={routes.client.satisfiedResultV1()}
              element={<Satisfied />}
            />
            <Route
              path={routes.client.loadingProfileV1()}
              element={<LoadingProfilePage />}
            />
            <Route
              path={routes.client.emailEnterV1()}
              element={<EmailEnterPage />}
            />
            <Route
              path={routes.client.emailConfirmV1()}
              element={<EmailConfirmPage />}
            />
            <Route
              path={routes.client.onboardingV1()}
              element={<OnboardingPage />}
            />
            <Route
              path={routes.client.trialChoiceV1()}
              element={<TrialChoicePage />}
            />
            <Route
              path={routes.client.trialChoiceVideoV1()}
              element={<TrialChoiceVideoPage />}
            />
            <Route
              path={routes.client.trialPaymentV1()}
              element={<TrialPaymentPage />}
            >
              <Route path=":subPlan" element={<TrialPaymentPage />} />
            </Route>
            <Route path={routes.client.tryAppV1()} element={<TryAppPage />} />
            <Route
              path={routes.client.trialPaymentWithDiscountV1()}
              element={<TrialPaymentWithDiscount />}
            />
            <Route
              path={routes.client.additionalDiscountV1()}
              element={<AdditionalDiscount />}
            />
            <Route
              path={routes.client.mentionedInV1()}
              element={<MentionedInPage />}
            />
            <Route
              path={routes.client.findHappinessV1()}
              element={<FindHappiness />}
            />
            <Route
              path={routes.client.scanInstructionV1()}
              element={<ScanInstruction />}
            />
            <Route
              path={routes.client.scannedPhotoV1()}
              element={<ScannedPhoto />}
            />
            <Route path={routes.client.cameraV1()} element={<Camera />} />
          </Route>
          <Route element={<PrivateOutlet />}>
            <Route element={<AdditionalPurchases />}>
              <Route
                path={routes.client.addReportV1()}
                element={<AddReportPage />}
              />
              <Route
                path={routes.client.unlimitedReadingsV1()}
                element={<UnlimitedReadingsPage />}
              />
              <Route
                path={routes.client.addConsultationV1()}
                element={<AddConsultationPage />}
              />
            </Route>
          </Route>
        </Route>
      </Route>
    </Routes>
  );
}

export default ABDesignV1Routes;
