zepio/app/components/text.js

52 lines
1.2 KiB
JavaScript
Raw Normal View History

2018-12-10 09:06:44 -08:00
// @flow
2019-02-04 20:41:45 -08:00
/* eslint-disable max-len */
2018-12-10 09:06:44 -08:00
import React from 'react';
import styled from 'styled-components';
import type { ElementProps } from 'react';
2018-12-10 09:06:44 -08:00
import theme from '../theme';
2019-01-28 16:34:07 -08:00
export type Props = {
...ElementProps<'p'>,
2018-12-10 09:06:44 -08:00
value: string,
isBold?: boolean,
color?: string,
className?: string,
size?: string | number,
align?: string,
2018-12-10 09:06:44 -08:00
};
const Text = styled.p`
font-family: ${(props: PropsWithTheme<Props>) => props.theme.fontFamily};
font-size: ${(props: PropsWithTheme<Props>) => String(props.size)};
color: ${(props: PropsWithTheme<Props>) => props.color || props.theme.colors.text};
margin: 0;
padding: 0;
font-weight: ${(props: PropsWithTheme<Props>) => String(props.isBold ? props.theme.fontWeight.bold : props.theme.fontWeight.default)};
text-align: ${(props: PropsWithTheme<Props>) => props.align || 'left'};
`;
2018-12-10 09:06:44 -08:00
export const TextComponent = ({
value, isBold, color, className, size, align, id,
2018-12-10 09:06:44 -08:00
}: Props) => (
2018-12-15 07:10:39 -08:00
<Text
2019-01-23 11:37:35 -08:00
id={id}
2018-12-15 07:10:39 -08:00
className={className}
isBold={isBold}
color={color}
size={`${String(size)}em`}
align={align}
>
2018-12-10 09:06:44 -08:00
{value}
</Text>
);
TextComponent.defaultProps = {
className: '',
isBold: false,
color: theme.colors.text,
2018-12-21 04:13:01 -08:00
size: theme.fontSize.regular,
align: 'left',
2018-12-10 09:06:44 -08:00
};