2025-08-08 23:26:20 +00:00
|
|
|
|
import { Box, Typography, useTheme } from "@mui/material";
|
2025-10-27 17:41:39 +00:00
|
|
|
|
import React, { FC, lazy, Suspense, useState } from "react";
|
2025-08-08 23:26:20 +00:00
|
|
|
|
import { ServiceButton } from "./buttons/ServiceButton";
|
|
|
|
|
|
import { ZapierButton } from "./buttons/ZapierButton";
|
|
|
|
|
|
import { PostbackButton } from "./buttons/PostbackButton";
|
2024-04-30 12:23:58 +00:00
|
|
|
|
import { YandexMetricaLogo } from "../mocks/YandexMetricaLogo";
|
|
|
|
|
|
import { VKPixelLogo } from "../mocks/VKPixelLogo";
|
2024-05-01 09:34:37 +00:00
|
|
|
|
import { QuizMetricType } from "@model/quizSettings";
|
2024-05-17 12:04:59 +00:00
|
|
|
|
import { AmoCRMLogo } from "../mocks/AmoCRMLogo";
|
2025-09-03 18:30:38 +00:00
|
|
|
|
import type { LeadTargetModel } from "@/api/leadtarget";
|
2024-06-04 00:08:24 +00:00
|
|
|
|
import { useCurrentQuiz } from "@/stores/quizes/hooks";
|
2024-05-21 21:29:33 +00:00
|
|
|
|
|
|
|
|
|
|
const AnalyticsModal = lazy(() =>
|
|
|
|
|
|
import("./AnalyticsModal/AnalyticsModal").then((module) => ({
|
|
|
|
|
|
default: module.AnalyticsModal,
|
2024-06-21 09:02:45 +00:00
|
|
|
|
}))
|
2024-05-21 21:29:33 +00:00
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
const AmoCRMModal = lazy(() =>
|
2024-08-05 16:07:25 +00:00
|
|
|
|
import("../IntegrationsModal/Amo").then((module) => ({
|
2024-05-21 21:29:33 +00:00
|
|
|
|
default: module.AmoCRMModal,
|
2024-06-21 09:02:45 +00:00
|
|
|
|
}))
|
2024-05-21 21:29:33 +00:00
|
|
|
|
);
|
2025-10-27 17:41:39 +00:00
|
|
|
|
const BitrixModal = lazy(() =>
|
|
|
|
|
|
import("../IntegrationsModal/Bitrix").then((module) => ({
|
|
|
|
|
|
default: module.BitrixModal,
|
|
|
|
|
|
}))
|
|
|
|
|
|
);
|
2024-04-04 13:48:45 +00:00
|
|
|
|
|
2025-08-08 23:26:20 +00:00
|
|
|
|
const ZapierModal = lazy(() =>
|
|
|
|
|
|
import("../IntegrationsModal/Zapier").then((module) => ({
|
|
|
|
|
|
default: module.ZapierModal,
|
|
|
|
|
|
}))
|
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
const PostbackModal = lazy(() =>
|
|
|
|
|
|
import("../IntegrationsModal/Postback").then((module) => ({
|
|
|
|
|
|
default: module.PostbackModal,
|
|
|
|
|
|
}))
|
|
|
|
|
|
);
|
|
|
|
|
|
|
2024-04-04 13:48:45 +00:00
|
|
|
|
type PartnersBoardProps = {
|
|
|
|
|
|
setIsModalOpen: (value: boolean) => void;
|
2024-05-01 09:34:37 +00:00
|
|
|
|
companyName: keyof typeof QuizMetricType | null;
|
|
|
|
|
|
setCompanyName: (value: keyof typeof QuizMetricType) => void;
|
2024-04-18 01:32:39 +00:00
|
|
|
|
isModalOpen: boolean;
|
2024-04-18 12:32:46 +00:00
|
|
|
|
handleCloseModal: () => void;
|
2025-09-03 18:30:38 +00:00
|
|
|
|
zapierTarget?: LeadTargetModel | null;
|
|
|
|
|
|
postbackTarget?: LeadTargetModel | null;
|
2024-04-04 13:48:45 +00:00
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
export const PartnersBoard: FC<PartnersBoardProps> = ({
|
|
|
|
|
|
setIsModalOpen,
|
2024-04-18 01:32:39 +00:00
|
|
|
|
isModalOpen,
|
|
|
|
|
|
handleCloseModal,
|
2024-04-30 12:23:58 +00:00
|
|
|
|
companyName,
|
2024-04-05 10:48:10 +00:00
|
|
|
|
setCompanyName,
|
2025-09-03 18:30:38 +00:00
|
|
|
|
zapierTarget,
|
|
|
|
|
|
postbackTarget,
|
2024-04-04 13:48:45 +00:00
|
|
|
|
}) => {
|
|
|
|
|
|
const theme = useTheme();
|
2024-06-04 00:08:24 +00:00
|
|
|
|
const quiz = useCurrentQuiz();
|
|
|
|
|
|
|
2025-10-27 17:41:39 +00:00
|
|
|
|
const [isAmoCrmModalOpen, setIsAmoCrmModalOpen] = useState<boolean>(false);
|
|
|
|
|
|
const handleCloseAmoSRMModal = () => setIsAmoCrmModalOpen(false);
|
|
|
|
|
|
const [isBitrixModalOpen, setIsBitrixModalOpen] = useState<boolean>(false);
|
|
|
|
|
|
const handleCloseBirixModal = () => setIsBitrixModalOpen(false);
|
|
|
|
|
|
|
|
|
|
|
|
const [isZapierModalOpen, setIsZapierModalOpen] = useState<boolean>(false);
|
|
|
|
|
|
const handleCloseZapierModal = () => setIsZapierModalOpen(false);
|
|
|
|
|
|
const [isPostbackModalOpen, setIsPostbackModalOpen] = useState<boolean>(false);
|
|
|
|
|
|
const handleClosePostbackModal = () => setIsPostbackModalOpen(false);
|
|
|
|
|
|
|
2025-08-08 23:26:20 +00:00
|
|
|
|
const sectionTitleStyles = {
|
|
|
|
|
|
textAlign: { xs: "start", sm: "start", md: "start" } as const,
|
|
|
|
|
|
lineHeight: "1",
|
|
|
|
|
|
marginBottom: "12px",
|
|
|
|
|
|
marginTop: "20px",
|
|
|
|
|
|
color: theme.palette.grey3.main,
|
|
|
|
|
|
fontSize: "18px",
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
const containerStyles = {
|
|
|
|
|
|
display: "flex",
|
|
|
|
|
|
flexWrap: "wrap",
|
|
|
|
|
|
justifyContent: { xs: "start", sm: "start", md: "start" },
|
|
|
|
|
|
gap: { xs: "15px", md: "20px" },
|
|
|
|
|
|
};
|
2024-07-13 20:51:53 +00:00
|
|
|
|
|
2024-04-04 13:48:45 +00:00
|
|
|
|
return (
|
|
|
|
|
|
<Box
|
|
|
|
|
|
sx={{
|
|
|
|
|
|
width: "100%",
|
|
|
|
|
|
display: "flex",
|
|
|
|
|
|
flexDirection: "column",
|
|
|
|
|
|
justifyContent: { xs: "center", sm: "center", md: "start" },
|
|
|
|
|
|
}}
|
|
|
|
|
|
>
|
2024-04-30 12:23:58 +00:00
|
|
|
|
<Box>
|
|
|
|
|
|
<Typography
|
|
|
|
|
|
variant="h6"
|
|
|
|
|
|
sx={{
|
2025-08-08 23:26:20 +00:00
|
|
|
|
...sectionTitleStyles,
|
|
|
|
|
|
marginTop: 0,
|
2024-04-30 12:23:58 +00:00
|
|
|
|
}}
|
|
|
|
|
|
>
|
2025-08-08 23:26:20 +00:00
|
|
|
|
CRM
|
|
|
|
|
|
</Typography>
|
|
|
|
|
|
<Box sx={containerStyles}>
|
|
|
|
|
|
<ServiceButton
|
|
|
|
|
|
logo={<AmoCRMLogo />}
|
|
|
|
|
|
setIsModalOpen={setIsAmoCrmModalOpen}
|
|
|
|
|
|
setCompanyName={setCompanyName}
|
|
|
|
|
|
name={"amoCRM"}
|
|
|
|
|
|
/>
|
2025-10-27 17:41:39 +00:00
|
|
|
|
<ServiceButton
|
|
|
|
|
|
logo={"Bitrix"}
|
|
|
|
|
|
setIsModalOpen={setIsBitrixModalOpen}
|
|
|
|
|
|
setCompanyName={setCompanyName}
|
|
|
|
|
|
name={"Bitrix"}
|
|
|
|
|
|
/>
|
2025-08-08 23:26:20 +00:00
|
|
|
|
</Box>
|
|
|
|
|
|
|
|
|
|
|
|
<Typography variant="h6" sx={sectionTitleStyles}>
|
2024-04-30 12:23:58 +00:00
|
|
|
|
Аналитика
|
|
|
|
|
|
</Typography>
|
2025-08-08 23:26:20 +00:00
|
|
|
|
<Box sx={containerStyles}>
|
2024-04-30 12:23:58 +00:00
|
|
|
|
<ServiceButton
|
|
|
|
|
|
logo={<YandexMetricaLogo />}
|
|
|
|
|
|
setIsModalOpen={setIsModalOpen}
|
|
|
|
|
|
name={"yandex"}
|
|
|
|
|
|
setCompanyName={setCompanyName}
|
|
|
|
|
|
/>
|
|
|
|
|
|
<ServiceButton
|
|
|
|
|
|
logo={<VKPixelLogo />}
|
|
|
|
|
|
title={"VK Пиксель"}
|
|
|
|
|
|
name={"vk"}
|
|
|
|
|
|
setIsModalOpen={setIsModalOpen}
|
|
|
|
|
|
setCompanyName={setCompanyName}
|
2025-08-08 23:26:20 +00:00
|
|
|
|
/>
|
|
|
|
|
|
</Box>
|
|
|
|
|
|
|
2025-12-02 21:28:36 +00:00
|
|
|
|
<Typography variant="h6" sx={sectionTitleStyles}>
|
2025-08-08 23:26:20 +00:00
|
|
|
|
Автоматизация
|
|
|
|
|
|
</Typography>
|
|
|
|
|
|
<Box sx={containerStyles}>
|
|
|
|
|
|
<ZapierButton
|
|
|
|
|
|
setIsModalOpen={setIsZapierModalOpen}
|
|
|
|
|
|
setCompanyName={setCompanyName}
|
|
|
|
|
|
/>
|
|
|
|
|
|
<PostbackButton
|
|
|
|
|
|
setIsModalOpen={setIsPostbackModalOpen}
|
|
|
|
|
|
setCompanyName={setCompanyName}
|
|
|
|
|
|
/>
|
2025-12-02 21:28:36 +00:00
|
|
|
|
</Box>
|
2024-04-30 12:23:58 +00:00
|
|
|
|
</Box>
|
2025-08-08 23:26:20 +00:00
|
|
|
|
|
2024-05-01 09:34:37 +00:00
|
|
|
|
{companyName && (
|
2024-05-21 21:29:33 +00:00
|
|
|
|
<Suspense>
|
|
|
|
|
|
<AnalyticsModal
|
|
|
|
|
|
isModalOpen={isModalOpen}
|
|
|
|
|
|
handleCloseModal={handleCloseModal}
|
|
|
|
|
|
companyName={companyName}
|
|
|
|
|
|
/>
|
|
|
|
|
|
</Suspense>
|
2024-05-01 09:34:37 +00:00
|
|
|
|
)}
|
2024-06-18 23:28:53 +00:00
|
|
|
|
{companyName && isAmoCrmModalOpen && (
|
2024-05-21 21:29:33 +00:00
|
|
|
|
<Suspense>
|
|
|
|
|
|
<AmoCRMModal
|
|
|
|
|
|
isModalOpen={isAmoCrmModalOpen}
|
|
|
|
|
|
handleCloseModal={handleCloseAmoSRMModal}
|
|
|
|
|
|
companyName={companyName}
|
2025-08-08 23:26:20 +00:00
|
|
|
|
quiz={quiz!}
|
|
|
|
|
|
/>
|
|
|
|
|
|
</Suspense>
|
|
|
|
|
|
)}
|
2025-10-27 17:41:39 +00:00
|
|
|
|
{companyName && isBitrixModalOpen && (
|
|
|
|
|
|
<Suspense>
|
|
|
|
|
|
<BitrixModal
|
|
|
|
|
|
isModalOpen={isBitrixModalOpen}
|
|
|
|
|
|
handleCloseModal={handleCloseBirixModal}
|
|
|
|
|
|
companyName={companyName}
|
|
|
|
|
|
quiz={quiz!}
|
|
|
|
|
|
/>
|
|
|
|
|
|
</Suspense>
|
|
|
|
|
|
)}
|
2025-08-08 23:26:20 +00:00
|
|
|
|
{companyName && isZapierModalOpen && (
|
|
|
|
|
|
<Suspense>
|
|
|
|
|
|
<ZapierModal
|
|
|
|
|
|
isModalOpen={isZapierModalOpen}
|
|
|
|
|
|
handleCloseModal={handleCloseZapierModal}
|
|
|
|
|
|
companyName={companyName}
|
|
|
|
|
|
quiz={quiz!}
|
2025-09-03 18:30:38 +00:00
|
|
|
|
currentTarget={zapierTarget ?? null}
|
2025-08-08 23:26:20 +00:00
|
|
|
|
/>
|
|
|
|
|
|
</Suspense>
|
|
|
|
|
|
)}
|
|
|
|
|
|
{companyName && isPostbackModalOpen && (
|
|
|
|
|
|
<Suspense>
|
|
|
|
|
|
<PostbackModal
|
|
|
|
|
|
isModalOpen={isPostbackModalOpen}
|
|
|
|
|
|
handleCloseModal={handleClosePostbackModal}
|
|
|
|
|
|
companyName={companyName}
|
|
|
|
|
|
quiz={quiz!}
|
2025-09-03 18:30:38 +00:00
|
|
|
|
currentTarget={postbackTarget ?? null}
|
2024-05-21 21:29:33 +00:00
|
|
|
|
/>
|
|
|
|
|
|
</Suspense>
|
2024-05-17 12:04:59 +00:00
|
|
|
|
)}
|
2024-04-04 13:48:45 +00:00
|
|
|
|
</Box>
|
|
|
|
|
|
);
|
|
|
|
|
|
};
|