import { ShippingOption } from "@medusajs/medusa" import clsx from "clsx" import { useAdminDeleteShippingOption } from "medusa-react" import { useTranslation } from "react-i18next" import EditIcon from "../../../../../components/fundamentals/icons/edit-icon" import FastDeliveryIcon from "../../../../../components/fundamentals/icons/fast-delivery-icon" import TrashIcon from "../../../../../components/fundamentals/icons/trash-icon" import Actionables from "../../../../../components/molecules/actionables" import useNotification from "../../../../../hooks/use-notification" import useToggleState from "../../../../../hooks/use-toggle-state" import { getErrorMessage } from "../../../../../utils/error-messages" import { stringDisplayPrice } from "../../../../../utils/prices" import EditModal from "./edit-modal" type Props = { option: ShippingOption } enum ShippingOptionPriceType { FLAT_RATE = "flat_rate", CALCULATED = "calculated", } const ShippingOptionCard = ({ option }: Props) => { const { t } = useTranslation() const { state, toggle, close } = useToggleState() const { mutate } = useAdminDeleteShippingOption(option.id) const notification = useNotification() const handleDeleteOption = () => { mutate(undefined, { onSuccess: () => { notification( t("shipping-option-card-success", "Success"), t( "shipping-option-card-shipping-option-has-been-deleted", "Shipping option has been deleted" ), "success" ) }, onError: (error) => { notification( t("shipping-option-card-error", "Error"), getErrorMessage(error), "error" ) }, }) } return ( <>

{option.name}

{option.price_type === ShippingOptionPriceType.FLAT_RATE ? t("shipping-option-card-flat-rate", "Flat Rate") : t("shipping-option-card-calcualted", "Calcualted")} :{" "} {stringDisplayPrice({ amount: option.amount, currencyCode: option.region.currency_code, })}{" "} - {t("shipping-option-card-min-subtotal", "Min. subtotal:")}{" "} {stringDisplayPrice({ amount: option.requirements?.find( (r) => r.type === "min_subtotal" )?.amount, currencyCode: option.region.currency_code, })}{" "} - {t("shipping-option-card-max-subtotal", "Max. subtotal:")}{" "} {stringDisplayPrice({ amount: option.requirements?.find( (r) => r.type === "max_subtotal" )?.amount, currencyCode: option.region.currency_code, })}

{option.admin_only ? t("shipping-option-card-admin", "Admin") : t("shipping-option-card-store", "Store")}
, }, { label: t("shipping-option-card-delete", "Delete"), onClick: handleDeleteOption, icon: , variant: "danger", }, ]} />
) } export default ShippingOptionCard