import { Box, Divider, Typography, useMediaQuery, useTheme, } from "@mui/material"; import CustomButton from "../../components/CustomButton"; import TariffPrivilegeSlider from "./TariffItem"; import { createAndSendTariff, useCustomTariffsStore, } from "@root/stores/customTariffs"; import { cardShadow } from "@root/utils/themes/shadow"; import { currencyFormatter } from "@root/utils/currencyFormatter"; import { Privilege, devlog, getMessageFromFetchError } from "@frontend/kitui"; import { enqueueSnackbar } from "notistack"; import { updateTariffs } from "@root/stores/tariffs"; 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() { createAndSendTariff(serviceKey) .then((result) => { devlog(result); enqueueSnackbar("Тариф создан"); updateTariffs([result]); }) .catch((error) => { const message = getMessageFromFetchError( error, "Не удалось создать тариф" ); if (message) enqueueSnackbar(message); }); } return ( {privileges.map((privilege) => ( ))} {!upMd && ( )} Чем больше пакеты, тем дешевле подписки и опции{" "} Сумма с учетом скидки {currencyFormatter.format(priceAfterDiscounts / 100)} {currencyFormatter.format(priceBeforeDiscounts / 100)} Выбрать ); }