@massds/mayflower-react
Version:
React versions of Mayflower design system UI components
53 lines (47 loc) • 1.73 kB
JavaScript
/**
* SiteLogo module.
* @module @massds/mayflower-react/SiteLogo
* @requires module:@massds/mayflower-assets/scss/01-atoms/site-logo
* @requires module:@massds/mayflower-assets/scss/01-atoms/image
*/
import React from "react";
import PropTypes from "prop-types";
import Image from "../Image/index.mjs";
import getFallbackComponent from "../utilities/getFallbackComponent.mjs";
const SiteLogo = (_ref) => {
let url = _ref.url,
image = _ref.image,
siteName = _ref.siteName,
title = _ref.title,
Wrapper = _ref.Wrapper;
const RenderedWrapper = getFallbackComponent(Wrapper, React.Fragment);
return /*#__PURE__*/React.createElement(RenderedWrapper, null, /*#__PURE__*/React.createElement("div", {
className: "ma__site-logo"
}, /*#__PURE__*/React.createElement("a", {
href: url.domain,
title: title
}, (image === null || image === void 0 ? void 0 : image.src) && /*#__PURE__*/React.createElement(Image, image), siteName && /*#__PURE__*/React.createElement("span", null, siteName))));
};
SiteLogo.propTypes = process.env.NODE_ENV !== "production" ? {
/** The URL for the site */
url: PropTypes.shape({
/** The URL for the site root */
domain: PropTypes.string.isRequired
}),
/** The site logo image to display. */
image: PropTypes.shape(Image.propTypes),
/** An optional label to display next to the site logo. */
siteName: PropTypes.string,
/** The title attribute for the site logo link. */
title: PropTypes.string,
/** An uninstantiated component for rendering a wrapper around the site logo div. */
Wrapper: PropTypes.elementType
} : {};
SiteLogo.defaultProps = {
image: {
alt: '',
width: 45,
height: 45
}
};
export default SiteLogo;