import { Box, Button, Divider, Typography, useMediaQuery, useTheme, } from "@mui/material"; import TariffPrivilegeSlider from "./TariffItem"; import { createAndSendTariff, useCustomTariffsStore, } from "@root/stores/customTariffs"; import { cardShadow } from "@root/utils/theme"; import { currencyFormatter } from "@root/utils/currencyFormatter"; import { Privilege, getMessageFromFetchError } from "@frontend/kitui"; import { enqueueSnackbar } from "notistack"; import { updateTariffs } from "@root/stores/tariffs"; import { addTariffToCart } from "@root/stores/user"; interface Props { serviceKey: string; privileges: Privilege[]; } export default function CustomTariffCard({ serviceKey, privileges }: Props) { const theme = useTheme(); const upMd = useMediaQuery(theme.breakpoints.up("md")); const summaryPriceBeforeDiscounts = useCustomTariffsStore( (state) => state.summaryPriceBeforeDiscountsMap ); const summaryPriceAfterDiscounts = useCustomTariffsStore( (state) => state.summaryPriceAfterDiscountsMap ); const priceBeforeDiscounts = summaryPriceBeforeDiscounts[serviceKey] ?? 0; const priceAfterDiscounts = summaryPriceAfterDiscounts[serviceKey] ?? 0; async function handleConfirmClick() { const [createTariffResponse, createTariffError] = await createAndSendTariff( serviceKey ); if (createTariffError) { return enqueueSnackbar(createTariffError); } if (createTariffResponse) { updateTariffs([createTariffResponse]); await addTariffToCart(createTariffResponse._id); enqueueSnackbar("Тариф добавлен в корзину"); } } return ( {privileges.map((privilege) => ( ))} {!upMd && ( )} Чем больше пакеты, тем дешевле подписки и опции{" "} Сумма с учетом скидки {currencyFormatter.format(priceAfterDiscounts / 100)} {currencyFormatter.format(priceBeforeDiscounts / 100)} ); }