Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 | 1x 3x | import { Stack } from "@mui/material";
import { XIcon } from "@phosphor-icons/react";
import PanelLoadingSkeleton from "@features/Merchants/MerchantSidePanel/components/PanelLoadingSkeleton";
import GiveIconButton from "@shared/IconButton/GiveIconButton";
import {
SidePanelBodyWrapper,
SidePanelContainerWrapper,
} from "@shared/SidePanel/SidePanelAtoms";
import { SidePanelHeaderBase } from "@shared/SidePanel/components/SidePanelHeader/SidePanelHeader";
import GiveText from "@shared/Text/GiveText";
type Props = {
isLoading?: boolean;
onClose: () => void;
};
/**
* The second panel while its purchase is in flight, or when it could not be
* read — a close button is the one thing it must always offer, so the merchant
* is never stuck looking at an empty panel.
*/
const PurchasePlaceholder = ({ isLoading, onClose }: Props) => (
<SidePanelContainerWrapper data-testid="ticket-panel-purchase-placeholder">
<SidePanelHeaderBase
rightItems={
<GiveIconButton
Icon={XIcon}
variant="ghost"
size="small"
aria-label="Close"
onClick={onClose}
data-testid="ticket-panel-purchase-close"
/>
}
/>
<SidePanelBodyWrapper>
{isLoading ? (
<PanelLoadingSkeleton variant="transaction" />
) : (
<Stack padding="20px">
<GiveText variant="bodyS" color="secondary">
This purchase could not be loaded.
</GiveText>
</Stack>
)}
</SidePanelBodyWrapper>
</SidePanelContainerWrapper>
);
export default PurchasePlaceholder;
|