bananas-commerce-admin
Version:
What's this, an admin for apes?
47 lines • 1.99 kB
JavaScript
import React, { useMemo } from "react";
import { Cancel, CheckCircle, LocalShipping, NewReleases, VolunteerActivism, } from "@mui/icons-material";
import Chip from "@mui/material/Chip";
import useTheme from "@mui/material/styles/useTheme";
const OrderStateChip = (props) => {
const theme = useTheme();
const { element: { state }, ...rest } = props;
const color = useMemo(() => {
const colorMap = {
PENDING: "default",
CANCELLED: "error",
CONFIRMED: "info",
SENT: "info",
IN_TRANSIT: "info",
READY_FOR_PICKUP: "primary",
DELIVERED: "success",
};
return colorMap[state];
}, [state, theme]);
const label = useMemo(() => {
const labelMap = {
PENDING: "NEW",
CANCELLED: "CANCELLED",
CONFIRMED: "CONFIRMED",
SENT: "SENT",
IN_TRANSIT: "IN TRANSIT",
READY_FOR_PICKUP: "READY FOR PICKUP",
DELIVERED: "DELIVERED",
};
return labelMap[state];
}, [state, theme]);
const icon = useMemo(() => {
const iconMap = {
PENDING: React.createElement(NewReleases, { fontSize: "small" }),
CANCELLED: React.createElement(Cancel, { fontSize: "small" }),
CONFIRMED: React.createElement(CheckCircle, { fontSize: "small" }),
SENT: React.createElement(LocalShipping, { fontSize: "small" }),
IN_TRANSIT: React.createElement(LocalShipping, { fontSize: "small" }),
READY_FOR_PICKUP: React.createElement(VolunteerActivism, { fontSize: "small" }),
DELIVERED: React.createElement(CheckCircle, { fontSize: "small" }),
};
return iconMap[state];
}, [state, theme]);
return (React.createElement(Chip, { ...rest, color: color, icon: icon, label: label, sx: { ...rest.sx, paddingLeft: 0.75 } }));
};
export default OrderStateChip;
//# sourceMappingURL=OrderStateChip.js.map