typography.tsx 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. import React, { PureComponent } from 'react';
  2. import cls from 'classnames';
  3. import PropTypes from 'prop-types';
  4. import { cssClasses } from '@douyinfe/semi-foundation/typography/constants';
  5. import '@douyinfe/semi-foundation/typography/typography.scss';
  6. import { BaseProps } from '../_base/baseComponent';
  7. const prefixCls = cssClasses.PREFIX;
  8. interface TypographyProps extends BaseProps {
  9. component?: React.ElementType;
  10. forwardRef?: React.RefObject<any>
  11. }
  12. class Typography extends PureComponent<TypographyProps> {
  13. static defaultProps = {
  14. component: 'article',
  15. style: {},
  16. className: '',
  17. };
  18. static propTypes = {
  19. component: PropTypes.string,
  20. style: PropTypes.object,
  21. className: PropTypes.string,
  22. };
  23. render() {
  24. const { component, className, children, forwardRef, ...rest } = this.props;
  25. const Component = component;
  26. const classNames = cls(prefixCls, className);
  27. return (
  28. <Component
  29. className={classNames}
  30. ref={forwardRef}
  31. {...rest}
  32. >
  33. {children}
  34. </Component>
  35. );
  36. }
  37. }
  38. export default Typography;