@music-loopy/loops
Version:
A React component library for Music Loopy Applications and websites
62 lines (61 loc) • 4.27 kB
JavaScript
;
exports.__esModule = true;
exports["default"] = void 0;
var _react = _interopRequireDefault(require("react"));
var _propTypes = _interopRequireDefault(require("prop-types"));
var _styledComponents = _interopRequireDefault(require("styled-components"));
var _Icon = _interopRequireDefault(require("../Icon"));
var _excluded = ["icons", "layout", "background", "fill"];
var _templateObject, _templateObject2;
function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (e.indexOf(n) >= 0) continue; t[n] = r[n]; } return t; }
function _taggedTemplateLiteralLoose(e, t) { return t || (t = e.slice(0)), e.raw = t, e; }
var Container = _styledComponents["default"].button(_templateObject || (_templateObject = _taggedTemplateLiteralLoose(["\n background: transparent;\n border: ", ";\n width: 4em;\n height: 4em;\n border-radius: 20px;\n display: flex;\n justify-content: center;\n align-items: center;\n cursor: pointer;\n transition: background-color 0.3s ease;\n\n svg {\n width: 36px;\n height: 36px;\n }\n\n &:hover {\n svg {\n transform: scale(1.2);\n transition: transform 0.3s ease-in-out;\n filter: drop-shadow(0 0 0.75rem rgba(255, 255, 255, 0.4));\n }\n }\n ", "\n"])), function (props) {
return props.border ? "1px solid " + props.theme.colors[props.border].color : 'none';
}, function (props) {
return props.active && "background-color: hsl(\n from " + props.theme.colors[props.containerBackground].color + " h s\n calc(l - 9)\n ) !important; \n ";
});
var IconBarContainer = _styledComponents["default"].div(_templateObject2 || (_templateObject2 = _taggedTemplateLiteralLoose(["\n display: flex;\n gap: 15px;\n flex-direction: ", ";\n align-items: center;\n justify-content: center;\n padding: ", ";\n width: 100%;\n background-color: ", ";\n border-radius: 12px;\n box-shadow: ", ";\n"])), function (props) {
return props.layout === 'vertical' ? 'column' : 'row';
}, function (props) {
return props.layout === 'vertical' ? '15px 5px' : '5px 15px';
}, function (props) {
return props.theme.colors[props.background].color;
}, function (props) {
return props.background ? '0 2px 4px rgba(0, 0, 0, 0.1)' : 'none';
});
var IconBar = function IconBar(_ref) {
var icons = _ref.icons,
_ref$layout = _ref.layout,
layout = _ref$layout === void 0 ? 'horizontal' : _ref$layout,
_ref$background = _ref.background,
background = _ref$background === void 0 ? 'dark' : _ref$background,
fill = _ref.fill,
props = _objectWithoutPropertiesLoose(_ref, _excluded);
return /*#__PURE__*/_react["default"].createElement(IconBarContainer, _extends({
layout: layout,
background: background
}, props), icons.map(function (icon) {
return /*#__PURE__*/_react["default"].createElement(Container, _extends({}, icon, {
containerBackground: background
}), /*#__PURE__*/_react["default"].createElement(_Icon["default"], {
name: icon.name,
size: icon.size || '1em',
fill: icon.fill || fill
}));
}));
};
IconBar.propTypes = process.env.NODE_ENV !== "production" ? {
icons: _propTypes["default"].arrayOf(_propTypes["default"].shape({
name: _propTypes["default"].string,
onClick: _propTypes["default"].func,
size: _propTypes["default"].string,
fill: _propTypes["default"].oneOf(['primary', 'dark', 'light', 'secondary', 'danger', 'success', 'warning'])
})).isRequired,
layout: _propTypes["default"].oneOf(['horizontal', 'vertical']),
background: _propTypes["default"].oneOf(['primary', 'dark', 'light', 'secondary', 'danger', 'success', 'warning']),
fill: _propTypes["default"].oneOf(['primary', 'dark', 'light', 'secondary', 'danger', 'success', 'warning'])
} : {};
var _default = exports["default"] = IconBar;
module.exports = exports.default;