import { Box, IconButton, Typography, useMediaQuery, useTheme } from "@mui/material"; import ArrowBackIcon from "@mui/icons-material/ArrowBack"; import CustomButton from "@components/CustomButton"; import SectionWrapper from "@components/SectionWrapper"; import ComplexNavText from "@components/ComplexNavText"; import PaymentMethodCard from "./PaymentMethodCard"; import mastercardLogo from "../../assets/bank-logo/logo-mastercard.png"; import visaLogo from "../../assets/bank-logo/logo-visa.png"; import qiwiLogo from "../../assets/bank-logo/logo-qiwi.png"; import mirLogo from "../../assets/bank-logo/logo-mir.png"; import tinkoffLogo from "../../assets/bank-logo/logo-tinkoff.png"; import { cardShadow } from "@root/utils/themes/shadow"; import { useState } from "react"; import InputTextfield from "@root/components/InputTextfield"; import { sendPayment } from "@root/api/wallet"; import { getMessageFromFetchError } from "@frontend/kitui"; import { enqueueSnackbar } from "notistack"; import { useNavigate } from "react-router-dom"; const paymentMethods = [ { name: "Mastercard", image: mastercardLogo }, { name: "Visa", image: visaLogo }, { name: "QIWI Кошелек", image: qiwiLogo }, { name: "Мир", image: mirLogo }, { name: "Тинькофф", image: tinkoffLogo }, ] as const; type PaymentMethod = typeof paymentMethods[number]["name"]; export default function Payment() { const theme = useTheme(); const upMd = useMediaQuery(theme.breakpoints.up("md")); const upSm = useMediaQuery(theme.breakpoints.up("sm")); const navigate = useNavigate(); const [selectedPaymentMethod, setSelectedPaymentMethod] = useState(null); const [paymentValueField, setPaymentValueField] = useState("0"); const [paymentLink, setPaymentLink] = useState(""); function handleChoosePaymentClick() { sendPayment().then(result => { setPaymentLink(result.link); }).catch(error => { const message = getMessageFromFetchError(error); if (message) enqueueSnackbar(message); }); } function handlePayClick() { navigate(paymentLink); } return ( {upMd && } {!upMd && ( )} Способ оплаты {!upMd && ( Выберите способ оплаты )} {paymentMethods.map(method => setSelectedPaymentMethod(method.name)} /> )} {upMd && Выберите способ оплаты} К оплате {paymentLink ? 3 190 руб. : setPaymentValueField(e.target.value)} id="payment amount" gap={upMd ? "16px" : "10px"} color={"#F2F3F7"} FormInputSx={{ mb: "28px", }} /> } Выбрать ); }