All files / List/ListItem ListItem.tsx

100% Statements 19/19
91.66% Branches 11/12
100% Functions 2/2
100% Lines 17/17

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    2x 2x 2x 2x 2x   2x 16x 16x 16x 16x 16x   16x 16x   16x                                   2x   2x   16x            
import React from "react";
import { ListItemProps, ListItemStyleProps } from "./ListItem.types";
import styled from "styled-components";
import Text from "../../Text/Text";
import { useTheme } from "../../ThemeProvider/ThemeProvider";
import { getColorPalette } from "../../../helpers/helpers";
import colorTokens from "../../../tokens/colors.json";
 
const ListItem = ({
  children,
  style,
  className,
  size = "medium",
  color = colorTokens.default.primary.main,
}: ListItemProps) => {
  const theme = useTheme().theme;
  const colorPalette = getColorPalette(theme, color);
 
  return (
    <StyledListItem
      style={style}
      className={className}
      $colorPalette={colorPalette}
      $color={color}
      $size={size}
    >
      {typeof children === "string" ? (
        <Text disableColor size={size} variant="paragraph">
          {children}
        </Text>
      ) : (
        children
      )}
    </StyledListItem>
  );
};
export default ListItem;
 
const StyledListItem = styled.li<ListItemStyleProps>`
  ${(props) => {
    return `
      font-size: ${props.$size === "large" ? "1.25rem" : props.$size === "medium" ? "1rem" : "0.875rem"};
      color: ${props.$colorPalette[props.$color].accentScale[10]};
    `;
  }}
`;