@kiwicom/orbit-components
Version:
Orbit-components is a React component library which provides developers with the easiest possible way of building Kiwi.com’s products.
118 lines (106 loc) • 5.11 kB
JavaScript
import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
import * as React from "react";
import styled from "styled-components";
import defaultTheme from "../defaultTheme";
import { TYPE_OPTIONS, WEIGHT_OPTIONS, ELEMENT_OPTIONS, ALIGN_OPTIONS, SIZE_OPTIONS } from "./consts";
import getSpacingToken from "../common/getSpacingToken";
import { textAlign } from "../utils/rtl";
import { getLinkStyle, StyledTextLink } from "../TextLink";
var getTypeToken = function getTypeToken(_ref) {
var _typeTokens;
var theme = _ref.theme,
type = _ref.type;
var typeTokens = (_typeTokens = {}, _defineProperty(_typeTokens, TYPE_OPTIONS.PRIMARY, theme.orbit.colorTextPrimary), _defineProperty(_typeTokens, TYPE_OPTIONS.SECONDARY, theme.orbit.colorTextSecondary), _defineProperty(_typeTokens, TYPE_OPTIONS.INFO, theme.orbit.colorTextInfo), _defineProperty(_typeTokens, TYPE_OPTIONS.SUCCESS, theme.orbit.colorTextSuccess), _defineProperty(_typeTokens, TYPE_OPTIONS.WARNING, theme.orbit.colorTextWarning), _defineProperty(_typeTokens, TYPE_OPTIONS.CRITICAL, theme.orbit.colorTextCritical), _defineProperty(_typeTokens, TYPE_OPTIONS.WHITE, theme.orbit.colorTextWhite), _typeTokens);
return typeTokens[type];
};
var getWeightToken = function getWeightToken(_ref2) {
var _weightTokens;
var theme = _ref2.theme,
weight = _ref2.weight;
var weightTokens = (_weightTokens = {}, _defineProperty(_weightTokens, WEIGHT_OPTIONS.NORMAL, theme.orbit.fontWeightNormal), _defineProperty(_weightTokens, WEIGHT_OPTIONS.BOLD, theme.orbit.fontWeightBold), _weightTokens);
return weightTokens[weight];
};
var getSizeToken = function getSizeToken(_ref3) {
var _sizeTokens;
var theme = _ref3.theme,
size = _ref3.size;
var sizeTokens = (_sizeTokens = {}, _defineProperty(_sizeTokens, SIZE_OPTIONS.LARGE, theme.orbit.fontSizeTextLarge), _defineProperty(_sizeTokens, SIZE_OPTIONS.NORMAL, theme.orbit.fontSizeTextNormal), _defineProperty(_sizeTokens, SIZE_OPTIONS.SMALL, theme.orbit.fontSizeTextSmall), _sizeTokens);
return sizeTokens[size];
};
var getLineHeightToken = function getLineHeightToken(_ref4) {
var _lineHeightTokens;
var theme = _ref4.theme,
size = _ref4.size;
var lineHeightTokens = (_lineHeightTokens = {}, _defineProperty(_lineHeightTokens, SIZE_OPTIONS.LARGE, theme.orbit.lineHeightTextLarge), _defineProperty(_lineHeightTokens, SIZE_OPTIONS.NORMAL, theme.orbit.lineHeightTextNormal), _defineProperty(_lineHeightTokens, SIZE_OPTIONS.SMALL, theme.orbit.lineHeightTextSmall), _lineHeightTokens);
return lineHeightTokens[size];
};
export var StyledText = styled(function (_ref5) {
var TextElement = _ref5.element,
children = _ref5.children,
className = _ref5.className,
dataTest = _ref5.dataTest,
id = _ref5.id;
return /*#__PURE__*/React.createElement(TextElement, {
className: className,
"data-test": dataTest,
id: id
}, children);
}).withConfig({
displayName: "Text__StyledText",
componentId: "sc-19qtt4y-0"
})(["font-family:", ";font-size:", ";font-weight:", ";color:", ";line-height:", ";text-align:", ";text-transform:", ";font-style:", ";margin:0;margin-bottom:", ";a:not(", "){", "}"], function (_ref6) {
var theme = _ref6.theme;
return theme.orbit.fontFamily;
}, getSizeToken, getWeightToken, getTypeToken, getLineHeightToken, function (_ref7) {
var align = _ref7.align;
return textAlign(align);
}, function (_ref8) {
var uppercase = _ref8.uppercase;
return uppercase && "uppercase";
}, function (_ref9) {
var italic = _ref9.italic;
return italic && "italic";
}, getSpacingToken, StyledTextLink, function (_ref10) {
var theme = _ref10.theme,
type = _ref10.type;
return getLinkStyle({
theme: theme,
type: type
});
}); // $FlowFixMe: https://github.com/flow-typed/flow-typed/issues/3653#issuecomment-568539198
StyledText.defaultProps = {
theme: defaultTheme
};
var Text = function Text(_ref11) {
var _ref11$type = _ref11.type,
type = _ref11$type === void 0 ? TYPE_OPTIONS.PRIMARY : _ref11$type,
_ref11$size = _ref11.size,
size = _ref11$size === void 0 ? SIZE_OPTIONS.NORMAL : _ref11$size,
_ref11$weight = _ref11.weight,
weight = _ref11$weight === void 0 ? WEIGHT_OPTIONS.NORMAL : _ref11$weight,
_ref11$align = _ref11.align,
align = _ref11$align === void 0 ? ALIGN_OPTIONS.LEFT : _ref11$align,
_ref11$as = _ref11.as,
as = _ref11$as === void 0 ? ELEMENT_OPTIONS.P : _ref11$as,
_ref11$uppercase = _ref11.uppercase,
uppercase = _ref11$uppercase === void 0 ? false : _ref11$uppercase,
_ref11$italic = _ref11.italic,
italic = _ref11$italic === void 0 ? false : _ref11$italic,
dataTest = _ref11.dataTest,
spaceAfter = _ref11.spaceAfter,
children = _ref11.children,
id = _ref11.id;
return /*#__PURE__*/React.createElement(StyledText, {
id: id,
type: type,
size: size,
weight: weight,
align: align,
element: as,
uppercase: uppercase,
italic: italic,
dataTest: dataTest,
spaceAfter: spaceAfter
}, children);
};
export default Text;