UNPKG

@roo-ui/components

Version:

52 lines (36 loc) 2.86 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _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; }; var _styledComponents = require('styled-components'); var _styledComponents2 = _interopRequireDefault(_styledComponents); var _propTypes = require('prop-types'); var _propTypes2 = _interopRequireDefault(_propTypes); var _polished = require('polished'); var _cleanTag = require('clean-tag'); var _cleanTag2 = _interopRequireDefault(_cleanTag); var _styledSystem = require('styled-system'); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var getBackground = function getBackground(props) { return (0, _styledSystem.color)(props).backgroundColor || (0, _styledSystem.buttonStyle)(props).backgroundColor; }; var Button = (0, _styledComponents2.default)(_cleanTag2.default.button).withConfig({ displayName: 'Button' })(['display:inline-block;margin:0;padding:', ' ', ';font-size:', ';font-weight:', ';letter-spacing:', ';line-height:', ';text-align:center;text-decoration:none;text-transform:uppercase;border:', ';border-color:transparent;border-radius:', ';outline:0;transition:background-color ', ';cursor:pointer;appearance:none;', ' ', ' ', ' ', ' &:hover:not(:disabled){background-color:', ';}&:focus{box-shadow:', ';}&:disabled{opacity:0.7;cursor:not-allowed;}', ' ', ''], (0, _styledSystem.themeGet)('space.3'), (0, _styledSystem.themeGet)('space.6'), (0, _styledSystem.themeGet)('fontSizes.base'), (0, _styledSystem.themeGet)('fontWeights.bold'), (0, _styledSystem.themeGet)('letterSpacings.wide'), (0, _styledSystem.themeGet)('lineHeights.normal'), (0, _styledSystem.themeGet)('borders.2'), (0, _styledSystem.themeGet)('radii.default'), (0, _styledSystem.themeGet)('transitions.default'), _styledSystem.buttonStyle, _styledSystem.space, _styledSystem.color, _styledSystem.boxShadow, function (props) { return (0, _polished.darken)(0.1, getBackground(props)); }, (0, _styledSystem.themeGet)('shadows.focus'), function (props) { return props.rounded && (0, _styledComponents.css)(['border-radius:', ';'], (0, _styledSystem.themeGet)('radii.rounded')); }, function (props) { return props.block && (0, _styledComponents.css)(['width:100%;']); }); Button.propTypes = _extends({}, _styledSystem.buttonStyle.propTypes, _styledSystem.space.propTypes, _styledSystem.color.propTypes, _styledSystem.boxShadow.propTypes, { primary: _propTypes2.default.bool, rounded: _propTypes2.default.bool, block: _propTypes2.default.bool }); Button.defaultProps = { buttonStyle: 'default', blacklist: Object.keys(Button.propTypes) }; exports.default = Button;