UNPKG

@braineet/ui

Version:

Braineet design system

152 lines (151 loc) 7.07 kB
"use strict"; exports.__esModule = true; exports.sizes = exports.TextButton = exports.StyledButton = exports.LoadingIcon = exports.IconButton = void 0; var _styledComponents = _interopRequireWildcard(require("styled-components")); var _styledSystem = require("styled-system"); var _utils = require("../../utils"); var _box = _interopRequireDefault(require("../box")); var _icon = _interopRequireDefault(require("../icon")); var _spinner = _interopRequireDefault(require("../spinner")); var _text = _interopRequireDefault(require("../text")); var _excluded = ["boxShadow", "active", "hover", "focus"]; function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; } function _extends() { _extends = Object.assign ? Object.assign.bind() : 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); } function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; } var StyledButton = (0, _styledComponents.default)(_box.default).withConfig({ displayName: "styles__StyledButton", componentId: "sc-1pvy5pr-0" })(["padding:0;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;transition:background-color 0.3s ease,box-shadow 0.3s ease;text-decoration:none;white-space:nowrap;", " ", " ", " ", " ", ""], function (p) { return getButtonStyles(p); }, (0, _styledSystem.variant)({ prop: 'size', variants: { large: { height: (0, _utils.fluid)(48) } } }), (0, _styledSystem.variant)({ prop: '$shouldFitContainer', variants: { true: { width: '100%' } } }), function (props) { return props.disabled && !props.$isLoading && Disabled; }, function (props) { return props.$isLoading && Loading; }); exports.StyledButton = StyledButton; var getButtonStyles = function getButtonStyles(props) { var _props$theme$helpers$ = props.theme.helpers.getFills({ appearance: props.$styleType, color: props.$textColor, reverse: props.$reverseColor }), shadow = _props$theme$helpers$.boxShadow, active = _props$theme$helpers$.active, hover = _props$theme$helpers$.hover, focus = _props$theme$helpers$.focus, defaultStyles = _objectWithoutPropertiesLoose(_props$theme$helpers$, _excluded); var borderSize = { medium: 4, large: 8 }; var flexs = { right: 'row', left: 'row-reverse' }; var flex = flexs[props.$direction]; var borderRadius = borderSize[props.size]; var boxShadow = !props.$hasShadow ? null : shadow; return _extends({}, defaultStyles, { boxShadow: boxShadow, borderRadius: borderRadius, flexDirection: flex, active: active, hover: hover, focus: focus, '&[data-active-item]': hover, '&:active,&[data-active]': hover, '&:not([disabled]):hover': hover, '&:not([disabled]):focus:focus-visible': focus, '&:not([disabled]):active': active, '&:not([disabled]):active:focus:focus-visible': active }); }; var TextButton = (0, _styledComponents.default)(_text.default).withConfig({ displayName: "styles__TextButton", componentId: "sc-1pvy5pr-1" })(["margin:", ";text-overflow:ellipsis;overflow:hidden;"], function (p) { return getMargin(p); }); exports.TextButton = TextButton; var margins = { medium: { text: { default: (0, _utils.fluid)(8) + " " + (0, _utils.fluid)(16) + " " + (0, _utils.fluid)(8) + " " + (0, _utils.fluid)(16), right: (0, _utils.fluid)(8) + " " + (0, _utils.fluid)(8) + " " + (0, _utils.fluid)(8) + " " + (0, _utils.fluid)(12), left: (0, _utils.fluid)(8) + " " + (0, _utils.fluid)(12) + " " + (0, _utils.fluid)(8) + " " + (0, _utils.fluid)(8) }, icon: { default: "" + (0, _utils.fluid)(4), right: "0 " + (0, _utils.fluid)(4) + " 0 0", left: "0 0 0 " + (0, _utils.fluid)(4) } }, large: { text: { default: "0 " + (0, _utils.fluid)(24), right: "0 " + (0, _utils.fluid)(12) + " 0 " + (0, _utils.fluid)(16), left: "0 " + (0, _utils.fluid)(16) + " 0 " + (0, _utils.fluid)(12) }, icon: { default: "" + (0, _utils.fluid)(12), right: "0 " + (0, _utils.fluid)(12) + " 0 0", left: "0 0 0 " + (0, _utils.fluid)(12) } } }; var LoadingIcon = (0, _styledComponents.default)(_spinner.default).withConfig({ displayName: "styles__LoadingIcon", componentId: "sc-1pvy5pr-2" })(["margin:", ";flex-shrink:0;"], function (p) { return getMarginIcon(p); }); exports.LoadingIcon = LoadingIcon; var IconButton = (0, _styledComponents.default)(_icon.default).withConfig({ displayName: "styles__IconButton", componentId: "sc-1pvy5pr-3" })(["margin:", ";flex-shrink:0;"], function (p) { return getMarginIcon(p); }); exports.IconButton = IconButton; var Disabled = function Disabled() { return (0, _styledComponents.css)(["opacity:0.24;cursor:not-allowed;box-shadow:none;"]); }; var Loading = function Loading() { return (0, _styledComponents.css)(["pointer-events:none;> *{pointer-events:none;}"]); }; var getMargin = function getMargin(p) { var sizeVariant = p.size === 'xs' ? 'medium' : 'large'; var directionVariant = p.icon === '' || !p.icon ? 'default' : p.$direction; return margins[sizeVariant].text[directionVariant]; }; var getMarginIcon = function getMarginIcon(p) { var directionVariant = p.$hasText ? p.$direction : 'default'; return margins[p.$size].icon[directionVariant]; }; var sizes = { medium: { text: 'xs', icon: 24 }, large: { text: 'md', icon: 24 } }; exports.sizes = sizes;