src/app/components/Byline/index.styles.tsx

Summary

Maintainability
A
0 mins
Test Coverage
A
94%
import { css, Theme } from '@emotion/react';
import pixelsToRem from '../../utilities/pixelsToRem';

export default {
  bylineSection: ({ spacings, mq }: Theme) =>
    css({
      paddingInlineStart: `${spacings.FULL}rem`,
      [mq.GROUP_2_MIN_WIDTH]: { paddingInlineStart: `${spacings.DOUBLE}rem` },
      [mq.GROUP_4_MIN_WIDTH]: { paddingInlineStart: 0 },
      div: { padding: 0 },
    }),

  bylineList: () => css({ listStyle: 'none', padding: 0, margin: 0 }),

  author: ({ palette, isDarkUi }: Theme) =>
    css({
      color: isDarkUi ? palette.GREY_2 : palette.GREY_10,
      display: 'inline-block',
      verticalAlign: 'middle',
    }),

  jobRole: ({ palette, isDarkUi }: Theme) =>
    css({ color: isDarkUi ? palette.GREY_2 : palette.GREY_6 }),

  twitterText: ({ palette }: Theme) =>
    css({
      color: palette.POSTBOX,
      display: 'inline-block',
      verticalAlign: 'middle',
    }),

  authorChevron: ({ palette, isDarkUi, spacings, mq }: Theme) =>
    css({
      verticalAlign: 'middle',
      margin: `0 ${spacings.HALF}rem`,
      color: isDarkUi ? palette.GREY_2 : palette.GREY_10,
      fill: 'currentcolor',
      width: `${spacings.FULL + spacings.HALF}rem`,
      height: `${spacings.FULL + spacings.HALF}rem`,
      [mq.FORCED_COLOURS]: { fill: 'linkText' },
    }),

  twitterChevron: ({ palette, spacings, mq }: Theme) =>
    css({
      verticalAlign: 'middle',
      margin: `0 ${spacings.HALF}rem`,
      color: palette.POSTBOX,
      fill: 'currentcolor',
      width: `${spacings.FULL}rem`,
      height: `${spacings.FULL}rem`,
      [mq.FORCED_COLOURS]: { fill: 'linkText' },
    }),

  link: ({ mq }: Theme) =>
    css({
      display: 'inline-block',
      textDecoration: 'none',
      paddingInlineEnd: '2.75rem',
      '&:focus, &:hover': {
        '.byline__link-text': {
          textDecoration: 'underline',
        },
      },
      [mq.FORCED_COLOURS]: {
        '&:visited': {
          svg: {
            fill: 'VisitedText',
          },
        },
        '&:active': {
          svg: {
            fill: 'ActiveText',
          },
        },
      },
    }),

  location: () =>
    css({
      margin: '0',
      display: 'block',
      clear: 'both',
    }),

  locationText: ({ palette, isDarkUi }: Theme) =>
    css({
      color: isDarkUi ? palette.GREY_2 : palette.SHADOW,
      display: 'block',
      paddingTop: ` ${pixelsToRem(4)}rem`,
    }),

  reportingFromText: ({ palette, isDarkUi }: Theme) =>
    css({
      color: isDarkUi ? palette.GREY_2 : palette.SHADOW,
    }),

  timestampLineBreak: ({ palette, spacings }: Theme) =>
    css({
      '::before': {
        content: '""',
        borderTop: `${pixelsToRem(2)}rem solid ${palette.GREY_5}`,
        width: `${pixelsToRem(40)}rem`,
        display: 'block',
        margin: `${spacings.DOUBLE}rem 0`,
      },
    }),

  ImageWrapper: ({ palette }: Theme) =>
    css({
      display: 'inline-flex',
      alignItems: 'flex-end',
      justifyContent: 'center',
      width: `${pixelsToRem(80)}rem`,
      height: `${pixelsToRem(60)}rem`,
      backgroundColor: `${palette.GREY_7}`,
      overflow: 'visible',
    }),

  imageLtr: () =>
    css([
      {
        float: 'left',
        margin: `${pixelsToRem(25)}rem ${pixelsToRem(8)}rem ${pixelsToRem(
          16,
        )}rem 0px`,
      },
    ]),

  imageRtl: () =>
    css([
      {
        float: 'right',
        margin: `${pixelsToRem(25)}rem 0px ${pixelsToRem(16)}rem ${pixelsToRem(
          8,
        )}rem`,
      },
    ]),

  imageSrc: () =>
    css({
      width: `${pixelsToRem(80)}rem`,
      height: `${pixelsToRem(80)}rem`,
    }),

  authorLink: () =>
    css({
      paddingTop: '1.375rem',
      paddingBottom: `${pixelsToRem(4)}rem`,
      paddingInlineEnd: '2.75rem',
    }),

  twitterLink: () =>
    css({
      paddingBottom: `${pixelsToRem(22)}rem`,
      paddingTop: `${pixelsToRem(4)}rem`,
    }),
};