Heading.js 1.63 KiB
import React from 'react';
import PropTypes from 'prop-types';
import styled from 'styled-components';
import {
fontFamily,
fontWeight,
textAlign,
lineHeight,
letterSpacing,
} from 'styled-system';
import { base, themed } from '../Base';
const HeadingWrapper = styled('p')(
base,
fontFamily,
fontWeight,
textAlign,
lineHeight,
letterSpacing,
themed('Heading')
);
const Heading = ({ content, ...props }) => (
<HeadingWrapper {...props}>{content}</HeadingWrapper>
);
Heading.propTypes = {
content: PropTypes.oneOfType([PropTypes.string, PropTypes.element]),
as: PropTypes.oneOf(['h1', 'h2', 'h3', 'h4', 'h5', 'h6']),
fontFamily: PropTypes.oneOfType([
PropTypes.string,
PropTypes.number,
PropTypes.arrayOf(
PropTypes.oneOfType([PropTypes.string, PropTypes.number])
),
]),
fontWeight: PropTypes.oneOfType([
PropTypes.string,
PropTypes.number,
PropTypes.arrayOf(
PropTypes.oneOfType([PropTypes.string, PropTypes.number])
),
]),
textAlign: PropTypes.oneOfType([
PropTypes.string,
PropTypes.number,
PropTypes.arrayOf(
PropTypes.oneOfType([PropTypes.string, PropTypes.number])
),
]),
lineHeight: PropTypes.oneOfType([
PropTypes.string,
PropTypes.number,
PropTypes.arrayOf(
PropTypes.oneOfType([PropTypes.string, PropTypes.number])
),
]),
letterSpacing: PropTypes.oneOfType([
PropTypes.string,
PropTypes.number,
PropTypes.arrayOf(
PropTypes.oneOfType([PropTypes.string, PropTypes.number])
),
]),
...base.propTypes,
};
Heading.defaultProps = {
as: 'h2',
m: 0,
fontWeight: 700,
};
export default Heading;