UNPKG

bananas-commerce-admin

Version:

What's this, an admin for apes?

122 lines (115 loc) 3.25 kB
import { blueberryTwilightPalette } from "@mui/x-charts/colorPalettes"; export interface HumanReadablePaymentMethod { name: string; color: string; } /** * Function to get the payment method name and color based on the method string. * @param method The payment method string to match. * @param theme Optional MUI theme object for accessing palette colors. * @returns An object containing the payment method name and color. */ export function getHumanReadablePaymentMethod( method: string, { theme, disambiguateCards, }: { // eslint-disable-next-line @typescript-eslint/no-explicit-any theme?: any; disambiguateCards?: boolean; } = { disambiguateCards: true, }, ): HumanReadablePaymentMethod { const colorMode = theme?.palette?.mode ?? "light"; const paymentMethods = [ { match: /googlepay|google pay|gogglepay|google/i, name: "Google Pay", color: theme?.palette?.paymentProvider?.googlepay?.main ?? blueberryTwilightPalette(colorMode)[4] ?? "#34A853", }, { match: /applepay|apple pay|applepay|apple/i, name: "Apple Pay", color: theme?.palette?.paymentProvider?.applepay?.main ?? blueberryTwilightPalette(colorMode)[5] ?? "#A2AAAD", }, { match: /paypal/i, name: "PayPal", color: theme?.palette?.paymentProvider?.paypal?.main ?? blueberryTwilightPalette(colorMode)[3] ?? "#00457C", }, { match: /swish/i, name: "Swish", color: theme?.palette?.paymentProvider?.swish?.main ?? blueberryTwilightPalette(colorMode)[6] ?? "#FF6D00", }, { match: /klarna/i, name: "Klarna", color: theme?.palette?.paymentProvider?.klarna?.main ?? blueberryTwilightPalette(colorMode)[7] ?? "#F8A000", }, ...(disambiguateCards ? [ { match: /mastercard|mc/i, name: "Mastercard", color: theme?.palette?.paymentProvider?.mc?.main ?? blueberryTwilightPalette(colorMode)[0] ?? "#FF5F00", }, { match: /visa/i, name: "Visa", color: theme?.palette?.paymentProvider?.visa?.main ?? blueberryTwilightPalette(colorMode)[1] ?? "#1A1F71", }, { match: /american express|amex/i, name: "American Express", color: theme?.palette?.paymentProvider?.amex?.main ?? blueberryTwilightPalette(colorMode)[2] ?? "#016FD0", }, ] : [ { match: /mastercard|mc|visa|american express|amex/i, name: "Card", color: theme?.palette?.paymentProvider?.card?.main ?? blueberryTwilightPalette(colorMode)[0] ?? "#FF5F00", }, ]), ]; for (const pm of paymentMethods) { if (pm.match.test(method)) { return { name: pm.name, color: pm.color }; } } // Default if no match found return { name: method, color: blueberryTwilightPalette(colorMode)[8] ?? "grey", }; }