UNPKG

2.1 kBJavaScriptView Raw
1'use strict';
2
3Object.defineProperty(exports, "__esModule", {
4 value: true
5});
6
7var _templateObject = _taggedTemplateLiteral(['\n font-size: ', ';\n font-family: ', ';\n font-weight: 400;\n line-height: 1.1;\n margin-top: 0;\n margin-bottom: 1em;\n'], ['\n font-size: ', ';\n font-family: ', ';\n font-weight: 400;\n line-height: 1.1;\n margin-top: 0;\n margin-bottom: 1em;\n']);
8
9var _styledComponents = require('styled-components');
10
11var _styledComponents2 = _interopRequireDefault(_styledComponents);
12
13var _react = require('react');
14
15function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
16
17function _taggedTemplateLiteral(strings, raw) { return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
18
19function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }
20
21/**
22 * Get the HTML element for the title, depending on the provided semantic
23 * level.
24 *
25 * @param {Integer} level
26 * @return {String}
27 */
28function getElement(level) {
29 switch (level) {
30 case 1:
31 return 'h1';
32 case 2:
33 return 'h2';
34 case 3:
35 return 'h3';
36 case 4:
37 return 'h4';
38 default:
39 return 'h1';
40 }
41}
42
43/**
44 * Title component.
45 *
46 * @param {Object} props
47 * @return {ReactElement}
48 */
49var Title = function Title(_ref) {
50 var children = _ref.children,
51 level = _ref.level,
52 other = _objectWithoutProperties(_ref, ['children', 'level']);
53
54 return (0, _react.createElement)(getElement(level), other, children);
55};
56
57Title.propTypes = {
58 size: _react.PropTypes.number,
59 level: _react.PropTypes.number,
60 children: _react.PropTypes.node
61};
62
63exports.default = (0, _styledComponents2.default)(Title)(_templateObject, function (props) {
64 if (props.size === 2) return '3em';
65 if (props.size === 3) return '2em';
66 if (props.size === 4) return '1.25em';
67 return '4em';
68}, function (props) {
69 return props.theme.fontHeader;
70});
\No newline at end of file