diff --git a/src/app/[locale]/(additional-purchases)/add-consultant/loading.module.scss b/src/app/[locale]/(additional-purchases)/add-consultant/loading.module.scss
deleted file mode 100644
index 9a4e274..0000000
--- a/src/app/[locale]/(additional-purchases)/add-consultant/loading.module.scss
+++ /dev/null
@@ -1,6 +0,0 @@
-.loading {
- display: flex;
- justify-content: center;
- align-items: center;
- height: 100dvh;
-}
diff --git a/src/app/[locale]/(additional-purchases)/add-consultant/loading.tsx b/src/app/[locale]/(additional-purchases)/add-consultant/loading.tsx
deleted file mode 100644
index 0cd6c20..0000000
--- a/src/app/[locale]/(additional-purchases)/add-consultant/loading.tsx
+++ /dev/null
@@ -1,11 +0,0 @@
-import { Spinner } from "@/components/ui";
-
-import styles from "./loading.module.scss";
-
-export default function AddConsultantLoading() {
- return (
-
-
-
- );
-}
diff --git a/src/app/[locale]/(additional-purchases)/add-consultant/page.tsx b/src/app/[locale]/(additional-purchases)/add-consultant/page.tsx
deleted file mode 100644
index 91dadbc..0000000
--- a/src/app/[locale]/(additional-purchases)/add-consultant/page.tsx
+++ /dev/null
@@ -1,53 +0,0 @@
-import { Suspense } from "react";
-import { useTranslations } from "next-intl";
-
-import {
- AddConsultantButton,
- Caution,
- ConsultationTable,
- ConsultationTableSkeleton,
-} from "@/components/domains/additional-purchases";
-import { Card, Typography } from "@/components/ui";
-import {
- loadFunnelProducts,
- loadFunnelProperties,
-} from "@/entities/session/funnel/loaders";
-import { ELocalesPlacement } from "@/types";
-
-import styles from "./page.module.scss";
-
-const payload = {
- funnel: ELocalesPlacement.CompatibilityV2,
-};
-
-export default function AddConsultant() {
- const t = useTranslations("AdditionalPurchases.add-consultant");
-
- return (
- <>
-
-
- {t("title")}
-
-
- {t("exclusive_offer")}
-
- }>
-
-
-
-
-
- >
- );
-}
diff --git a/src/app/[locale]/(additional-purchases)/ap/[pageType]/layout.tsx b/src/app/[locale]/(additional-purchases)/ap/[pageType]/layout.tsx
new file mode 100644
index 0000000..8a311ed
--- /dev/null
+++ b/src/app/[locale]/(additional-purchases)/ap/[pageType]/layout.tsx
@@ -0,0 +1,36 @@
+import { redirect } from "next/navigation";
+
+import { MultiPageNavigationProvider } from "@/components/domains/additional-purchases";
+import { loadFunnelPaymentById } from "@/entities/session/funnel/loaders";
+import { ROUTES } from "@/shared/constants/client-routes";
+import { ELocalesPlacement } from "@/types";
+
+interface LayoutProps {
+ children: React.ReactNode;
+ params: Promise<{ pageType: string }>;
+}
+
+const payload = {
+ funnel: ELocalesPlacement.CompatibilityV2,
+};
+
+export default async function MultiPageLayout({
+ children,
+ params,
+}: LayoutProps) {
+ const { pageType } = await params;
+ const pages = await loadFunnelPaymentById(payload, "additionalProducts");
+
+ const allProducts = Array.isArray(pages) ? pages : pages ? [pages] : [];
+ const currentProduct = allProducts.find(page => page.type === pageType);
+
+ if (!currentProduct) {
+ return redirect(ROUTES.home());
+ }
+
+ return (
+
+ {children}
+
+ );
+}
diff --git a/src/app/[locale]/(additional-purchases)/ap/[pageType]/page.tsx b/src/app/[locale]/(additional-purchases)/ap/[pageType]/page.tsx
new file mode 100644
index 0000000..9e7d979
--- /dev/null
+++ b/src/app/[locale]/(additional-purchases)/ap/[pageType]/page.tsx
@@ -0,0 +1,26 @@
+import { redirect } from "next/navigation";
+
+import {
+ AddConsultantPage,
+ AddGuidesPage,
+} from "@/components/domains/additional-purchases";
+import { ROUTES } from "@/shared/constants/client-routes";
+
+interface AdditionalProductPageProps {
+ params: Promise<{ pageType: string }>;
+}
+
+export default async function AdditionalProductPage({
+ params,
+}: AdditionalProductPageProps) {
+ const { pageType } = await params;
+
+ switch (pageType) {
+ case "add_consultant":
+ return ;
+ case "add_guides":
+ return ;
+ default:
+ return redirect(ROUTES.home());
+ }
+}
diff --git a/src/app/[locale]/(additional-purchases)/ap/page.tsx b/src/app/[locale]/(additional-purchases)/ap/page.tsx
new file mode 100644
index 0000000..20edb35
--- /dev/null
+++ b/src/app/[locale]/(additional-purchases)/ap/page.tsx
@@ -0,0 +1,19 @@
+import { redirect } from "next/navigation";
+
+import { loadFunnelPaymentById } from "@/entities/session/funnel/loaders";
+import { ROUTES } from "@/shared/constants/client-routes";
+import { ELocalesPlacement } from "@/types";
+
+const payload = {
+ funnel: ELocalesPlacement.CompatibilityV2,
+};
+
+export default async function AdditionalPurchasesPage() {
+ const pages = await loadFunnelPaymentById(payload, "additionalProducts");
+
+ if (!pages || !Array.isArray(pages) || pages.length === 0) {
+ return redirect(ROUTES.home());
+ }
+
+ return redirect(ROUTES.additionalPurchases(pages[0].type));
+}
diff --git a/src/app/[locale]/(core)/layout.tsx b/src/app/[locale]/(core)/layout.tsx
index 2d4389c..1a066e9 100644
--- a/src/app/[locale]/(core)/layout.tsx
+++ b/src/app/[locale]/(core)/layout.tsx
@@ -1,5 +1,4 @@
-import { DrawerProvider, Header } from "@/components/layout";
-import NavigationBar from "@/components/layout/NavigationBar/NavigationBar";
+import { DrawerProvider, Header, NavigationBar } from "@/components/layout";
import styles from "./layout.module.scss";
diff --git a/src/app/[locale]/(payment)/layout.module.scss b/src/app/[locale]/(payment)/layout.module.scss
new file mode 100644
index 0000000..3577e50
--- /dev/null
+++ b/src/app/[locale]/(payment)/layout.module.scss
@@ -0,0 +1,11 @@
+.main {
+ padding: 16px;
+ padding-bottom: 120px;
+}
+
+.navBar {
+ position: sticky;
+ top: 0;
+ z-index: 7777;
+ background: var(--background);
+}
diff --git a/src/app/[locale]/(payment)/layout.tsx b/src/app/[locale]/(payment)/layout.tsx
new file mode 100644
index 0000000..f8c99ba
--- /dev/null
+++ b/src/app/[locale]/(payment)/layout.tsx
@@ -0,0 +1,16 @@
+import { DrawerProvider, Header } from "@/components/layout";
+
+import styles from "./layout.module.scss";
+
+export default function CoreLayout({
+ children,
+}: Readonly<{
+ children: React.ReactNode;
+}>) {
+ return (
+
+
+ {children}
+
+ );
+}
diff --git a/src/app/[locale]/(core)/payment/failed/page.tsx b/src/app/[locale]/(payment)/payment/failed/page.tsx
similarity index 100%
rename from src/app/[locale]/(core)/payment/failed/page.tsx
rename to src/app/[locale]/(payment)/payment/failed/page.tsx
diff --git a/src/app/[locale]/(core)/payment/route.ts b/src/app/[locale]/(payment)/payment/route.ts
similarity index 100%
rename from src/app/[locale]/(core)/payment/route.ts
rename to src/app/[locale]/(payment)/payment/route.ts
diff --git a/src/app/[locale]/(core)/payment/success/Metrics.module.scss b/src/app/[locale]/(payment)/payment/success/Metrics.module.scss
similarity index 100%
rename from src/app/[locale]/(core)/payment/success/Metrics.module.scss
rename to src/app/[locale]/(payment)/payment/success/Metrics.module.scss
diff --git a/src/app/[locale]/(core)/payment/success/Metrics.tsx b/src/app/[locale]/(payment)/payment/success/Metrics.tsx
similarity index 97%
rename from src/app/[locale]/(core)/payment/success/Metrics.tsx
rename to src/app/[locale]/(payment)/payment/success/Metrics.tsx
index e16fda8..eb12a63 100644
--- a/src/app/[locale]/(core)/payment/success/Metrics.tsx
+++ b/src/app/[locale]/(payment)/payment/success/Metrics.tsx
@@ -24,8 +24,8 @@ export default function Metrics({
const [isButtonVisible, setIsButtonVisible] = useState(false);
- const navigateToHome = () => {
- window.location.href = ROUTES.home();
+ const handleNext = () => {
+ window.location.href = ROUTES.additionalPurchases();
};
// Yandex Metrica
@@ -186,7 +186,7 @@ fbq('track', 'Purchase', { value: ${productPrice}, currency: "${currency}" });`}
))}
{isButtonVisible && (
-