@coin-voyage/paykit
Version:
Seamless crypto payments. Onboard users from any chain, any coin into your app with one click.
41 lines (40 loc) • 1.65 kB
JavaScript
import { jsx as _jsx } from "react/jsx-runtime";
import { PayOrderMode } from "@coin-voyage/shared/types";
import ChainLogos from "../assets/chains";
import Logos from "../assets/logos";
import usePayContext from "../components/contexts/pay";
import { PaymentMethod } from "../types/enums";
import { ROUTES } from "../types/routes";
function getTitle(subject, isDeposit) {
return `${isDeposit ? "Deposit" : "Pay"} ${subject}`;
}
export function useMethodOptions({ mode, onClick }) {
const { setRoute, paymentState } = usePayContext();
const { setPaymentMethod } = paymentState;
const isDeposit = mode === PayOrderMode.DEPOSIT;
const options = [
{
id: PaymentMethod.Wallet,
title: getTitle("with Wallet", isDeposit),
iconShape: "squircle",
icons: [_jsx(Logos.MetaMask, {}, "metamask"), _jsx(Logos.Rainbow, {}, "rainbow"), _jsx(Logos.Phantom, {}, "phantom")],
onClick: () => {
setPaymentMethod(PaymentMethod.Wallet);
setRoute(ROUTES.SELECT_CHAIN);
onClick();
},
},
{
id: PaymentMethod.DepositAddress,
title: getTitle("to Address", isDeposit),
iconShape: "circle",
icons: [_jsx(ChainLogos.Ethereum, {}, "ethereum"), _jsx(ChainLogos.Base, {}, "base"), _jsx(ChainLogos.Arbitrum, {}, "arbitrum")],
onClick: () => {
setPaymentMethod(PaymentMethod.DepositAddress);
setRoute(ROUTES.SELECT_PAY_TO_ADDRESS_CHAIN);
onClick();
},
},
];
return { options };
}