You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
42 lines
1.0 KiB
42 lines
1.0 KiB
3 years ago
|
import { get, createParser } from '@styled-system/core';
|
||
|
import css from '@styled-system/css';
|
||
|
export var variant = function variant(_ref) {
|
||
|
var _config;
|
||
|
|
||
|
var scale = _ref.scale,
|
||
|
_ref$prop = _ref.prop,
|
||
|
prop = _ref$prop === void 0 ? 'variant' : _ref$prop,
|
||
|
_ref$variants = _ref.variants,
|
||
|
variants = _ref$variants === void 0 ? {} : _ref$variants,
|
||
|
key = _ref.key;
|
||
|
var sx;
|
||
|
|
||
|
if (Object.keys(variants).length) {
|
||
|
sx = function sx(value, scale, props) {
|
||
|
return css(get(scale, value, null))(props.theme);
|
||
|
};
|
||
|
} else {
|
||
|
sx = function sx(value, scale) {
|
||
|
return get(scale, value, null);
|
||
|
};
|
||
|
}
|
||
|
|
||
|
sx.scale = scale || key;
|
||
|
sx.defaults = variants;
|
||
|
var config = (_config = {}, _config[prop] = sx, _config);
|
||
|
var parser = createParser(config);
|
||
|
return parser;
|
||
|
};
|
||
|
export default variant;
|
||
|
export var buttonStyle = variant({
|
||
|
key: 'buttons'
|
||
|
});
|
||
|
export var textStyle = variant({
|
||
|
key: 'textStyles',
|
||
|
prop: 'textStyle'
|
||
|
});
|
||
|
export var colorStyle = variant({
|
||
|
key: 'colorStyles',
|
||
|
prop: 'colors'
|
||
|
});
|