UNPKG

@massds/mayflower-react

Version:

React versions of Mayflower design system UI components

101 lines (80 loc) 4.04 kB
"use strict"; exports.__esModule = true; exports["default"] = void 0; var _react = _interopRequireDefault(require("react")); var _propTypes = _interopRequireDefault(require("prop-types")); var _classnames = _interopRequireDefault(require("classnames")); var _IconFacebook = _interopRequireDefault(require("../Icon/IconFacebook.js")); var _IconTwitter = _interopRequireDefault(require("../Icon/IconTwitter.js")); var _IconLinkedin = _interopRequireDefault(require("../Icon/IconLinkedin.js")); var _IconYoutube = _interopRequireDefault(require("../Icon/IconYoutube.js")); var _IconInstagram = _interopRequireDefault(require("../Icon/IconInstagram.js")); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } var SocialLinks = function SocialLinks(socialLinks) { var _classNames; var linkClasses = (0, _classnames["default"])((_classNames = { 'ma__social-links__link': true }, _classNames["ma__social-links__link--" + socialLinks.theme + "--inverted"] = socialLinks.theme && socialLinks.inverted, _classNames["ma__social-links__link--" + socialLinks.theme] = socialLinks.theme && !socialLinks.inverted, _classNames)); return /*#__PURE__*/_react["default"].createElement("section", { className: "ma__social-links" }, socialLinks.label && /*#__PURE__*/_react["default"].createElement("span", { className: "ma__social-links__label" }, socialLinks.label), /*#__PURE__*/_react["default"].createElement("ul", { className: "ma__social-links__items" }, socialLinks.items.map(function (socialLink, i) { return ( /*#__PURE__*/ /* eslint-disable-next-line react/no-array-index-key */ _react["default"].createElement(SocialLink, _extends({}, socialLink, { linkClasses: linkClasses, key: "socialLink_" + i, index: i })) ); }))); }; var SocialLink = function SocialLink(socialLink) { var icons = { facebook: _IconFacebook["default"], twitter: _IconTwitter["default"], linkedin: _IconLinkedin["default"], youtube: _IconYoutube["default"], instagram: _IconInstagram["default"] }; var IconComponent = socialLink.linkType ? icons[socialLink.linkType] : null; return /*#__PURE__*/_react["default"].createElement("li", { className: "ma__social-links__item" }, /*#__PURE__*/_react["default"].createElement("a", { href: socialLink.href, className: socialLink.linkClasses, "data-social-share": socialLink.linkType, "aria-label": socialLink.altText }, /*#__PURE__*/_react["default"].createElement(IconComponent, null))); }; SocialLink.propTypes = process.env.NODE_ENV !== "production" ? { /** The URL for the link */ href: _propTypes["default"].string.isRequired, /** The type of social link and the icon name */ linkType: _propTypes["default"].oneOf(['facebook', 'twitter', 'linkedin', 'youtube', 'instagram']).isRequired, /** Alt text for accessibility */ altText: _propTypes["default"].string.isRequired } : {}; SocialLinks.propTypes = process.env.NODE_ENV !== "production" ? { /** The optional label for the social links */ label: _propTypes["default"].string, /** Whether the social media icons are inverted and have a background */ inverted: _propTypes["default"].bool, /** The color theme of the social media icons */ theme: _propTypes["default"].oneOf(['c-primary', 'c-primary-alt']), /** The social links to display */ items: _propTypes["default"].arrayOf(_propTypes["default"].shape(SocialLink.propTypes)).isRequired } : {}; SocialLinks.defaultProps = { label: '', theme: 'c-primary', inverted: true }; var _default = SocialLinks; exports["default"] = _default; module.exports = exports.default;