All files / src/Avatar styles.ts

100% Statements 4/4
83.33% Branches 5/6
100% Functions 2/2
100% Lines 3/3

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81      21x                                                               21x                                                                         21x                
import { css, cssClass } from '../styled';
import { palette, theme } from '../utils';
 
export const Avatar = styleProps => cssClass`
  width: 60px;
  height: 60px;
  overflow: hidden;
  object-fit: cover;
 
  ${styleProps.kind === 'circle' &&
    css`
      border-radius: 50%;
 
      & {
        ${theme(styleProps.themeKey, `circle.root`)(styleProps)};
      }
    `}
 
  ${styleProps.initials &&
    css`
      background-color: ${palette(styleProps.palette)(styleProps)};
      color: ${palette(`${styleProps.palette}Inverted`)(styleProps)};
      display: flex;
      justify-content: center;
      align-items: center;
    `}
 
  ${getSizeAttributes(styleProps)};
 
  & {
    ${theme(styleProps.themeKey, `css.root`)(styleProps)};
  }
`;
 
function getSizeAttributes(styleProps) {
  const sizeAttributes = {
    small: css`
      width: 40px;
      height: 40px;
 
      & {
        ${theme(styleProps.themeKey, `css.sizes.small`)(styleProps)};
      }
    `,
    default: css`
      width: 60px;
      height: 60px;
      font-size: 24px;
 
      & {
        ${theme(styleProps.themeKey, `css.sizes.default`)(styleProps)};
      }
    `,
    medium: css`
      width: 80px;
      height: 80px;
      font-size: 36px;
 
      & {
        ${theme(styleProps.themeKey, `css.sizes.medium`)(styleProps)};
      }
    `,
    large: css`
      width: 100px;
      height: 100px;
      font-size: 48px;
 
      & {
        ${theme(styleProps.themeKey, `css.sizes.large`)(styleProps)};
      }
    `
  };
  return (
    sizeAttributes[styleProps.size] ||
    css`
      width: ${styleProps.size};
      height: ${styleProps.size};
    `
  );
}