UNPKG

3.25 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: ', ';\n line-height: 1.25;\n margin-top: 0;\n margin-bottom: 1em;\n letter-spacing: 0.01em;\n\n ', ' {\n font-size: ', ';\n }\n\n ', ' {\n font-size: ', ';\n\n ', ' {\n font-size: ', ';\n }\n'], ['\n font-size: ', ';\n font-family: ', ';\n font-weight: ', ';\n line-height: 1.25;\n margin-top: 0;\n margin-bottom: 1em;\n letter-spacing: 0.01em;\n\n ', ' {\n font-size: ', ';\n }\n\n ', ' {\n font-size: ', ';\n\n ', ' {\n font-size: ', ';\n }\n']);
8
9var _styledComponents = require('styled-components');
10
11var _styledComponents2 = _interopRequireDefault(_styledComponents);
12
13var _react = require('react');
14
15var _media = require('../library/media');
16
17function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
18
19function _taggedTemplateLiteral(strings, raw) { return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
20
21function _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; }
22
23/**
24 * Get the HTML element for the title, depending on the provided semantic
25 * level.
26 *
27 * @param {Integer} level
28 * @return {String}
29 */
30function getElement(level) {
31 switch (level) {
32 case 1:
33 return 'h1';
34 case 2:
35 return 'h2';
36 case 3:
37 return 'h3';
38 case 4:
39 return 'h4';
40 default:
41 return 'h1';
42 }
43}
44
45/**
46 * Title component.
47 *
48 * @param {Object} props
49 * @return {ReactElement}
50 */
51var Title = function Title(_ref) {
52 var children = _ref.children,
53 level = _ref.level,
54 other = _objectWithoutProperties(_ref, ['children', 'level']);
55
56 return (0, _react.createElement)(getElement(level), other, children);
57};
58
59Title.propTypes = {
60 size: _react.PropTypes.number,
61 level: _react.PropTypes.number,
62 children: _react.PropTypes.node
63};
64
65exports.default = (0, _styledComponents2.default)(Title)(_templateObject, function (props) {
66 if (props.size === 1) return '1.5em';
67 if (props.size === 2) return '1.125em';
68 if (props.size === 3) return '1em';
69 if (props.size === 4) return '1em';
70 return '1.5em';
71}, function (props) {
72 return props.theme.font.header;
73}, function (props) {
74 return props.size === 4 ? '300' : '400';
75}, (0, _media.mediaQuery)('medium'), function (props) {
76 if (props.size === 1) return '1.875em';
77 if (props.size === 2) return '1.5em';
78 if (props.size === 3) return '1.75em';
79 if (props.size === 4) return '1em';
80 return '1.875em';
81}, (0, _media.mediaQuery)('wide'), function (props) {
82 if (props.size === 1) return '2.5em';
83 if (props.size === 2) return '1.625em';
84 if (props.size === 3) return '1.25em';
85 if (props.size === 4) return '1em';
86 return '2.5em';
87}, (0, _media.mediaQuery)('extra-wide'), function (props) {
88 if (props.size === 1) return '3.5em';
89 if (props.size === 2) return '2em';
90 if (props.size === 3) return '1.5em';
91 if (props.size === 4) return '1.25em';
92 return '2.5em';
93});
\No newline at end of file