All files / components/buttons/Button Button.tsx

100% Statements 5/5
100% Branches 21/21
100% Functions 1/1
100% Lines 5/5

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      9x 9x   9x                                             53x                                                           9x  
/* eslint-disable no-ternary, max-lines-per-function, no-nested-ternary */
 
import { ComponentProps } from "."
import Loading from "components/Loading"
import { Wrapper } from "./styled"
 
const Button = ({
  ariaLabel,
  bold,
  className,
  disabled,
  expanded,
  iconOnly,
  icon,
  iconEnd,
  iconStart,
  label,
  loading,
  noHoverHighlight,
  onClick,
  outlined,
  padded,
  raised,
  rounded,
  secondary,
  small,
  transparent,
  type = "button"
}: ComponentProps) => (
  <Wrapper
    $bold={bold}
    $expanded={expanded}
    $hasIconEnd={Boolean(iconEnd)}
    $hasIconStart={Boolean(iconStart)}
    $iconOnly={iconOnly}
    $loading={loading}
    $noHoverHighlight={noHoverHighlight}
    $outlined={outlined}
    $padded={padded}
    $raised={raised}
    $rounded={rounded}
    $secondary={secondary}
    $small={small}
    $transparent={transparent}
    aria-disabled={disabled ? "true" : "false"}
    aria-label={ariaLabel ? ariaLabel : iconOnly ? label : undefined}
    className={className}
    disabled={disabled}
    onClick={onClick}
    type={type}
  >
    {iconOnly ? icon : null}
    {!iconOnly && iconStart ? iconStart : <span />}
    {iconOnly ? null : label}
    {!iconOnly && iconEnd ? iconEnd : <span />}
    {loading ? <Loading contrast={!outlined} /> : null}
  </Wrapper>
)
 
export default Button