Heading.styled.tsx 582 B

1234567891011121314151617181920212223
  1. import React, { PropsWithChildren } from 'react';
  2. import styled from 'styled-components';
  3. type HeadingLevel = 1 | 2 | 3 | 4 | 5 | 6;
  4. interface HeadingBaseProps {
  5. $level: HeadingLevel;
  6. }
  7. const HeadingBase = styled.h1<HeadingBaseProps>`
  8. ${({ theme }) => theme.heading?.base}
  9. ${({ theme, $level }) => theme.heading?.variants[$level]}
  10. `;
  11. interface HeadingProps {
  12. level?: HeadingLevel;
  13. }
  14. const Heading: React.FC<PropsWithChildren<HeadingProps>> = ({
  15. level = 1,
  16. ...rest
  17. }) => {
  18. return <HeadingBase as={`h${level}`} $level={level} {...rest} />;
  19. };
  20. export default Heading;