@confi/conflux-react-ui-test-package
Version:
Modern and minimalist React UI library.
77 lines (69 loc) • 2.59 kB
JavaScript
import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
import _extends from "@babel/runtime/helpers/esm/extends";
import _JSXStyle from "styled-jsx/style";
import React, { useMemo } from 'react';
import withDefaults from '../utils/with-defaults';
import useTheme from '../styles/use-theme';
var defaultProps = {
type: 'default',
invert: false,
className: ''
};
var getColors = function getColors(type, palette, invert) {
var colors = {
"default": {
color: palette.foreground
},
success: {
color: palette.success
},
warning: {
color: palette.warning
},
error: {
color: palette.error
},
secondary: {
color: palette.secondary
},
dark: {
color: palette.foreground,
bgColor: palette.background
},
lite: {
color: palette.foreground,
bgColor: palette.accents_2
}
};
var hideBorder = invert || type === 'lite';
var cardStyle = _extends(_extends({}, colors[type]), {}, {
bgColor: colors[type].bgColor || palette.background,
borderColor: hideBorder ? 'transparent' : colors[type].color
});
return !invert ? cardStyle : _extends(_extends({}, cardStyle), {}, {
color: cardStyle.bgColor,
bgColor: cardStyle.color
});
};
var Tag = function Tag(_ref) {
var type = _ref.type,
children = _ref.children,
className = _ref.className,
invert = _ref.invert,
props = _objectWithoutProperties(_ref, ["type", "children", "className", "invert"]);
var theme = useTheme();
var _useMemo = useMemo(function () {
return getColors(type, theme.palette, invert);
}, [type, theme.palette, invert]),
color = _useMemo.color,
bgColor = _useMemo.bgColor,
borderColor = _useMemo.borderColor;
return /*#__PURE__*/React.createElement("span", _extends({}, props, {
className: _JSXStyle.dynamic([["559096265", [theme.layout.radius, borderColor, bgColor, color]]]) + " " + (props && props.className != null && props.className || className || "")
}), children, /*#__PURE__*/React.createElement(_JSXStyle, {
id: "559096265",
dynamic: [theme.layout.radius, borderColor, bgColor, color]
}, "span.__jsx-style-dynamic-selector{display:inline-block;line-height:0.875rem;font-size:0.875rem;height:1.75rem;border-radius:".concat(theme.layout.radius, ";border:1px solid ").concat(borderColor, ";background-color:").concat(bgColor, ";color:").concat(color, ";padding:6px;box-sizing:border-box;}")));
};
var MemoTag = React.memo(Tag);
export default withDefaults(MemoTag, defaultProps);