wix-style-react
Version:
127 lines (109 loc) • 6.14 kB
JavaScript
import _classCallCheck from "@babel/runtime/helpers/classCallCheck";
import _createClass from "@babel/runtime/helpers/createClass";
import _inherits from "@babel/runtime/helpers/inherits";
import _possibleConstructorReturn from "@babel/runtime/helpers/possibleConstructorReturn";
import _getPrototypeOf from "@babel/runtime/helpers/getPrototypeOf";
import _defineProperty from "@babel/runtime/helpers/defineProperty";
var _overline, _title, _subtitle, _content;
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
import React from 'react';
import PropTypes from 'prop-types';
import { st, classes } from './MarketingPageLayoutContent.st.css';
import { dataHooks, size } from './constants';
import Divider from '../Divider';
import Text, { SIZES as TEXT_SIZES } from '../Text';
import Heading, { APPEARANCES } from '../Heading';
import Box from '../Box';
import { isString } from '../utils/StringUtils';
var sizesMap = {
overline: (_overline = {}, _defineProperty(_overline, size.medium, TEXT_SIZES.small), _defineProperty(_overline, size.large, TEXT_SIZES.medium), _overline),
title: (_title = {}, _defineProperty(_title, size.medium, APPEARANCES.H2), _defineProperty(_title, size.large, APPEARANCES.H1), _title),
subtitle: (_subtitle = {}, _defineProperty(_subtitle, size.medium, APPEARANCES.H4), _defineProperty(_subtitle, size.large, APPEARANCES.H3), _subtitle),
content: (_content = {}, _defineProperty(_content, size.medium, TEXT_SIZES.small), _defineProperty(_content, size.large, TEXT_SIZES.medium), _content)
};
/** This component is used in the MarketingPageLayout component. It includes all the content of the page. */
var MarketingPageLayoutContent = /*#__PURE__*/function (_React$PureComponent) {
_inherits(MarketingPageLayoutContent, _React$PureComponent);
var _super = _createSuper(MarketingPageLayoutContent);
function MarketingPageLayoutContent() {
_classCallCheck(this, MarketingPageLayoutContent);
return _super.apply(this, arguments);
}
_createClass(MarketingPageLayoutContent, [{
key: "render",
value: function render() {
var _this$props = this.props,
dataHook = _this$props.dataHook,
className = _this$props.className,
size = _this$props.size,
overline = _this$props.overline,
title = _this$props.title,
subtitle = _this$props.subtitle,
content = _this$props.content,
actions = _this$props.actions;
return /*#__PURE__*/React.createElement("div", {
"data-hook": dataHook,
className: st(classes.root, className)
}, overline && /*#__PURE__*/React.createElement("div", {
"data-hook": dataHooks.overlineContainer
}, /*#__PURE__*/React.createElement(Box, {
color: "D20"
}, isString(overline) ? /*#__PURE__*/React.createElement(Text, {
dataHook: dataHooks.overline,
size: sizesMap.overline[size],
skin: "standard",
secondary: true
}, overline) : overline), /*#__PURE__*/React.createElement("div", {
className: classes.overlineDividerContainer
}, /*#__PURE__*/React.createElement(Divider, null))), title && /*#__PURE__*/React.createElement(Box, {
dataHook: dataHooks.titleContainer
}, isString(title) ? /*#__PURE__*/React.createElement(Heading, {
dataHook: dataHooks.title,
appearance: sizesMap.title[size]
}, title) : title), subtitle && /*#__PURE__*/React.createElement(Box, {
dataHook: dataHooks.subtitleContainer,
marginTop: "SP2"
}, isString(subtitle) ? /*#__PURE__*/React.createElement(Heading, {
dataHook: dataHooks.subtitle,
appearance: sizesMap.subtitle[size]
}, subtitle) : subtitle), content && /*#__PURE__*/React.createElement(Box, {
dataHook: dataHooks.contentContainer,
marginTop: "SP4",
color: "D10"
}, isString(content) ? /*#__PURE__*/React.createElement(Text, {
dataHook: dataHooks.content,
size: sizesMap.content[size],
skin: "standard"
}, content) : content), actions && /*#__PURE__*/React.createElement(Box, {
dataHook: dataHooks.actions,
marginTop: "SP7",
children: actions
}));
}
}]);
return MarketingPageLayoutContent;
}(React.PureComponent);
MarketingPageLayoutContent.displayName = 'MarketingPageLayoutContent';
MarketingPageLayoutContent.propTypes = {
/** Applies a data-hook HTML attribute that can be used in tests */
dataHook: PropTypes.string,
/** Specifies a CSS class name to be appended to the component’s root element */
className: PropTypes.string,
/** Controls the size of the marketing page layout content */
size: PropTypes.oneOf(['medium', 'large']),
/** Set overline content. Accepts text string or a custom element. */
overline: PropTypes.node,
/** Set the page layout title. Accepts text string or a custom element. */
title: PropTypes.node,
/** Set pages layout subtitle. Accepts text string or a custom element. */
subtitle: PropTypes.node,
/** Sets the main content. Accepts a text paragraph or any custom elements. */
content: PropTypes.node,
/** Adds a container for page actions. Accepts single or multiple components. Most commonly contains `<Button/>` and `<TextButton/>`. */
actions: PropTypes.node
};
MarketingPageLayoutContent.defaultProps = {
size: 'large'
};
export default MarketingPageLayoutContent;