UNPKG

@shopify/polaris

Version:

Shopify’s admin product component library

83 lines (80 loc) 3.26 kB
import React, { useContext } from 'react'; import { classNames } from '../../utilities/css.js'; import { WithinContentContext } from '../../utilities/within-content-context.js'; import styles from './EmptyState.scss.js'; import { Image } from '../Image/Image.js'; import { buttonFrom } from '../Button/utils.js'; import { TextContainer } from '../TextContainer/TextContainer.js'; import { Stack } from '../Stack/Stack.js'; import { DisplayText } from '../DisplayText/DisplayText.js'; function EmptyState({ children, heading, image, largeImage, imageContained, fullWidth = false, action, secondaryAction, footerContent }) { const withinContentContainer = useContext(WithinContentContext); const className = classNames(styles.EmptyState, fullWidth && styles.fullWidth, imageContained && styles.imageContained, withinContentContainer && styles.withinContentContainer); const imageMarkup = largeImage ? /*#__PURE__*/React.createElement(Image, { alt: "", role: "presentation", className: styles.Image, source: largeImage, sourceSet: [{ source: image, descriptor: '568w' }, { source: largeImage, descriptor: '1136w' }], sizes: "(max-width: 568px) 60vw" }) : /*#__PURE__*/React.createElement(Image, { role: "presentation", alt: "", className: styles.Image, source: image }); const secondaryActionMarkup = secondaryAction ? buttonFrom(secondaryAction, {}) : null; const footerContentMarkup = footerContent ? /*#__PURE__*/React.createElement("div", { className: styles.FooterContent }, /*#__PURE__*/React.createElement(TextContainer, null, footerContent)) : null; const headingSize = withinContentContainer ? 'small' : 'medium'; const primaryActionMarkup = action ? buttonFrom(action, { primary: true, size: 'medium' }) : null; const headingMarkup = heading ? /*#__PURE__*/React.createElement(DisplayText, { size: headingSize }, heading) : null; const childrenMarkup = children ? /*#__PURE__*/React.createElement("div", { className: styles.Content }, children) : null; const textContentMarkup = headingMarkup || children ? /*#__PURE__*/React.createElement(TextContainer, null, headingMarkup, childrenMarkup) : null; const actionsMarkup = primaryActionMarkup || secondaryActionMarkup ? /*#__PURE__*/React.createElement("div", { className: styles.Actions }, /*#__PURE__*/React.createElement(Stack, { alignment: "center", distribution: "center", spacing: "tight" }, primaryActionMarkup, secondaryActionMarkup)) : null; const detailsMarkup = textContentMarkup || actionsMarkup || footerContentMarkup ? /*#__PURE__*/React.createElement("div", { className: styles.DetailsContainer }, /*#__PURE__*/React.createElement("div", { className: styles.Details }, textContentMarkup, actionsMarkup, footerContentMarkup)) : /*#__PURE__*/React.createElement("div", { className: styles.DetailsContainer }); return /*#__PURE__*/React.createElement("div", { className: className }, /*#__PURE__*/React.createElement("div", { className: styles.Section }, detailsMarkup, /*#__PURE__*/React.createElement("div", { className: styles.ImageContainer }, imageMarkup))); } export { EmptyState };